프로젝트 진행 상황을 팀원들과 github에 있는 project기능을 사용해서 칸반보드 방식을 이용해서 시각화하여 진행하였다.
우리가 선택한 시나리오는 다음과 같다.
회사는 개인 사용자와 대회 주최자를 위한 마라톤 대회 결과 기록 시스템을 구축하려고 합니다.
여러분은 회사 내 데브옵스 팀의 일원으로 인프라를 구축하고, 테스트 시스템을 구성해서 인프라 작동을 확인해야합니다.
가장 먼저 MSA방식의 도메인주도 설계를 하기위해서 이벤트 스토밍을 시작하였다.
이벤트 스토밍을 진행하던중 다음과같은 논의사항이 발생했다.
팀원들과의 상의를 통해서 해당 요구사항이 원하는 목적을 추측하여 더 나은 방식을 선택 할 수 있었다.
ERD 작성 과정에서는 User의 ROLE을 boolean값으로 해서 당장 필요한 권한만 구별하느냐 integer값으로 변경해서 role에 대한 확장성을 대비해두느냐로 의견을 나누었다.
또한, 해당 테이블들을 어떤 도메인으로 묶느냐에 대해서 얘기를 나누어서 위와 같은 설계방식이 MSA이론에 더 일치한다는 생각으로 위와같이 구성했다.
기술 스택을 논의하는 과정에서 RDBMS와 NoSQL중 어떤게 적합한지에 대한 부분이 가장 주요한 요소였다.
NoSQL을 선택했는데 이유는 다음과 같다.
- 시스템은 참가자 기록을 기반으로 포인트를 계산하고 업데이트해야 합니다. 이 요구 사항은 RDBMS 또는 NoSQL 데이터베이스에서 처리할 수 있습니다. 그러나 포인트 계산 논리가 자주 변경되거나 향후 더 복잡해질 것으로 예상되는 경우 NoSQL 데이터베이스의 유연성이 도움이 될 수 있습니다.
- 가용성, 내결함성 및 확장성: RDBMS 및 NoSQL 데이터베이스 모두 이러한 요구 사항에 대한 솔루션을 제공할 수 있습니다. 그러나 특정 데이터베이스 제품 및 해당 구성에 따라 일부 NoSQL 데이터베이스는 특히 분산 환경에서 확장성과 내결함성을 더 잘 지원할 수 있습니다.