MSA(Micro Service Architecture)

조인희·2022년 11월 29일
0
post-thumbnail

MSA란?

| MSA
  MSA란 마이크로 서비스 아키텍처의 약자로 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다.

< 온라인 쇼핑몰에 MSA적용 예시 >

 각 컴포넌트는 서비스 형태로 구현되고 API를 이용하여 타 서비스와 통신하게 됩니다. 각 서비스는 독립된 서버로 타 컴포넌트와 의존성이 없기 때문에 독립된 배포를 하게 됩니다. 또한 각 컴포넌트가 독립된 서비스로 개발되어있기 때문에 부분적인 확장이 가능해진다. 온라인 쇼핑몰에서 주문 서비스에 트래픽이 증가한다면 해당 서버만 확장을 해주면 된다.

하지만 단점 또한 존재한다.
•MSA의 경우 서비스간 호출을 API통신을 이용하기 때문에 속도가 느리다.
•통신에 사용하기 위해 값을 데이터 모델로 변환시켜주는 오버헤드가 발생한다.

| MSA 특징
  • 데이터 분리
 데이터 저장 시 하나의 DB에 중앙 집중화를 하지 않고 서비스 별 별도의 데이터 베이스를 사용한다. DB의 종류를 별도로 가져 갈 수도 있고, 같은 DB를 사용하더라도 나누어서 사용하게 된다. 데이터가 분산되어있기 때문에 다른 서비스 컴포넌트에 대한 의존성이 없이 서비스를 독립적으로 개발 및 배포/운영 할 수 있지만, 다른 컴포넌트의 데이터를 API통신을 통해 가져와야 하기 때문에 성능상의 문제 가능성이 있고, 트렌잭션으로 묶을 수 없는 문제가 발생하기도 한다.

  • API Gateway
 MSA의 문제점 중 하나는 각 서비스가 다른 서버에 분리 배포되어있기 때문에 서버URL이 각기 다를 수 밖에 없다. 이때 API Gateway는 API 서버 앞 단에서 모든 API 서버들의 End-Point를 단일화하여 묶어주는 역할을 한다. 또한 복잡한 서비스간의 API호출 구조도 단순화 시킨다. 그 외에 라우팅, 로드밸런싱, 인증 역할 등등 여러 역할을 수행한다.

  • 팀의 변화
 MSA에서는 서비스 별로 팀을 나누고 서비스 기회에서부터 설계 개발 운영이 팀 내에서 이루어지기 때문에 다른팀에 대한 의존성이 사라지게 된다. 역할별 요청과 피드백이 빨라지고, 때문에 유연하고 지속적인 운영과 개발이 함께하게 된다. 단점으로 인력 자원 관리에 어려움이 생기고, 각 팀의 역할 담당자들은 기본적인 업무 성숙도를 가지고 있어야 하고, 특히 개발자들은 운영 팀의 고유 영역이었던 인프라 핸들링이 가능해야 한다. ( 그리고 이러한 일이 가능하게 된 것은 AWS같은 클라우드 서비스 발달이다. 직접적인 인프라 운영없이 클라우드 서비스를 이용하여 개발자가 운영 환경을 설정할 수 있게 되었다. )
profile
항시 돌아보자! 무조건 해보자!

0개의 댓글