아키텍처와 프로그래밍 언어 선택의 기준

시스템 아키텍처를 설계할 때 많은 팀이 다음 질문을 먼저 한다.

  • 어떤 언어를 쓸 것인가
  • 어떤 프레임워크를 쓸 것인가
  • 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 추론 시스템을
단순 웹 서버 패턴으로 설계하면 병목이 생긴다.

즉 다음 질문이 항상 먼저 와야 한다.

이 서비스는 CPU 중심인가
아니면 I/O 중심인가
 

이 질문이 아키텍처의 방향을 결정한다.


4. MSA에서의 언어 선택 전략

마이크로서비스 아키텍처에서는
서비스별로 언어를 다르게 선택할 수도 있다.

예를 들어 다음과 같은 구조가 가능하다.

API Gateway → Node.js
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 서비스
  • 템플릿 관리
  • 인벤토리 관리

이 서비스들은 대부분

요청 → DB → 응답
 

패턴이므로 I/O 중심 서비스다.

CPU 중심 서비스

  • 문서 임베딩 생성
  • AI 검색
  • 데이터 분석
  • 추천 알고리즘

이 서비스들은 대부분

데이터 입력 → 연산 → 결과 생성
 

패턴이므로 CPU 중심 서비스다.

 

6. 아키텍처 관점의 핵심

좋은 아키텍처는 기술 중심이 아니라
도메인 특성 중심으로 설계된다.

정리하면 다음과 같다.

도메인 유형                                      특징                                                                 아키텍처 초점
CPU Bound 계산 중심 병렬 처리, 고성능 연산
I/O Bound 외부 응답 중심 비동기 처리, 동시성

그리고 MSA 환경에서는
서비스별로 다른 기술을 선택하는 것도 자연스럽다.

즉 중요한 것은

언어 통일이 아니라 도메인에 맞는 선택이다.


정리

시스템 설계에서 중요한 것은
어떤 언어가 더 좋은가가 아니다.

더 중요한 질문은 이것이다.

이 도메인은 CPU 중심인가
I/O 중심인가
 

이 질문에 답할 수 있어야

  • 아키텍처
  • 기술 스택
  • 서비스 분리

를 올바르게 결정할 수 있다.

좋은 아키텍처는 기술 트렌드가 아니라
도메인의 본질에서 출발한다.

LIST

+ Recent posts