| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 트러블슈팅
- 아키텍처
- Java 8
- 마이그레이션
- 컨테이너
- github actions
- 도커
- MSA
- java
- 멀티모듈
- 마이크로서비스
- 분산시스템
- Database
- 백엔드
- CS
- 인프라
- gradle
- GCP
- 백엔드면접준비
- docker
- GitHub Packages
- 공통모듈
- 자바
- dockercompose
- PostgreSQL
- Flyway
- ci/cd
- springboot
- SpringCloud
- 마이크로서비스아키텍처
- Today
- Total
NYO_O
서버와 서비스 차이가 뭘까? MSA 명칭 정리 본문
명칭이 왜 중요한가
MSA 구조를 처음 설계하다 보면 자연스럽게 이런 고민이 생깁니다. Config를 띄우면 이건 서버인가, 서비스인가. 유레카(Eureka)가 올라가 있는 인스턴스는 어떻게 부르는 게 맞을까. 주문을 처리하는 Order 모듈은 또 어떻고.
처음에는 그냥 "다 서비스 아닌가?" 하고 넘겼습니다. 그런데 팀원과 이야기를 나눌 때마다 같은 단어가 다른 의미로 쓰이고 있다는 걸 알게 됐습니다. "서비스 재시작해"라는 말 한 마디에 "어떤 서비스요?"가 자동으로 따라붙는 상황, 한 번쯤 겪어보셨을 겁니다.
핵심 질문: 인프라 역할을 하는 컴포넌트와, 실제 비즈니스 로직을 담은 컴포넌트를 같은 이름으로 불러도 되는가.
혼란의 출발점 — 모두 "서비스"라고 부르던 시절
MSA를 처음 접할 때 보통 "마이크로서비스"라는 단어부터 배웁니다. 그러다 보니 구조 안에 있는 모든 것에 서비스라는 단어를 붙이는 습관이 생기게 됩니다. Config 서비스, Eureka 서비스, Gateway 서비스, Order 서비스, 전부 서비스입니다.
문제는 이 컴포넌트들이 하는 일이 성격적으로 완전히 다르다는 점입니다. Config나 Eureka는 다른 컴포넌트들이 제대로 동작하기 위해 필요한 인프라 역할을 합니다. 반면 Order나 User는 실제 비즈니스 요구사항을 처리하는 주체입니다. 둘 다 "서비스"라고 부르면 역할의 차이가 이름에서 전혀 드러나지 않습니다.
Spring Cloud 공식 문서
Spring Cloud 공식 문서를 찾아보면 흥미롭게도 명확한 구분이 있습니다.
컴포넌트 공식 명칭 공식 문서 표현
| 컴포넌트 | 공식 명칭 | 공식 문서 표현 |
| spring-cloud-config | Config Server | Spring Cloud Config Server |
| spring-cloud-netflix-eureka | Eureka Server | Eureka Server / Service Registry |
| spring-cloud-gateway | Gateway (Server 계열) | Spring Cloud Gateway |
| 비즈니스 모듈 | Service (Client) | Eureka Client, Config Client |
즉, Spring Cloud는 인프라 역할을 하는 컴포넌트에는 일관되게 Server라는 단어를 씁니다. 그리고 이 서버들에 붙어 동작하는 비즈니스 모듈은 Client라고 부릅니다. 서버에 등록되어 서비스를 제공하는 주체라는 의미에서 Service라는 표현도 함께 사용됩니다.
서버 vs 서비스
공식 문서를 참고해 정리하면, 구분 기준은 꽤 직관적입니다.
| 구분 | 역할 | 예시 |
| 서버 (Server) | 다른 컴포넌트가 동작하기 위한 인프라 제공. 비즈니스 로직 없음. | Config Server, Eureka Server, API Gateway |
| 서비스 (Service) | 실제 비즈니스 요구사항을 처리. 서버에 등록되어 운영. | Order Service, User Service, Payment Service |
핵심은 "비즈니스 로직이 있는가"입니다. Config Server는 설정값을 배포하는 역할만 하고, 그 자체로 어떤 비즈니스 요구사항도 처리하지 않습니다. Eureka Server도 마찬가지입니다. 서비스들이 어디에 있는지 알려줄 뿐입니다.
기준: 직접 비즈니스 요구사항을 처리하면 서비스, 다른 컴포넌트의 운영을 지원하면 서버로 구분하는 것이 좋습니다.
적용 예시
| 모듈 | 명칭 | 이유 |
| config-server | Config Server | Spring Cloud 공식 명칭 그대로 사용 |
| eureka-server | Eureka Server | 동일 |
| api-gateway | Gateway (서버 계열) | 라우팅 인프라 역할 |
| order-service | Order 서비스 | 비즈니스 로직 처리 주체 |
| user-service | User 서비스 | 동일 |
이렇게 정리하고 나니 커뮤니케이션이 훨씬 명확해졌습니다. "Config Server 재시작해"와 "Order 서비스 재시작해"는 더 이상 헷갈리지 않습니다. 이름 하나가 역할을 설명해주기 때문입니다.
마무리
오늘은 MSA 구조에서 자주 혼용되는 서버와 서비스라는 명칭을 어떻게 구분할 수 있는지 살펴보았습니다. Spring Cloud 공식 문서의 표현을 기준으로 삼으면 인프라 역할을 하는 컴포넌트는 Server, 비즈니스 로직을 담은 컴포넌트는 Service로 구분하는 것이 일관성 있고 혼란도 줄어듭니다.
'IT 용어 사전' 카테고리의 다른 글
| IT 업계 단골 용어, '마이그레이션(Migration)' 완벽 정복! (feat. 레거시) (0) | 2026.05.20 |
|---|