본문 바로가기

회고록

[회고]Final Project Day2

요구사항 구체화

  • 첫번째는, 요구사항의 목적을 확인하는 일입니다.
  • 두번째는, 요구사항을 구체화하는 일입니다.
  • 세번째는, 커다란 요구사항을 잘게 쪼개는 일입니다.

오늘은 요구사항의 목적을 확인하고자 한다. 우리팀이 선택한 시나리오의 요구사항은 다음과 같다.

  • 소비자가 예약을 진행할 때, 예약 정보를 RDS에 저장하고, 이후 드라이버가 이를 인지할 수 있도록 해당 메시지를 알림 서버에 전달해야 합니다.
  • 데이터 내구성을 보장하기 위해 RDS는 복제본이 만들어져야 하며, 빠른 예약 정보 검색을 위해 쿼리결과는 ElastiCache를 통해 캐싱이 되어야 합니다.
  • 예약 내역이 담긴 메시지 누적은 Elasticsearch를 통해 제공됩니다.

데이터에 대한 고민

우리 팀은 데이터가 어떻게 생겼고, 어떤 정보를 RDS에 저장해야할지 고민한 끝에, ERD를 작성하여 데이터의 스키마를 구체화하고자 했다. 그래야 소비자의 예약 정보가 어떻게 저장되고, 어떤 데이터를 바탕으로 소비자가 예약을 확정할지 결정할 수 있다고 생각했다.

<사진>

상황에 대한 잘못된 이해

우리 팀은 DevOps 팀으로 CI/CD 파이프라인 구성과 DB의 내구성과 가용성을 높일 수 있는 방법, 캐시 서버를 두어 빠른 소비자 경험을 만들 수 있는 방법을 고민하는 팀이다. 그러나 처음 과제를 받았을때, 백엔드 개발팀에서 해야할 과정인 DB 스키마를 짜고 있었다. CTO님과 기술면담을 통해 "데이터의 구조에 대한 고민과 어떠한 데이터가 오는지에 대한 구체적인 내용은 개발팀에서 진행할 것이고, 우리 팀이 꼭 달성해야하는 것은 아니다."를 알았다.


요구사항 구체화

주어진 요구사항을 명확하게 구체화하고 모든 팀원들이 동일하게 이해할 수 있도록 회의를 진행하였다.

  • 소비자의 예약 정보는 RDS에 저장되어야 하므로 가용성과 확장성을 고려하여 AWS EC2의 Autoscaling 기능을 이용하여 인스턴스를 구성한다.(예약 정보 서버)
  • 예약 정보 서버로부터 드라이버에게 "예약 완료" 메시지를 받아 AWS SQS에 전송한다. 그리고 가용성과 확장성을 고려하여 AWS EC2 인스턴스를 구성하여 AWS SQS로부터 메시지를 받아 드라이버에게 메시지를 전송하는 인스턴스를 구성한다.(예약 알림 서버)
  • 데이터 내구성을 높이기 위해 AWS RDS를 사용하여 Multi AZ에 DB 레플리카를 구성한다.
  • 자주 검색되는 데이터의 경우 ElastiCache에 따로 저장하여 검색 속도를 빠르게 함으로써 사용자 경험을 높인다.
  • 예약 완료, 예약 취소와 같은 로그들은 ElasticSearch에 저장하여 후에 총 예약 개수, 취소된 예약 개수 등 쿼리를 보내 데이터를 쉽게 가져올 수 있게 한다.

좋았던 점

모두가 다 이해하기 위해 자리배치를 바꾸고, 화이트 보드를 활용하여 누구나 자유롭게 의견을 낼 수 있도록 회의를 진행하였다. 따라서 수평적 관계에서 여러가지 의견이 나올 수 있었다.

아쉬웠던 점

과제가 요구하는 본질을 잘 파악하지 못했고, 정작 우리가 중점으로 배웠던 것들을 활용 못했다.

'회고록' 카테고리의 다른 글

[회고]Final Project Day5  (0) 2022.05.25
[회고]Final Project Day4  (0) 2022.05.23
[회고]Final Project Day3  (0) 2022.05.20
[회고]세번째 project를 진행하고  (0) 2022.05.08
[프로젝트 회고]WAS로 투표 서비스 만들기!  (1) 2022.03.09