ERP - 마이크로서비스 시스템
Spring Boot + Kafka + gRPC + WebSocket
팀/역할
기간
기술 스택
프로젝트 소개
ERP는 DDD(Domain-Driven Design) 기반 5개 독립 마이크로서비스로 구성된 전자결재 시스템입니다. Employee, Approval Request, Approval Processing, Notification, Web 서비스를 도메인 경계 기준으로 분리하고, REST/gRPC/Kafka/WebSocket 4가지 통신 프로토콜을 통합했습니다. 총 9개 Docker 컨테이너를 단일 docker-compose up 명령으로 오케스트레이션하며, 결재 요청부터 실시간 알림까지 end-to-end 파이프라인을 구축했습니다.
내 역할 및 기여도
마이크로서비스 아키텍처 설계, 5개 서비스 구현 (REST, gRPC, Kafka, WebSocket), 데이터베이스 설계 (MySQL, MongoDB), Docker Compose 배포 환경 구축
핵심 기능
마이크로서비스 아키텍처
DDD 기반 5개 독립 서비스 — Employee(8081), Approval Request(8082), Approval Processing(8083/gRPC 9091), Notification(8080), Web(8000)
gRPC 서버-클라이언트 통신
서비스 간 고성능 RPC 통신
Kafka 비동기 메시징
결재 상태 변경 이벤트를 Kafka로 전파
WebSocket 실시간 알림
결재 완료/반려 시 실시간 알림 전송
프로젝트 갤러리
기술적 도전과 해결
DDD 기반 5개 마이크로서비스 설계 & 구현
문제
1인 프로젝트로 마이크로서비스 아키텍처를 설계하고 서비스 분리, 독립 배포, 비동기 메시징 등 분산 시스템 전반을 구현해야 함
해결
DDD 기반 도메인 경계로 5개 서비스 독립 설계, 서비스별 최적 DB 선택 (MySQL: 정형 데이터, MongoDB: 알림 로그), Docker Compose로 9개 컨테이너 오케스트레이션
결과
5개 마이크로서비스 + 총 9개 Docker 컨테이너 단일 명령 배포, 결재 요청 → 승인 처리 → 실시간 알림까지 end-to-end 파이프라인 구축
4가지 통신 프로토콜 통합
문제
REST, gRPC, Kafka, WebSocket을 하나의 시스템에 용도별로 통합해야 함
해결
동기 통신(gRPC)은 결재 처리에, 비동기 메시징(Kafka)은 이벤트 전파에, 실시간 통신(WebSocket + STOMP/SockJS)은 사용자 알림에 적재적소 배치
결과
4가지 통신 프로토콜 단일 시스템 통합, gRPC 타입 안전한 동기 통신 + Kafka 3단계 비동기 이벤트 파이프라인 + WebSocket 실시간 푸시 알림