아키텍처와 프로그래밍 언어 선택의 기준
시스템 아키텍처를 설계할 때 많은 팀이 다음 질문을 먼저 한다.
- 어떤 언어를 쓸 것인가
- 어떤 프레임워크를 쓸 것인가
- MSA로 나눌 것인가
하지만 실제로 더 중요한 질문은 이것이다.
“이 도메인은 CPU 중심인가, I/O 중심인가?”
도메인의 특성을 이해하지 못한 채 기술을 선택하면
과도한 아키텍처나 비효율적인 시스템이 만들어지기 쉽다.
1. CPU Bound 도메인
CPU Bound 작업은 연산 자체가 시스템 자원을 많이 사용하는 작업이다.
예를 들면 다음과 같다.
- AI 모델 추론 및 학습
- 이미지/영상 처리
- 대규모 데이터 분석
- 암호화/해시 계산
- 복잡한 통계 계산
- PDF 변환, OCR
이런 작업은 대부분 시간의 상당 부분을 CPU 계산에 사용한다.
예를 들어 AI 추론 서비스라면 요청 흐름은 보통 다음과 같다.
→ 모델 로딩
→ CPU/GPU 연산
→ 결과 반환
여기서 시스템이 기다리는 시간보다
연산 자체가 병목이 되는 경우가 많다.
CPU Bound 아키텍처 특징
이런 시스템은 다음 특성을 가진다.
- 멀티스레드 활용
- 병렬 처리
- 고성능 컴퓨팅
- GPU 활용
- 작업 큐 기반 처리
즉 핵심은 연산 처리 능력이다.
CPU Bound에 적합한 언어
대표적으로 다음 언어들이 많이 사용된다.
- C++
- Rust
- Go
- Java
- Python (AI 생태계)
특히 AI나 데이터 처리 영역에서는 Python이
라이브러리 생태계 때문에 널리 사용된다.
2. I/O Bound 도메인
I/O Bound 작업은 CPU 계산보다 외부 시스템 응답을 기다리는 시간이 대부분인 작업이다.
대표적인 예는 다음과 같다.
- 데이터베이스 조회
- 파일 업로드/다운로드
- 외부 API 호출
- 메시지 큐 처리
- 캐시 조회
- CRUD 서비스
대부분의 웹 서비스 API는 사실상 이 유형이다.
예를 들어 전자연구노트 API라면 요청 흐름은 다음과 같다.
→ DB 조회
→ 데이터 가공
→ 응답 반환
여기서 CPU 연산은 거의 없고
대부분의 시간은 DB 응답을 기다리는 시간이다.
I/O Bound 아키텍처 특징
이 경우 시스템 설계는 다음을 중요하게 본다.
- 비동기 처리
- 높은 동시성 처리
- 이벤트 기반 처리
- 네트워크 I/O 효율
즉 핵심은 대기 시간을 효율적으로 활용하는 것이다.
I/O Bound에 적합한 언어
대표적으로 다음 환경이 많이 사용된다.
- Node.js
- Go
- Python (async 기반)
- Java (Reactive)
특히 Node.js는 이벤트 루프 기반 비동기 처리 모델 덕분에
I/O 중심 서비스에서 높은 동시성을 처리하기 쉽다.
3. 왜 이 구분이 중요한가
도메인의 특성을 이해하지 못하면
기술 선택이 비효율적일 수 있다.
예를 들어 단순 CRUD 서비스에
과도한 고성능 컴퓨팅 아키텍처를 도입하는 것은 낭비다.
반대로 AI 추론 시스템을
단순 웹 서버 패턴으로 설계하면 병목이 생긴다.
즉 다음 질문이 항상 먼저 와야 한다.
아니면 I/O 중심인가
이 질문이 아키텍처의 방향을 결정한다.
4. MSA에서의 언어 선택 전략
마이크로서비스 아키텍처에서는
서비스별로 언어를 다르게 선택할 수도 있다.
예를 들어 다음과 같은 구조가 가능하다.
Auth Service → Node.js
Research Note API → Node.js
AI Service → Python
Data Processing → Java / Go
이 구조에서는 각 서비스가
자신의 도메인 특성에 맞는 언어를 사용할 수 있다.
이를 보통 Polyglot Architecture라고 부른다.
5. 실제 시스템 설계에서의 예
예를 들어 AI 기반 전자연구노트 플랫폼을 설계한다고 가정해 보자.
다음과 같은 구조가 가능하다.
I/O 중심 서비스
- API Gateway
- 사용자 인증 서비스
- 연구노트 CRUD 서비스
- 템플릿 관리
- 인벤토리 관리
이 서비스들은 대부분
패턴이므로 I/O 중심 서비스다.
CPU 중심 서비스
- 문서 임베딩 생성
- AI 검색
- 데이터 분석
- 추천 알고리즘
이 서비스들은 대부분
패턴이므로 CPU 중심 서비스다.
6. 아키텍처 관점의 핵심
좋은 아키텍처는 기술 중심이 아니라
도메인 특성 중심으로 설계된다.
정리하면 다음과 같다.
| CPU Bound | 계산 중심 | 병렬 처리, 고성능 연산 |
| I/O Bound | 외부 응답 중심 | 비동기 처리, 동시성 |
그리고 MSA 환경에서는
서비스별로 다른 기술을 선택하는 것도 자연스럽다.
즉 중요한 것은
언어 통일이 아니라 도메인에 맞는 선택이다.
정리
시스템 설계에서 중요한 것은
어떤 언어가 더 좋은가가 아니다.
더 중요한 질문은 이것이다.
I/O 중심인가
이 질문에 답할 수 있어야
- 아키텍처
- 기술 스택
- 서비스 분리
를 올바르게 결정할 수 있다.
좋은 아키텍처는 기술 트렌드가 아니라
도메인의 본질에서 출발한다.
'Architecture' 카테고리의 다른 글
| 왜 MSA에서는 기술 통일보다 서비스 경계가 더 중요할까 (0) | 2026.03.12 |
|---|---|
| 왜 요즘 MSA에서 Node + Python + Java가 같이 쓰이는가 (0) | 2026.03.12 |
| 불량률, 수율, 표준 준수율로 보는 개발 품질 관리 (0) | 2026.03.12 |
| 헥사고날 아키텍처(Hexagonal Architecture)란 무엇인가? (0) | 2026.02.23 |
| 고객 행동 분석에서 시작하는 이커머스 아키텍처 설계 (0) | 2026.02.13 |
