MA란 무엇인가?
Monoilithic Architecture의 경우 전통적인 개발 방식으로 하나의 프로젝트 속에 여러 기능을 모두 포함한다.
MA의 특징
MA의 경우 기능이 모듈별로 쪼개지는 것이 아니기 떄문에 하나의 프로젝트에 전체 APP이 다 포함된다.
이러한 구조로 인해서 기능, 모듈이 추가될 때마다 프로젝트가 커지게 된다.
MA의 장점
아무래도 구조등을 고민할 필요가 적어 초기에 개발하기가 편하다.
더불어 모든 기능이 같은 내부에 존재하기 때문에 별도의 통신이 없이 다른 기능을 직접 사용할 수 있다.
MA의 단점
시간이 지나 프로젝트 규모가 커질수록 유지보수 규모와 비용이 커지며 확장이 점점 힘들어진다.
그외의 사소한 기능 수정임에도 전체 App을 재기동해야하는등의 단점이 존재한다.
MSA 란 무엇인가?
msa(micro service architecture)란 MA에 반대되는 개념으로
여러개의 작은 service로 구성되어 각 service가 독립적으로 개발 되고 배포되는 구조를 의미한다.
MSA 의 특징
MSA는 MA와 달리 각 기능별로 독립적으로 배포 및 개발이 되기 때문에 전체적으로 시스템이 분산되어 있다.
이로 인해서 각 기능별로 개발, 배포가 독립적으로 가능하며 MA에 비해서 규모 및 기능을 확장하기가 쉽다.
또한 유지보수가 용이하다.
MSA의 장점
각 service간의 독립성으로 인해서 확장성과 유연성이 높아진다.
가령 cloud 환경에서 특정 기능에 부하가 몰리는 경우 해당 기능과 관련된 instance 규모만 확장하면 된다.
또한 각 service가 구분되어 있기 때문에 일부 service의 장애가 다른 service에 영향을 끼치지 않는다.
MSA의 단점
반면 MSA 역시 단점이 존재하는데 각 service가 독립되어 있기 때문에 service간의 통신을 고려해야한다.
이로 인해서 각 service와의 연결구조 및 관리가 다소 복잡해진다.
추가로 초기 구조 세팅에 소모되는 비용이 다소 크다.
MSA가 적용된 예
MA의 경우 프로젝트 크기가 별로 크지 않을때 많이 적용되며 반대로 MSA의 경우 대규모 프로젝트에 적합하다.
간단하게 게임분야의 경우 login server와 lobby server, battle server, guild server 등으로 구분하여 service를 구현하는 경우도 MSA로 볼 수 있을 것이다.
'Server' 카테고리의 다른 글
MSA 설계 시 고려해야할 것들 (0) | 2023.12.20 |
---|---|
Game Server HandOver (0) | 2021.06.25 |
Convoying 이란? (0) | 2021.06.25 |
Lock Free 알고리즘에 대하여 (0) | 2021.06.25 |
Process와 Thread의 차이점 (0) | 2021.06.20 |