새소식

반응형
BACKEND/기술 면접 시리즈

[Backend 면접 질문 시리즈] 마이크로서비스 아키텍처: 현대 소프트웨어 개발의 핵심 트렌드

  • -
반응형

Backend Architecture

 

Intro. 면접에서 나오는 질문은 보편적으로 중요한 개념이며 하루 아침에 이해되고 외워 지는게 아닙니다. 평소에 꾸준히 지식을 습득하고 이해하는것이 중요합니다.

 

 

마이크로서비스 아키텍처란?

먼저 마이크로서비스 아키텍처는 소프트웨어 아키텍처 패턴 또는 설계 접근 방식으로 분류됩니다. 이는 특정 기술이라기보다는 시스템을 설계하고 구축하는 방법론적 기법에 가깝습니다.

 

마이크로서비스 아키텍처는 하나의 큰 애플리케이션을 여러 개의 작고 독립적인 서비스로 나누는 방식입니다. 각 서비스는 특정 비즈니스 기능을 담당하며, API를 통해 다른 서비스와 통신합니다. 이는 마치 레고 블록처럼 각 부분을 조립하여 전체 시스템을 구축하는 것과 비슷합니다.

 

개발 분야에서의 카테고리를 살펴보면:

  1. 소프트웨어 아키텍처 패턴 마이크로서비스는 모놀리식 아키텍처, 서비스 지향 아키텍처(SOA) 등과 함께 소프트웨어 아키텍처 패턴의 한 종류입니다.
  2. 시스템 설계 방법론 애플리케이션을 작고 독립적인 서비스들로 분할하여 설계하는 방법론입니다.
  3. 분산 시스템 설계 여러 개의 독립적인 서비스로 시스템을 구성하므로, 분산 시스템 설계의 한 형태로 볼 수 있습니다.
  4. 애플리케이션 개발 접근 방식 전체 애플리케이션을 어떻게 구조화하고 개발할 것인지에 대한 접근 방식을 제시합니다.
  5. DevOps 및 클라우드 네이티브 컴퓨팅 관련 개념 마이크로서비스는 종종 DevOps 실천과 클라우드 네이티브 애플리케이션 개발과 밀접하게 연관됩니다.

따라서, 마이크로서비스 아키텍처는 단순한 기술이 아니라 시스템 설계와 개발에 대한 포괄적인 접근 방식입니다. 이는 특정 프로그래밍 언어나 프레임워크에 종속되지 않으며, 다양한 기술을 사용하여 구현할 수 있는 장점이 됩니다.

반응형

마이크로서비스의 장점

왜 마이크로서비스인가?

  1. 유연성: 각 서비스를 독립적으로 개발, 배포할 수 있어 빠른 변화에 대응하기 쉽습니다.
  2. 확장성: 필요한 서비스만 선택적으로 확장할 수 있어 자원을 효율적으로 사용할 수 있습니다.
  3. 기술 다양성: 각 서비스에 최적화된 기술 스택을 선택할 수 있습니다.
  4. 장애 격리: 한 서비스의 문제가 전체 시스템에 미치는 영향을 최소화할 수 있습니다.

실제 예시: 온라인 쇼핑몰

온라인 쇼핑몰을 마이크로서비스로 구현한다면 어떨까요? 다음과 같이 나눌 수 있습니다:

  • 사용자 관리 서비스 (회원가입, 로그인)
  • 상품 카탈로그 서비스 (상품 정보 관리)
  • 장바구니 서비스
  • 주문 처리 서비스
  • 배송 관리 서비스
  • 리뷰 및 평점 서비스

좀 더 구체적 예시: 영상 스트리밍 서비스 

  1. 콘텐츠 추천 엔진
    • 기능: 사용자 행동 분석, 개인화된 콘텐츠 추천
    • 기술 스택: Apache Spark, Cassandra, Scala
  2. 비디오 스트리밍 서비스
    • 기능: 적응형 비트레이트 스트리밍, 전 세계 CDN 관리
    • 기술 스택: Node.js, NGINX, Amazon CloudFront
  3. 사용자 인터페이스 서비스
    • 기능: 다양한 디바이스에 최적화된 UI 제공
    • 기술 스택: React, GraphQL, Node.js
  4. 결제 처리 서비스
    • 기능: 구독 관리, 다국가 결제 처리
    • 기술 스택: Java, Spring Boot, MySQL
  5. 콘텐츠 메타데이터 서비스
    • 기능: 영화/TV 쇼 정보 관리, 다국어 지원
    • 기술 스택: Python, Elasticsearch, Redis
  6. 사용자 활동 로깅 서비스
    • 기능: 사용자 시청 기록, 중단 지점 저장
    • 기술 스택: Apache Kafka, Apache Flink, Amazon S3
  7. 인코딩 및 트랜스코딩 서비스
    • 기능: 다양한 형식과 해상도로 비디오 변환
    • 기술 스택: FFmpeg, Docker, Kubernetes

아키텍처 다이어그램 (텍스트로 표현):

[사용자 디바이스] <--> [CDN] <--> [API 게이트웨이]
                                     |
   +------------+------------+------------+------------+
   |            |            |            |            |
[UI 서비스] [추천 엔진] [스트리밍] [메타데이터] [결제 처리]
   |            |            |            |            |
   +------------+------------+------------+------------+
                                     |
                              [메시지 큐 (Kafka)]
                                     |
   +------------+------------+------------+------------+
   |            |            |            |            |
[로깅 서비스] [인코딩] [데이터 분석] [보안 서비스] [기타 서비스]

 

각 서비스는 독립적으로 운영되면서, 필요할 때 API를 통해 서로 정보를 주고받습니다.

주의할 점

물론 마이크로서비스가 만능은 아닙니다. 다음과 같은 도전과제가 있습니다:

  1. 복잡성 증가: 여러 서비스를 관리하는 것은 단일 애플리케이션보다 복잡할 수 있습니다.
  2. 데이터 일관성: 여러 서비스에 걸쳐 데이터 일관성을 유지하는 것이 까다로울 수 있습니다.
  3. 네트워크 지연: 서비스 간 통신으로 인한 지연이 발생할 수 있습니다.

 

결론

마이크로서비스 아키텍처는 현대 소프트웨어 개발에서 중요한 접근 방식입니다. 유연성, 확장성, 장애 격리 등 많은 장점을 제공하지만, 동시에 새로운 도전과제도 가져옵니다. 여러분의 프로젝트에 적합한지 신중히 고려해보시기 바랍니다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.