팀 프로젝트 Day1

문한성·2023년 6월 12일
0

부트캠프

목록 보기
105/123

프로젝트 진행 상황을 팀원들과 github에 있는 project기능을 사용해서 칸반보드 방식을 이용해서 시각화하여 진행하였다.

우리가 선택한 시나리오는 다음과 같다.

시나리오 1: 대회 결과 기록 시스템

회사는 개인 사용자와 대회 주최자를 위한 마라톤 대회 결과 기록 시스템을 구축하려고 합니다.
여러분은 회사 내 데브옵스 팀의 일원으로 인프라를 구축하고, 테스트 시스템을 구성해서 인프라 작동을 확인해야합니다.

기능 요구사항

  • 개인 사용자와 대회주최자는 로그인 기능을 통해 토큰을 발급받을 수 있습니다.
    • 토큰을 사용하는 로직 구현이 어렵다면 유저 데이터베이스에 접근해서 일치하는 사용자 정보가 있는 것을 확인하는 것으로 대체
  • 인증된 개인 사용자는 자신의 비공식 기록을 입력 및 조회할 수 있습니다.
  • 인증된 개인 사용자는 특정 대회에 참가 신청을 할 수 있습니다.
  • 대회 주최자는 대회 참가자를 조회할 수 있습니다.
  • 대회 주최자는 대회 참가자들에 대한 공식 기록을 입력 및 조회할 수 있습니다.
  • 대회 주최자에 의해 입력된 공식 기록에 따라 해당 참가자의 point 데이터에 점수가 추가됩니다.
    • 예시 : 10km 참가자는 10점, half 참가자는 20점, full 참가자는 42점 추가
  • 개인 사용자는 점수를 확인할 수 있습니다.
    • 예시 : 전체 점수 또는 상위 몇개의 랭킹, 인증된 개인의 개별 점수

인프라 요구사항

  • 시스템 전반에 가용성, 내결함성, 확장성, 보안성이 고려된 서비스들이 포함되어야 합니다.
  • 하나 이상의 컴퓨팅 유닛에 대한 CI/CD 파이프라인이 구성되어야합니다.
  • 유저 데이터를 저장하고 있는 유저 데이터베이스는 다른 데이터베이스와 분리되어있어야 합니다.
  • 기록 데이터를 기반으로 사용자별 점수를 기록하는 시스템은 데이터 유실을 막기 위해 느슨하게 결합되어야합니다.
  • 시스템 메트릭 또는 저장된 데이터에 대한 하나 이상의 시각화된 모니터링 시스템이 구축되어야합니다.

이벤트 스토밍

가장 먼저 MSA방식의 도메인주도 설계를 하기위해서 이벤트 스토밍을 시작하였다.


이벤트 스토밍을 진행하던중 다음과같은 논의사항이 발생했다.

팀원들과의 상의를 통해서 해당 요구사항이 원하는 목적을 추측하여 더 나은 방식을 선택 할 수 있었다.

ERD 작성


ERD 작성 과정에서는 User의 ROLE을 boolean값으로 해서 당장 필요한 권한만 구별하느냐 integer값으로 변경해서 role에 대한 확장성을 대비해두느냐로 의견을 나누었다.

또한, 해당 테이블들을 어떤 도메인으로 묶느냐에 대해서 얘기를 나누어서 위와 같은 설계방식이 MSA이론에 더 일치한다는 생각으로 위와같이 구성했다.

개발환경과 기술 스택 논의

기술 스택을 논의하는 과정에서 RDBMS와 NoSQL중 어떤게 적합한지에 대한 부분이 가장 주요한 요소였다.

NoSQL을 선택했는데 이유는 다음과 같다.

  • 시스템은 참가자 기록을 기반으로 포인트를 계산하고 업데이트해야 합니다. 이 요구 사항은 RDBMS 또는 NoSQL 데이터베이스에서 처리할 수 있습니다. 그러나 포인트 계산 논리가 자주 변경되거나 향후 더 복잡해질 것으로 예상되는 경우 NoSQL 데이터베이스의 유연성이 도움이 될 수 있습니다.
  • 가용성, 내결함성 및 확장성: RDBMS 및 NoSQL 데이터베이스 모두 이러한 요구 사항에 대한 솔루션을 제공할 수 있습니다. 그러나 특정 데이터베이스 제품 및 해당 구성에 따라 일부 NoSQL 데이터베이스는 특히 분산 환경에서 확장성과 내결함성을 더 잘 지원할 수 있습니다.
profile
기록하고 공유하려고 노력하는 DevOps 엔지니어

0개의 댓글