1. 12일에 이은 요구사항 분석
[기능 요구사항] 요구사항 분석
- 개인 사용자와 대회 주최자는 로그인 기능을 통해 토큰을 발급 받을 수 있습니다.
- 로그인할 때 관리자임을 지정
- db에서 확인
- 일반 유저가 관리자의 역할을 수행하려고 할 때 권한 없음 표시
- 토큰을 사용하는 로직은 구현하기로 함
- JWT로 시도하기로 함
- 인증된 개인 사용자는 자신의 비공식 기록을 입력 및 조회할 수 있습니다.
-비공식 기록 입력, 조회는 유저 데이터베이스에 넣기 정함
,
- 인증된 개인 사용자는 특정 대회에 참가 신청을 할 수 있습니다.
- 대회 기록 데이터베이스에 저장
- 대회 생성 페이지 기능이 필요
- 대회 정보 :
[1] type 10km, half, full 고정
[2] 대회명
[3] 참여가능 인원 : 참여 가능 인원 도달하면 더 이상 신청 안됨
[4] 진행 날짜 : 중복 안되게 진행 날짜로 구분
- 대회 주최자는 대회 참가자를 조회할 수 있습니다.
- 대회 데이터베이스에 저장된 참가 신청 조회
- 대회 주최자는 대회 참가자들에 대한 공식 기록을 입력 및 조회할 수 있습니다.
주최자가 가지고 있는 권한으로 입력 및 조회 가능
- 대회 주최자에 의해 입력된 공식 기록에 따라 해당 참가자의 point 데이터에 점수가 추가됩니다.
설정 :미완주 0점 10km 완주는 10점, half 완주는 20점, full 완주는 42점 추가
- 개인 사용자는 점수를 확인할 수 있습니다.
설정 : 개인 사용자의 total 점수 확인
[인프라 요구사항]
- 시스템 전반에 가용성, 내결함성, 확장성, 보안성이 고려된 서비스들이 포함되어야 합니다.
EC2, Lambda, ECR, ECS, http 통신, 보안그룹 규칙
- 하나 이상의 컴퓨팅 유닛에 대한 CI/CD 파이프라인이 구성되어야합니다.
코드파이프라인으로 정함
- 유저 데이터를 저장하고 있는 유저 데이터베이스는 다른 데이터베이스와 분리되어있어야 합니다.
유저 데이터 베이스 : AWS RDS,
대회 기록 데이터 베이스 : mongodb (데이터량 많아진다, 상대적 비용 저렴, 읽고 쓰기가 빠르다.)
- 기록 데이터를 기반으로 사용자별 점수를 기록하는 시스템은 데이터 유실을 막기 위해 느슨하게 결합되어야 합니다.
주최가가 완주 기록 입력 -> SNS -> SQS -> Lambda -> DB 순으로 진행될 것으로 생각
- 시스템 메트릭 또는 저장된 데이터에 대한 하나 이상의 시각화된 모니터링 시스템이 구축되어야합니다.
참가 신청날에 트래픽이 몰릴 것으로 생각해, 인스턴스 cpu 모니터링을 프로메테우스 툴 사용해 모니터링, 일정 임계점 도달 시 경고알람 설정
2. 우리팀은 특이하게 기능 요구분석을 하면서 이벤트 스토밍으로 기능별로 어떤 이벤트 발생하는지에 대해 먼저 의논을 하고 만들게 되었다
3. 14일 오전에 준비한 요구사항 분석과 event storming 한 것을 바탕으로 CTO와 미팅
기본에 충실했고 준비할것 대부분 잘했다고 해주셔서 안도의 한숨을 내쉬었다. 하지만 실제로 구현을 하려고하니 막막한 느낌이 들었다.
- 피드백 부분
- 대회 생성 테이블만 생성하고, 대회 정보는 데이터베이스에 넣어 놓고 사용
- 토큰을 aws cognito도 고려해보기로함
- 시점(데이터 언제 넘길지), ex) 자정 12시에 넘기는 방법
- 파이프라인 (AWS 코드파이프라인) 대회기록 관리 서버쪽
- 대회 기록 데이터 베이스 다이나모 db 사용