1월, 2024의 게시물 표시

토이 프로젝트 일지 9: 음악 스트리밍 마이크로 서비스 만들기

이미지
그림 1. 이벤트 스토밍 설계도 그림 2. 프론트엔드 페이지들 1. 시작 계기 플랫폼 비즈니스 교육에서 수행되는 1차 팀 경진대회에서 조장을 맡아서 구현하게 된 서비스다. 이 경진대회에서 1등으로 대상을 받게 되었다. 2. 프로젝트 개요 가. 프로젝트 소개 1. 프로젝트 유형: 팀 토이 프로젝트(총 8명) 2. 구현 서비스: 음악 스트리밍 서비스 3. 개발 환경: VS Code, Msaez 4. 활용기술     프론트앤드: React, MUI     백엔드:   Spring-Boot, JPA, MySQL     구조설계: MSA(E vent Driven Architecture) , CQRS,  SAGA,  Kafka, JWT     빌드 및 배포: EKS     협업: Slack, Trello, GitWiki 5. 개발 기간: 2024.01.16 ~ 2024.01.30 6. 담당 역할: 팀장(일정 관리, 작업 분배, 코드 평가 및 통합 작업, 프론트엔드, PPT 작성, 발표) 3. 프로젝트 구현 가. 팀 협업 및 역할 분담 그림 3. 팀 협업의 핵심요소 이 팀 프로젝트에서 제일 고민을 많이 했던 부분은 팀장을 포함해서 총 8명이나 되는 팀을 도대체 어떻게 해야 잘 운영할 수 있는지에 대한 문제였다. 거기에다 팀원들은 서로 시간이 맞지 않아서 오프라인으로 만나기도 힘들었기에 이 문제는 더욱 풀기 힘든 문제였었다. 하루 종일 이에 대해서 고민을 해본 결과, '요즘 우아한 개발'이라는 책을 참조해서 팀 협업을 위해서는 위의 4가지의 핵심 요소를 기반으로 설계해야 한다는 결론이 이르렀다. 그림 4. Trello로 활용한 '명확한 업무 분담 및 추적' 이렇게 팀원이 많을수록 개개인의 책임이 옅어져서 참여도가 떨어지게 될 것으로 생각해서 개개인에게 명확하게 업무를 분담시키고, 개개인의 업무를 철저하게 관리하는 것이 중요하다고 생각했다. 이를 위해서 에자일의 ...

토이 프로젝트 일지 8: 실시간 그룹 채팅 마이크로 서비스 만들기

이미지
  그림 1. 이벤트 스토밍 설계도 그림 2. 프론트엔드 페이지들 1. 시작 계기 플랫폼 비즈니스 교육에서 수행되는 개인 PBL(Project Based Learning)에 제출하기 위해서 구현한 서비스다. 마이크로 서비스상에서 통합된 사용자 인증을 위해서 게이트웨이를 통한 JWT 단일 인증 엔드 포인트 구현, 사용자 포인트에서 동기적인 서비스 제공을 유지하기 위해서 웹 소켓을 활용해 보는 것을 중점으로 두었다. 해당 기술들을 활용하는 데 있어서 그룹 채팅 서비스를 구현해 보는 것이 가장 적합해 보여서 해당 서비스를 채택하였다. 2. 프로젝트 개요 가. 프로젝트 소개 1. 프로젝트 유형: 개인 토이 프로젝트 2. 구현 서비스: 그룹 채팅 서비스 3. 개발 환경: VS Code, Msaez 4. 활용기술     프론트앤드: React, MUI     백엔드 A(User, Room, Message, File, Gateway) :  Spring-Boot, JPA, MySQL     백엔드 B(ExternalSystem): Flask     구조설계: MSA(E vent Driven Architecture) , CQRS,  SAGA,  Kafka, WebSocket, JWT     외부서비스: AWS S3     빌드 및 배포: EKS 5. 개발 기간: 2023.12.31 ~ 2024.01.09 3. 프로젝트 구현 가. 요구사항 분석 그림 3. 요구사항 분석 나. 이벤트 스토밍 설계 나-1. 주요 Bounded Context 그림 4. 이벤트 스토밍 Bounded Context(BC) 총 6개의 BC가 존재하며, 각각의 주요 기능 및 역할을 다음과 같다. user: 회원가입 및 RSA 기반 JWT 토큰 발급을 관리한다. file: 프로필 및 메세지에 사용되는 이미지 파일 메타정보를 관리한다. externalSystem: AWS ...