Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MVP + system Design 짜오기 #2

Open
ohahohah opened this issue Jul 20, 2024 · 3 comments
Open

MVP + system Design 짜오기 #2

ohahohah opened this issue Jul 20, 2024 · 3 comments
Assignees
Labels
architecture reference 공유하고 싶은 참고자료

Comments

@ohahohah
Copy link
Owner

ohahohah commented Jul 20, 2024

Due date

  • 2024.07.29

Small step

  • 프로젝트 요건 #1 (wiki)을 확인 후 MVP 정의
  • 정의된 MVP 에 맞는 System Architecture 설계도
  • wiki 기한 참조
@ohahohah
Copy link
Owner Author

ohahohah commented Jul 22, 2024

비기능 요구사항이 필요할 거 같아요. gpt 러프 버전입니다.

1. 성능(Performance)

  • 응답 시간: 모든 API 요청에 대한 평균 응답 시간은 200ms 이하, 최대 응답 시간은 500ms 이하를 유지해야 한다.
  • 처리량: 시스템은 초당 5000개의 API 요청을 처리할 수 있어야 한다.
  • 지연 시간: 데이터베이스 쿼리의 평균 지연 시간은 50ms 이하를 유지해야 한다.

2. 확장성(Scalability)

  • 수평 확장: API 서버는 트래픽 증가에 따라 새로운 인스턴스를 추가하여 수평적으로 확장 가능해야 한다.
  • 자동 확장: AWS Auto Scaling 또는 Kubernetes HPA 등을 사용하여 자동 확장이 가능해야 한다.

3. 가용성(Availability)

  • 가용성 보장: API 서버의 가용성은 99.99% 이상이어야 한다.
  • 다운타임 최소화: 시스템 업데이트나 유지보수 중에도 API 서비스의 다운타임을 1분 이하로 유지해야 한다.

4. 신뢰성(Reliability)

  • 데이터 무결성: 트랜잭션 데이터는 정확하고 일관되게 유지되어야 하며, 실패 시 롤백이 가능해야 한다.
  • 장애 복구: 장애 발생 시 1분 이내에 서비스 복구가 가능해야 한다.

5. 보안(Security)

  • 데이터 암호화: 모든 데이터는 전송 중 및 저장 중에 암호화되어야 한다 (예: HTTPS, AES-256).
  • 인증 및 권한 관리: OAuth 2.0 또는 JWT를 사용한 인증 및 권한 관리를 구현해야 한다.
  • 침입 탐지 및 방지: 실시간 침입 탐지 시스템(IDS/IPS)을 사용하여 비정상적인 접근을 탐지하고 차단해야 한다.

6. 유지보수성(Maintainability)

  • 코드 품질: 코드 리뷰와 자동화된 테스트를 통해 높은 코드 품질을 유지해야 한다.
  • 문서화: 모든 API는 Swagger 또는 OpenAPI를 사용하여 자동으로 문서화되어야 한다.
  • 모듈성: API는 모듈화된 아키텍처를 사용하여 특정 기능의 수정이나 업데이트가 용이해야 한다.

7. 모니터링 및 로깅(Monitoring and Logging)

  • 실시간 모니터링: Prometheus, Grafana 등을 사용하여 API 서버의 상태와 성능을 실시간으로 모니터링해야 한다.
  • 로그 관리: Elasticsearch, Logstash, Kibana(ELK 스택)을 사용하여 로그를 중앙 집중식으로 관리하고 분석할 수 있어야 한다.
  • 알림 시스템: 이상 상황 발생 시 즉시 알림을 받을 수 있도록 설정해야 한다 (예: PagerDuty, Slack 알림).

8. 데이터베이스 관리(Database Management)

  • 데이터 백업: 모든 데이터는 주기적으로 백업되고, 백업 데이터는 암호화된 상태로 저장되어야 한다.
  • 데이터 복구: 데이터 손실 시 백업 데이터로부터 5분 이내에 복구가 가능해야 한다.
  • 성능 최적화: 데이터베이스 인덱싱, 쿼리 최적화 등을 통해 데이터베이스 성능을 최적화해야 한다.

@ohahohah
Copy link
Owner Author

ohahohah commented Jul 22, 2024

비기능적요구사항 위해 벤치마킹 자료 찾다가 발견한 블로그 - 티켓팅 플랫폼인 ticketmaster service 로 system design interview를 많이 하는군요. https://www.hellointerview.com/learn/system-design/answer-keys/ticketmaster

전 event flow 정의부분이 흥미로웠어요.
실제 플랫폼 규모로 디자인은 힘들겠지만 메트릭 감을 잡기 위해서 tech blog post나 tech conference 자료 같은 거 찾고 싶은디...

@ohahohah
Copy link
Owner Author

7/29 까지 작업하기 wiki 기한 참조

@ohahohah ohahohah added the reference 공유하고 싶은 참고자료 label Jul 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
architecture reference 공유하고 싶은 참고자료
Projects
None yet
Development

No branches or pull requests

1 participant