성장기록/개인프로젝트

기존 개인 프로젝트 개선 계획

BW_tree 2024. 7. 31. 01:23

기존 프로젝트 문제점

  1. 요구사항 정의 미흡
    1. 구체적인 예약 대상 도메인 미지정
    2. 세부 예약 프로세스 미정의
    3. 제공할 서비스의 구체적 범위 미설정
  2. 데이터베이스 구조 및 데이터 관련 문제
    1. 실데이터 부재로 인한 기능 검증 불가
    2. MSA 환경에 부적합한 단일 MySQL 인스턴스 사용
  3. 마이크로서비스 아키텍처(MSA) 구현 미흡
    1. 서비스 간 독립성 부족
    2. API 게이트웨이를 비롯한 서비스가 Eureka 환경 내에서 돌지 않음
    3. 실질적인 MSA 통신 구조 미구현(단일 DB)
  4. 개별 서비스 구현 상의 문제
    1. User 서비스
      - 인증 서비스의 구체적 기능 부족
    2. Newsfeed 서비스
      - 실제 데이터 부재로 인한 기능 검증 불가
    3. Product 서비스
      - 동시성 처리에 대한 구체적 구현 및 검증 부족
    4. Order 서비스
      - 실제 결제 시스템 연동 부재
      - 테스트 데이터 부족으로 인한 기능 검증 불가
  5. 테스트 코드 부재
    1. 단위 테스트 미구현
    2. 통합 테스트 미구현
    3. 성능 테스트 미실시
  6. 인프라 환경 없음
    1. 실제 클라우드 환경 미구축
    2. 쿠버네티스 환경 미구성
    3. CI/CD 파이프라인 부재
  7. 프론트엔드 영역 부재
    1. 사용자 인터페이스 미구현
    2. 프론트엔드와 백엔드 통합 검증 불가
  8. 추가 개선 필요 사항
    1. 서비스 디스커버리(Eureka) 미구현
    2. 메시징 시스템(Kafka) 도입 필요
    3. 올바른 DB 분리 및 분산 트랜잭션 처리

리팩토링 진행 예정(WBS 약 15일)

  1. 요구사항 정의 및 도메인 선택(1일)
    • 구체적인 도메인 선택
    • 핵심 기능 및 사용자 스토리 정의
    • 시스템 아키텍처 및 데이터 흐름 다이어그램 작성
  2. 데이터베이스 구조 개선(2일)
  3. 마이크로 서비스 아키텍처 개선(3일)
    • eureka를 이용한 서비스 디스커버리 구현
    • Kafka를 통한 이벤트 기반 통신 구현
    • API Gateway 최적화
    • 각 서비스의 독립성 강화
  4. 서비스별 기능 구현 및 개선(4일)
    • User 서비스 인증/인가 로직 강화, 소셜 로그인 추가
    • Newsfeed 서비스 실시간 업데이트 기능 추가
    • 주문 서비스: 동시성 제어 로직 구현 및 테스트
    • 구매 서비스 : 결제 시스템 연동(가상의 결제 게이트웨이)
  5. 테스트 코드 작성(2일)
    • 단위테스트, 통합 테스트 작성
    • 성능테스트 시나리오 구현
  6. 인프라 배포 환경 구축(2일)
    • Docker 컨테이너화 완료
    • Kubernetes 클러스터 설정
    • CI/CD 파이프라인 구축(Jenkins)
  7. 문서화 및 마무리(1일)
    • README 파일 업데이트
    • API 문서화(Swagger)
    • 시스템 아키텍처 및 기술 스택 문서화
  8. 기타
    • 보안: SSL/TLS 적용
    • 모니터링: Prometheus, Grafana를 이용한 시스템 모니터링 구축
    • 로깅: ELK 스택을 이용한 중앙 집중식 로깅 시스템 구축

9/2 방향 수정

각각의 서비스의 범위가 너무 넓어지는 느낌이라 고민 끝에 이 넓이를 줄이고, 예약 도메인에 초점을 맞추도록 변경 중.

  1. Service-Discovery 추가. 서비스 로드밸런싱 및 관리에 용이하기 때문. 장애 전파 및 시계열 데이터 저장하는 기능도 가능.
  2. User service(유저 관리)에서는 기존 인증의 권한만 담당하고, 인가는 gateway에서 하도록 변경필요.(현재 인증까지는 완료)
  3. Order service(예약구매 관리)에서 예약 관련 기능이 메인이므로 관련된 로직을 deep하게 추가 예정.
  4. Product service(상품 관리)에서 재고관리 처리를 위한 고민 필요. kafka등
  5. Newsfeed, Activity service가 이 서비스 전체에 있어 필요한 기능일까? 더 고민해보고 삭제할 예정.