내일배움캠프 36일차 TIL : Spring - MSA

김원기·2024년 6월 20일

TIL

목록 보기
40/42
post-thumbnail

내일배움캠프 35일차 TIL : Spring - MSA, API 통신

MSA

Micro Service Architecture의 약자로 도메인 별로 서비스를 나눈 구조를 말한다.

나누어진 도메인 각각의 서버와 DB를 가지고 있고 다른 도메인의 데이터를 조회할 때는 API를 통해서만 접근이 가능하다.

Monolithic Architecture

MSA를 사용하기 전 주로 사용되었던 구조인 Monolithic Architecture

하나의 서버에 모든 도메인이 들어가있는 형태로 모든 비지니스 로직이 하나의 DB를 사용한다.

Monolithic Architecture 장점

  • 구조가 단순하다. : 모든 코드가 프로젝트 하나에 위치하고 있다
  • 빠른 개발 속도: 다른 팀과 API 협의 필요 없이 바로 데이터에 접근하여 신규 기능 개발이 가능하다.
  • 동일한 DB 사용: 모든 도메인이 동일한 DB를 사용하므로 필요 데이터를 바로 조회할 수 있다.
  • 배포가 간편하다: 기능 전체를 한 번에 배포할 수 있어, 과정이 단순하고 오류 발생 가능성이 낮다.
  • 일관된 개발 환경: 개발 환경이 모두 일관적이어서 관리가 쉽다.
  • 네트워크 오버헤드 없음: 단일 서버이므로 API 호출에 따른 네트워크 오버헤드가 없다.

Monolithic Architecture 단점

대표적인 단점으로 하나의 도메인에서 장애가 발생하면 서비스가 불가능하다는 치명적인 단점이 존재한다.

  • 분 장애가 전체에 영향을 준다.
  • 단순한 변경 하나에 전체를 빌드해야 해야 한다.
  • 모든 코드가 하나의 프로젝트에 있어 작은 코드 변경이 다른 도메인에 영향을 줄 수 있다.
  • 전체 서비스가 동일 기술 스펙하에 있어 각 도메인 별로 적절한 기술을 사용할 수 없다.

MSA

모놀리식 아키텍처의 단점 때문에 MSA가 주목받게 되었다.

MSA는 도메인 별로 작은 서버를 나눠 가지고 각각 API를 통해 데이터를 주고 받게 된다.

MSA는 기본적으로 API를 통한 개발이기 때문에 API에 대한 커뮤니케이션이 중요하다.

MSA 장점

  • 격리된 장애: 한 서비스의 장애가 전체 시스템에 영향을 미치지 않아 신뢰성과 안정성이 높다.
  • 독립적 배포: 각 서비스가 독립적으로 배포될 수 있어 신속하고 빈번한 배포가 가능하다.
  • 확장성: 특정 서비스만 독립적으로 확장할 수 있어 효율적인 자원 사용과 성능 향상이 가능하다.
  • 유연한 기술 스택: 각 서비스별로 가장 적합한 기술 스택을 선택할 수 있어 유연성이 높다.
  • 향상된 유지보수성: 서비스가 작고 독립적이어서 이해하기 쉽고, 유지보수와 디버깅이 용이하다.
  • 팀별 독립성: 각 서비스가 독립적으로 개발되고 운영될 수 있어 팀이 특정 서비스에 집중할 수 있다.

MSA 단점

  • 복잡한 관리: 많은 서비스가 존재하여 서비스 간의 통신과 배포, 모니터링, 로깅 등 관리가 복잡해진다.
  • 네트워크 오버헤드: 서비스 간의 통신에 의한 네트워크 오버헤드와 지연 시간이 발생할 수 있다.
  • 데이터 일관성 문제: 각 서비스가 독립적인 데이터베이스를 가질 수 있어 데이터 일관성을 유지하는데 많은 리소스가 소모 된다. (트랜잭션 이슈)
  • 개발 및 테스트 복잡성: 분산된 아키텍처로 인해 개발 및 테스트 환경 설정이 복잡해진다.
  • 서비스 간 통합 문제: 각 서비스 간의 통합과 협력이 복잡해져 서비스 경계를 명확히 정의하고 유지하는 것이 어렵다.
  • 초기 설정 비용: 초기 설정과 인프라 구축에 많은 시간과 비용이 들 수 있다.

끝!

다음은 MSA와 연관되어있는 API 서버 2개를 생성해서 하나의 서버에서 다른 서버의 API를 호출하는 것을 다룬다.

profile
혼자 공부하는 블로그라 부족함이 많아요 https://www.notion.so/18067a27ac7e4f4790dde645fb3bf3d3?pvs=4

0개의 댓글