시스템 아키텍트솔루션 아키텍트

모놀리식 아키텍처와 서비스 지향 아키텍처의 차이에 대해 설명해 주세요. 어떤 경우에 어느 접근 방식을 사용하는 것이 좋습니까?

Hintsage AI 어시스턴트로 면접 통과

답변.

모놀리식 아키텍처는 모든 애플리케이션 기능이 단일 개발 및 배포 코드에 집약된 것을 의미합니다.

서비스 지향 아키텍처(SOA), 특히 마이크로서비스는 애플리케이션이 명확한 인터페이스(주로 네트워크)를 통해 상호작용하는 일련의 모듈로 구성된 접근 방식입니다.

모놀리식이 유리한 경우:

  • 작은 스타트업 또는 MVP
  • 애플리케이션에 상호작용하는 모듈이 적음
  • 관리 및 배포의 단순성이 중요함

SOA가 유리한 경우:

  • 다양한 팀과 기술을 가진 큰 또는 성장하는 애플리케이션
  • 개별 모듈에서 잦은 변화의 필요
  • 장애 내성과 확장성 증대 필요

비교 예: 모놀리식:

public class Application { public static void main(String[] args){ UserService userService = new UserService(); OrderService orderService = new OrderService(); // 주문 및 사용자 로직 — 모두 하나의 애플리케이션에 포함 } }

SOA — API를 통한 상호작용:

GET /user/42 # 사용자 서비스에 요청 GET /order/532 # 주문 서비스에 요청

핵심 특징:

  • 하나의 프로세스 — 배포가 간편하지만 확장을 유지하기 어려움
  • 서비스 간의 역할 및 책임이 명확히 분리됨
  • 시스템 통합 및 관계 테스트 필요

함정 질문.

SOA는 서비스 간 데이터베이스를 공유합니까?

일반적으로 서비스는 낮은 결합도를 위해 데이터를 분리합니다. 공통 데이터베이스는 마이그레이션 단계에서는 허용되지만, 이상적으로는 각 서비스마다 별도의 데이터베이스를 가져야 합니다.

모놀리식이 항상 성능이 좋지 않습니까?

아니요, 모놀리식은 작은 규모에서는 네트워크 호출과 메모리 분리가 없기 때문에 성능이 더 좋을 수 있습니다.

모놀리식을 "한 번에" 마이크로서비스로 전환할 수 있습니까?

아니요, 일반적으로 경계를 설정하고 이를 서비스로 변환하는 단계적으로 진행됩니다.