MSA에 대해 알아보자

권태형·2023년 3월 2일
0

지식정리

목록 보기
10/72

하나의 프로젝트가 확장됨에 따라 많은 기능들을 만들어야 하는데 하나의 프로젝트에 여러 기능들을 만들다 보면, 여러가지 어려움이 생길 수 있다. 여러 기능들이 하나의 서버에 맞물려 있다보니, A기능을 손봤을 때 연관된 B에서 에러가 생길 수 있고 또 B을 고침에 따라 관련된 C라는 기능을 또 연계적인 수정이 필요할 수 있다. 또한, 새로운 기능을 만들었을 때 서버내의 기능이 워낙 많다 보니 테스트나 빌드하는 동안의 시간 코스트가 늘어나고, 프로젝트나 라이브러리 버젼의 변경으로 인한 에러가 발생할 수 있다. 이러한 단점을 보완하기 위해서 나온 아키텍처구도가 MSA이다.

MSA란?

MSA(MicroServices Architecture)분산 시스템 아키텍처 중 하나로, 소프트웨어를 작은 독립적인 서비스 단위로 분리하고 각각을 개발, 배포, 관리할 수 있는 아키텍처이다.


MSA특징

MSA는 큰 규모의 애플리케이션을 작은 단위로 분리하여, 개별적으로 배포, 관리, 확장이 가능하게 함으로써 시스템의 유연성과 확장성을 높이는데 초점을 둔다. 각각의 서비스는 독립적인 데이터베이스를 가지고 있으며, REST API를 통해 다른 서비스와 통신한다.

각각의 서비스가 독립적인 DB를 가지며 개별적인 단위로 동작하기 때문에 컨테이너나, 서버리스를 통해 구현한다.


MSA의 장점

  • 높은 확장성
    각각의 서비스 단위로 확장이 가능해지므로, 전체 시스템의 확장성이 높아진다.

  • 높은 유연성
    각각의 서비스 단위로 독립적으로 배포가 가능해지므로, 서비스의 업데이트나 수정 작업이 전체 시스템에 미치는 영향이 적어진다.

  • 다양한 기술 스택 사용 가능
    각각의 서비스는 독립적으로 개발, 관리되므로, 서비스마다 필요한 기술 스택을 선택적으로 사용할 수 있다.

  • 높은 가용성
    한 서비스의 장애가 전체 시스템에 영향을 미치지 않으므로, 전체적인 가용성이 높아진다.

MSA의 단점

  • 분산 시스템의 복잡도
    각각의 서비스 단위로 분리하므로, 서비스 간의 통신, 데이터 일관성 등을 관리해야하는 복잡도가 높아진다.

  • 배포 및 관리의 어려움
    서비스마다 개별적으로 배포, 관리가 필요하므로, 전체적인 운영이 복잡해진다.

  • 분산 트랜잭션의 복잡도
    여러 서비스에서 동시에 일어나는 트랜잭션을 관리해야 하는 경우, 데이터 일관성을 유지하기 위해 분산 트랜잭션 관리가 필요해진다.

MSA단점의 보완

서비스 간의 통신이 복잡하고 데이터 일관성을 유지해야 하는 경우, API 게이트웨이를 도입하여 중간에서 통신을 관리하는 방식으로 구현할 수 있다.

분산 시스템의 복잡도와 배포, 관리의 어려움을 해결하기 위해 컨테이너 기술인 도커와 쿠버네티스 등을 사용하여 자동화된 배포 및 관리를 구현할 수 있다.


정리

MSA는 분산 시스템 아키텍처 중 하나로, 높은 확장성과 유연성을 제공하지만, 복잡한 구현과 운영을 필요로 한다. 따라서, MSA를 도입하려는 경우, 장단점을 고려하여 적절한 대응책을 마련하고, 체계적인 설계와 관리를 통해 안정적인 운영을 유지해야 한다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글