MSA를 알아보자!

Hayoung Kim·2020년 11월 24일
0

MSA

목록 보기
1/5

MSA란?

하나의 큰 서비스를 작은 단위로 쪼개서 원하는 서비스를 조합하는 아키텍처
MSA는 여러개의 작고, 독립적인 서비스들을 조합하여 복잡한 application을 만드는 Architecture이다.

각각의 독립적인 서비스는 MSA에 유연성을 부여하고 이 유연성은 개발 및 운영 과정에 많은 이점을 가져다 준다.

Monolithic Architecture Vs. MicroService Architecture


Monolithic이란, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태를 말한다.
모든 서비스가 하나의 파일로 묶인 뒤 배포되어 동작하게 된다.

서비스들의 경계가 모호하고 하나의 DB를 공유하고 있는 구조로 서로 의존성이 높아질 수 밖에 없다. 따라서 서비스가 변경되거나 DB가 변경되면 연관된 서비스들도 변경해야하는 문제가 발생하게 된다.

하나의 파일로 묶여서 배포가 되기 때문에 서비스의 한 부분을 수정한다면 전체 프로젝트를 다시 패키징해서 배포해야되는 상황이 발생하기 때문에 일반적으로는 소규모 프로젝트에 더 적합하다.

소규모 프로젝트에 적용한다면 통합되어 있기때문에 간단한 형태를 갖고있어 유지보수에 용이하게된다.


MicroService Architecture는 대규모 프로젝트에 더 적합하다.
microservice는 완전히 독립적으로 배포가 가능하고, 서로 다른 기술 스택을 사용하여 단일 비즈니스 로직을 구현한 것으로 각각의 작은 단위의 서비스를 나누어 개발하기 때문에 전체 서비스가 커지는 경우 시스템 구조 파악에 유리한 점이 있다.

각 서비스는 논리적으로 DB를 나누어(꼭 물리적으로 나눠져있을 필요는 없다) 사용하기 때문에 상호간의 결합이 약해 유연한 운영이 가능해진다.

MSA의 특징
API를 통해서만 상호작용할 수 있다. 각 서비스의 end-point를 API형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화한다. 내부의 구현 로직, 아키텍처와 프로그래밍언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려진다.
따라서 SOA(Service Oriented Architecutre)의 특징을 다수 공통으로 가진다.

  • SOA
    대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하고 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해가는 방법론이다. 업무 처리 변화를 시스템에 빠르게 반영하고자 하는 수요에 대응하는 방법론.
  • 플랫폼에 종속되지 않는 표준 인터페이스를 통해 기업의 업무를 표현한 '느슨하게 연결되고 상호 조합 가능한 소프트웨어'
  • SOA에서는 각각의 서비스가 데이터 계층, 비즈니스 로직, 뷰에 대한 모듈을 모두 가지고 있고, 각 서비스 간의 의존성이 최소화된다.
  • SOA 시스템의 규모가 증가함에 따라 서비스의 중복이 발생할 수 있고, 이를 방지하기 위해 이미 구현된 서비스가 있는지를 검색할 수 있어야 한다.

API GateWay

각 서비스에 접근하기 위해 사용되는 gateway
loadbalancing

참조

0개의 댓글