모놀리스 vs 마이크로서비스
모놀리스
- 전체적인 앱이 단일 프로세스로 동작
- 더 적은 기술과 설계 방법이 필요
- 새로운 앱을 만들때 좋은 시작점. 마이크로서비스 앱에 필요한 기술적 투자를 하기 전 빠르게 비즈니스 검증
- 비스니스와 서비스가 확장될수록 유지 보수가 어려워짐
마이크로서비스
- 앱의 주요 기능들을 수행하기 위해서 협업하는 작은 서비스로 구성된 일종의 분산 프로그램
- 각각의 서비스는 실제로 분리된 서버에 위치. 서비스를 종합적으로 관리할 수 있는
오케스트레이션 플랫폼이 거의 필수
- 각각의 서비스별로 유연하고 다양한 환경에 적합하게 구성할 수 있음
마이크로서비스의 장점
- 다른 환경에 격리된 서비스들을 다른 서비스에 영향을 주지 않으면서 유지보수, 확장이 가능함
마이크로서비스의 단점
- 초기 세팅하는 데 상대적으로 많은 기술 습득과 노하우가 필요
- 하지만 최근 많은 도구들이 발전하면서 비용이 낮아지는 추세
프로젝트 아키텍쳐
- 모놀리식 => 마이크로서비스 전환
- docker-compose를 활용하여 로컬 개발 환경에서 마이크로서비스 세팅
- TCP를 활용한 동기 통신
- Kafka를 활용한 비동기 통신