마이크로서비스는 애플리케이션을 작고 독립적으로 배포 가능한 서비스들로 분할하며, 각각 특정 도메인을 소유하고 네트워크를 통해 통신합니다. Node의 경량적이고 빠른 시작 특성이 잘 맞지만, 이 아키텍처는 계획해야 할 분산 시스템 복잡성을 도입합니다.
모놀리스 vs 마이크로서비스
text
Monolith: one codebase/deployment — simple to build, harder to scale teams
Microservices: many small services — independent deploy/scale, but distributed complexity
마이크로서비스는 프로세스 내 단순성을 운영 유연성과 맞바꿉니다. 독립적인 확장/배포가 진정으로 필요하거나 여러 팀이 있을 때만 가치가 있습니다.
서비스 간 통신
text
Synchronous: REST / gRPC — direct request/response (simple, but tight coupling + cascading failures)
Asynchronous: message queues (RabbitMQ, Kafka) — events, decoupled, resilient
