MSA ( Micro Service Architecture )

Sprout·2023년 10월 16일
0

MSA

목록 보기
1/8

MA vs MSA

  • 소프트웨어 애플리케이션을 설계하고 구축하는 두 가지 주요한 접근 방식
  • 각 프로젝트의 요구사항과 팀, 개발/배포 프로세스에 따라 아키텍쳐를 고려해야함. → 때로는 하이브리드 방식도 적용될 수 있음.
  • MA → MSA로 전환하는 시점 등을 고려해보기

MA (Monolithic Architecture)

       **간단한 어플리케이션을 빠르게 개발하고 배포할 때 유용**
  1. 단일 모듈 구조 : 모든 구성요소를 하나의 서버에 때려박은 구조
    • 어플리케이션은 단일 모듈 or 단일 코드베이스로 구성됨. = 하나의 프로젝트 내에서 모든 기능과 컴포넌트가 통합되어 있음.
  2. 단일 데이터베이스
    • 모든 기능이 하나의 DB에 접근 = 데이터베이스 스키마는 어플리케이션 전체에 공유
  3. 모듈 간 강한 결합
    • 각각의 기능이 밀접하게 연결돼 있음
  4. 스케일링이 어렵다 (=수평 스케일링)
    • 특정 기능만 확장하거나 업데이트하기 어려움
    • 수직 스케일링 vs 수평 스케일링 EX) RAM 업그레이드 → 수직 : 8GB → 16GB로 새로 갈아 끼우기 → 수평 : 8GB를 2개 끼우기
  5. 일부의 도메인을 수정해도 빌드 시에 전체를 빌드해야하기 때문에 시간이 오래 걸린다.

MSA (Micro Service Architecture)

       **복잡한 어플리케이션, 대규모 팀이 작업하는 경우 유용**

       **서비스 간의 독립성과 확장성이 필요한 경우 적합**

       **서비스 간 데이터 공유를 위해 API나 이벤트 기반의 통신을 사용함.**
  1. 분리된 작은 서비스
    • 어플리케이션은 특정한 업무를 수행하는 독립적인 서비스로 나뉨
  2. 독립적인 데이터 베이스
    • 독립적으로 존재하는 서비스의 필요에 따라 자체 데이터베이스를 가짐
  3. 느슨한 결합
    • 특정 서비스의 수정/삭제가 다른 서비스에 영향을 미치지 않음. → 독립적인 확장 가능
    • 일부의 서버가 터져도 다른 서버가 살아있으니 서비스를 제공할 수 있다.
                     (캐시DB와 메시지 큐를 통한 옵저버 패턴 등으로 극복)
  4. 배포 용이성 ( 빠르고 안전한 업데이트 제공 )
    • 일부 도메인만 수정해서 따로 빌드 가능
    • 병렬 방식으로 빌드를 하기 때문에 시간이 단축된다.
  5. 기술 다양성
    • 서비스 간에 다양한 기술 사용 가능 → 각 서비스가 자체적으로 선택한 언어나 프레임워크를 사용할 수 있다. → JSON으로 데이터를 통신하니까 가능하다. ex) A서버-스프링부트(JAVA), B서버-node(JS), C서버-Jango(파이썬) 등으로 나눌 수 있다. ⇒ 각 서비스에 강점이 있는 언어로 도메인을 구축할 수 있다.

대규모 서비스를 지탱하기 위한 부하분산

  • 리버스 프록시를 활용한 부하 분산 ( 트래픽 분산 )
     = 웹 서비스나 애플리케이션의 성능을 향상시키기 위한 중요한 전략 중 하나
    만나는 문제점
    1. 구성과 관리의 복잡성

      • 여러 대의 서버를 관리하니 초기 설정 및 유지보수가 복잡해짐
    2. 프록시 설정의 최적화

      • 성능 저하나 불안정성을 방지하기 위한 프록시 설정의 최적화 → 서버 및 네트워크 아키텍쳐에 대한 깊은 이해 필요
    3. 서버 상태 관리

      • 개별 서버에 대한 모니터링 및 관리가 필요 → 특정 서버가 다운되면 트래픽 분배에 장애가 생길 가능성 있음
    4. 세션 유지와 데이터 일관성

    5. 보안 및 인증 문제

      • SSL/TSL과 같은 보안 기능 구성 → 프록시를 통해 들어오는 요청이 신뢰 가능한지 파악
    6. 로깅과 모니터링

      • 여러 서버를 관리하는 과정에서 나타나는 오류에 대한 추적이 어려움 → 로깅과 모니터링을 통한 전체 시스템의 상태를 추적과 문제 식별 중요
    7. 네트워크 지연 및 대역폭
      - 프록시 서버를 한번 더 거쳐야하기 때문에 나타나는 지연 및 대역폭 문제가 있음.

      ⇒ 리버스 프록시 아키텍쳐, 모니터링, 로깅, 백업 및 복구 등의 보완적인 시스템이 필요

      + 클라우드 기술을 활용한 자동 확장과 관리를 수행하는 것이 효과적일 수 있음
profile
취준생 필기노트

0개의 댓글