데브허브 | DEVHUB | Say Goodbye to Microservices, Say Hello to Self-Contained Systems by Simon Martinelli @ Spring I/OSay Goodbye to Microservices, Say Hello to Self-Contained Systems by Simon Martinelli @ Spring I/O
- 소프트웨어 아키텍처는 메인프레임에서 J2EE, 그리고 넷플릭스의 마이크로서비스 시대로 진화했습니다. 🚀
- '모놀리스'는 본질적으로 나쁜 것이 아니라, '빅 볼 오브 머드(Big Ball of Mud)'와 혼동되어 오해받는 경우가 많습니다. 🧱
- 애플리케이션 개발에서 가장 중요한 것은 '모듈성'이며, 잘 캡슐화된 모듈로 나누는 것이 핵심입니다. 🧩
- '마이크로서비스'라는 이름 자체가 오해를 불러일으켜, 너무 작은 '나노 서비스'를 만들고 서비스 수가 과도해지는 문제를 야기했습니다. 🐜
- 마이크로서비스로 분할하는 주된 이유는 '팀 규모'이며, 작은 팀이 더 빠른 개발 속도를 낼 수 있습니다. 🧑🤝🧑
- 분산 시스템에서 '분산된 빅 볼 오브 머드'는 런타임에만 드러나 디버깅과 관리가 훨씬 어렵습니다. 🕸️
- 마이크로서비스 간의 순환 의존성(예: 고객-주문 서비스)은 피해야 할 아키텍처 문제입니다. 🔄
- Simon Brown은 모듈형 모놀리스를 만들 수 없다면 마이크로서비스를 시도하지 말라고 조언했습니다. 💡
- Martin Fowler는 '분산 객체 설계의 법칙은 분산하지 않는 것'이라며 네트워크의 불안정성과 지연 문제를 경고했습니다. 🚫
- 분산 환경에서 N+1 SELECT 문제는 데이터베이스보다 클라이언트 측에서 발생할 때 더 심각한 성능 저하를 초래할 수 있습니다. ➕
- '모놀리식 프론트엔드'와 여러 마이크로서비스가 동일한 데이터베이스 모델을 공유하는 '통합 데이터베이스'는 마이크로서비스의 안티패턴으로 지적됩니다. 📉
- 마이크로 프론트엔드가 모놀리식 프론트엔드의 대안으로 떠오르지만, 아직 표준이 부족하며 포틀릿이 자카르타 EE에서 다시 주목받고 있습니다. 🌐