Polyglot Architecture의 등장
과거 모놀리식 아키텍처에서는 하나의 시스템이 하나의 언어로 개발되는 경우가 많았다.
예를 들어 다음과 같은 구조였다.
→ 모든 서비스
→ 모든 API
→ 모든 비즈니스 로직
이 방식은 운영과 관리가 단순하다는 장점이 있었다.
하지만 시스템이 커지면서 문제가 생겼다.
- 모든 서비스가 같은 기술 스택에 묶인다
- 특정 도메인에 맞지 않는 언어를 사용하게 된다
- 기술 선택의 유연성이 떨어진다
이 문제를 해결하기 위해 등장한 개념이 Microservice Architecture(MSA) 이다.
MSA에서는 서비스가 독립적으로 배포되고 운영되기 때문에
서비스마다 다른 언어를 사용하는 것이 가능하다.
이를 Polyglot Architecture라고 부른다.
1. 도메인별로 요구되는 기술이 다르다
현대 시스템은 하나의 유형의 작업만 수행하지 않는다.
보통 다음과 같은 서로 다른 성격의 작업이 동시에 존재한다.
- CRUD API
- 데이터 처리
- AI 모델 추론
- 검색 서비스
- 배치 처리
- 이벤트 처리
각 작업은 요구되는 특성이 다르다.
예를 들어 다음과 같이 나눌 수 있다.
| CRUD 서비스 | DB 중심, I/O bound |
| 데이터 처리 | 연산 중심, CPU bound |
| AI 서비스 | 모델/라이브러리 중심 |
| 검색 서비스 | 대량 데이터 조회 |
이 때문에 하나의 언어로 모든 문제를 해결하려 하면
비효율이 발생하기 쉽다.
2. Node.js – I/O 중심 서비스에 강하다
Node.js는 이벤트 루프 기반의 비동기 처리 모델을 사용한다.
이 구조는 다음과 같은 서비스에 잘 맞는다.
- API Gateway
- BFF (Backend for Frontend)
- CRUD 서비스
- 외부 API orchestration
이런 서비스는 대부분 다음 패턴을 따른다.
→ DB 조회
→ 응답 반환
CPU 연산보다 DB나 외부 시스템 응답을 기다리는 시간이 대부분이다.
이런 I/O bound 서비스에서는 Node.js가 높은 동시성을 처리하기 쉽다.
또한 React, TypeScript와 같은 프론트엔드 생태계와
언어를 공유할 수 있다는 장점도 있다.
그래서 많은 MSA 시스템에서 다음 영역에 Node.js가 사용된다.
- API Gateway
- 인증 서비스
- CRUD API
3. Python – AI와 데이터 처리에 강하다
Python은 AI와 데이터 분야에서 사실상 표준 언어다.
그 이유는 생태계에 있다.
대표적인 라이브러리만 봐도 다음과 같다.
- PyTorch
- TensorFlow
- NumPy
- Pandas
- scikit-learn
- LangChain
이 때문에 다음과 같은 서비스는 Python으로 구현되는 경우가 많다.
- AI 모델 추론 서비스
- 추천 시스템
- 데이터 분석
- 벡터 검색 처리
예를 들어 AI 기반 검색 시스템이라면 다음 구조가 가능하다.
AI 추론 → Python
즉 Python은 AI 도메인에 특화된 서비스에 사용된다.
4. Java – 안정적인 엔터프라이즈 서비스
Java는 오랫동안 엔터프라이즈 시스템의 핵심 언어였다.
특히 다음 영역에서 강점을 가진다.
- 복잡한 비즈니스 로직
- 강한 트랜잭션 처리
- 대규모 데이터 처리
- 안정적인 운영 환경
Spring Boot 생태계는 다음과 같은 기능을 제공한다.
- 보안
- 트랜잭션 관리
- 배치 처리
- 데이터 접근
- 모니터링
그래서 다음과 같은 서비스는 여전히 Java가 많이 사용된다.
- 결제 시스템
- 정산 시스템
- 금융 서비스
- 대규모 엔터프라이즈 API
즉 Java는 비즈니스 로직 중심 서비스에 강하다.
5. MSA가 언어 혼용을 가능하게 만든 이유
MSA에서는 서비스들이 보통 다음 방식으로 통신한다.
gRPC
Message Queue
Event Bus
이 방식들은 모두 언어 독립적인 프로토콜이다.
즉 서비스가 Java로 작성되었든
Python으로 작성되었든
Node.js로 작성되었든 상관없다.
예를 들어 다음 구조가 가능하다.
Auth Service → Node.js
Order Service → Java
AI Service → Python
Gateway는 단순히 요청을 라우팅할 뿐이므로
뒷단 서비스의 언어는 중요하지 않다.
이것이 MSA에서 Polyglot Architecture가 가능한 이유다.
6. 실제 현대 서비스 아키텍처
요즘 많은 시스템은 다음과 같은 구조를 가진다.
React / TypeScript
Gateway
Node.js
Backend Services
Node.js / Java
AI Services
Python
Infra
PostgreSQL
Redis
OpenSearch
Vector DB
이 구조에서는 각 서비스가
자신의 도메인에 가장 적합한 언어를 사용한다.
정리
MSA 시대에 Node, Python, Java가 함께 사용되는 이유는 단순하다.
각 언어가 잘하는 영역이 다르기 때문이다.
| Node.js | I/O 중심 API 서비스 |
| Python | AI 및 데이터 처리 |
| Java | 복잡한 비즈니스 로직 |
MSA는 서비스 간 통신을 프로토콜 기반으로 분리했기 때문에
이러한 Polyglot Architecture를 가능하게 만들었다.
결국 중요한 것은 언어 통일이 아니라 도메인에 맞는 기술 선택이다.
좋은 아키텍처는 특정 기술을 고집하는 것이 아니라
문제에 맞는 도구를 선택하는 것에서 시작한다.
'Architecture' 카테고리의 다른 글
| MSA에서 이벤트 드리븐 아키텍처를 언제 도입해야 할까 (0) | 2026.03.12 |
|---|---|
| 왜 MSA에서는 기술 통일보다 서비스 경계가 더 중요할까 (0) | 2026.03.12 |
| CPU Bound vs I/O Bound 도메인 (0) | 2026.03.12 |
| 불량률, 수율, 표준 준수율로 보는 개발 품질 관리 (0) | 2026.03.12 |
| 헥사고날 아키텍처(Hexagonal Architecture)란 무엇인가? (0) | 2026.02.23 |
