kjp0411 님의 블로그

내일배움캠프 단기심화 Java - 본 캠프 Day 49 본문

TIL

내일배움캠프 단기심화 Java - 본 캠프 Day 49

kjp0411 2026. 4. 22. 21:36

TIL - 2026.04.22

오늘 한 일

  • MSA 기반 티켓팅 시스템 프로젝트 구조 설계
  • 서비스별 레포 분리 진행 (user, reservation, seat, queue, match, club 등)
  • gateway-service, eureka-server 별도 레포 생성
  • 인프라 전용 레포(ticketing-system) 역할 정의
  • GitHub 이슈 및 PR 템플릿 설정 (.github 레포)

오늘 배운 점

1. 멀티모듈 vs MSA의 본질적인 차이

이전 프로젝트는 하나의 레포 안에서 여러 서비스를 관리하는 멀티모듈 구조였다.
하지만 이번 프로젝트는 서비스별로 레포를 분리한 MSA 구조로 진행된다.

  • 멀티모듈: 하나의 프로젝트 안에서 여러 서비스 관리
  • MSA: 서비스 자체가 독립적인 프로젝트

단순 코드 분리가 아니라 배포/운영 단위가 분리된 것

 

2. 인프라 서비스와 비즈니스 서비스의 차이

서비스는 크게 두 가지로 나뉜다.

  • 비즈니스 서비스: user, reservation, seat 등
  • 인프라 서비스: gateway, eureka

gateway는 “입구”, eureka는 “서비스 위치 관리”

 

3. 프로젝트 구조 설계의 중요성

루트 폴더를 ticketing으로 잡고, 그 안에 각 서비스를 배치하는 구조로 설계했다.

ticketing  
├─ eureka-server  
├─ gateway-service  
├─ user-service  
├─ reservation-service  
├─ seat-service  
├─ queue-service  
├─ match-service  
├─ club-service  
├─ common-module  
└─ ticketing-system (infra)

 

4. 실행 흐름 이해

프로젝트 구조 설계의 중요성

MSA에서의 실행 순서는 다음과 같다.

eureka → service → gateway → docker-compose


eureka가 먼저 떠야 서비스들이 서로 연결된다

 

5. 현재 단계에 대한 이해

지금은 기능 개발 단계가 아니라

“서비스들을 연결하는 단계”

  • CRUD 구현 X
  • 구조 연결 O

느낀 점

이번에 MSA 구조를 직접 설계하면서
단순히 코드를 작성하는 것보다 구조를 잡는 것이 훨씬 중요하다는 걸 느꼈다.

특히 gateway, eureka, docker-compose 같은 인프라 요소들이
전체 시스템의 동작을 좌우한다는 점이 인상적이었다.

지금은 기능을 만드는 것보다 “시스템이 실제로 돌아가게 만드는 것”에 집중해야 한다.

 

내일 할 것

  1. eureka-server clone 및 실행
  2. user-service eureka 연결
  3. gateway-service 라우팅 연결
  4. docker-compose 기반 전체 실행 구성

목표: MSA 최소 동작 환경 완성