728x90
반응형
모놀리식에서 MSA로
Micro Service Architecture
마이크로 서비스 아키텍쳐는 고수준에서 하라보면 하나의 애플리케이션을 여러 서비스로 기능 분해하는 기법
입니다. 각 서비스가 집중되고 응집된 역할을 수행을 합니다.
모듈성
모듈셩은 크고 복잡한 애플리케이션을 개발할 때 꼭 필요한 특성으로 규모가 방대하고 복잡하다면, 개인이 이해하기 어렵고 개발하기 힘듭니다. 따라서 여러 사람이 이해하기 쉽고 개발을 할 수 있도록 여러 모듈로 분할
을 해야 합니다.
경계선
각 서비스는 다른 서비스가 침투하지 못하도록 API 라는 경계선
을 갖고 있어 다른 서비스에서 접근이 불가
하도록 해주며 이는 유지보수에 크게 도움이 됩니다. 또 서비스에 대해서 단위 별로 배포 및 확장에도 도움이 되는 장점이 있습니다.
개별 DB
마이크로 서비스는 서로 느슨하게 결합되어 있고 API를 통해 통신을 하고 이는 각제의 자체 DB를 가질수 있게 됩니다. 이는 다른 서비스 팀과 협의 없이도 스키마 변경에 대해 유연함을 가질수 있고 DB락으로 서비스 Block 등의 일을 방지 합니다.
#
확장 큐브 (X,Y,Z)
X축 확장 (수평복제)
동일한 요청에 대해 부하 분산, 일반적인 모놀리식 확장 수단으로 WAS 인스턴스 N개를 실행시켜 놓은 뒤에 Load Balancer를 통해서 들어온 요청을 고루 분배 (단일 인스턴스 -> 다중 인스턴스)
#
Z축 확장 (데이터 분할)
요청의 값에 따라서 나누어서 확장, 단일 파티션 -> 다중 파티션.
각 인스턴스는 요청 Header에 Authorization의 UserId를 보고 N개의 인스턴스 중 알맞은 인스턴스에게 요청 합니다.
Z축 확장은 트랜잭션 및 데이터 볼륨을 처리하기 좋은 수단입니다.
TODO: 왜 트랜잭션과 데이터 볼륨에 좋은거지?? 샤딩이나 proxySQL 같은거 써서 그런가?? 나중에 다시 와서 추가 바람.
#
Y축 확장 (기능분해)
서로 상이한 기능을 나누어서 확장, 모놀리스 -> 마이크로 서비스.
X축과 Z축 확장은 앱의 능력과 가용성은 개선되지만, 더 복잡해지는 문제에 대해서는 해결이 되지 않는다. 따라서 Y축의 기능 분해가 필요하다.
728x90
반응형
'IT > Micro Service Architecture' 카테고리의 다른 글
Micro Service Architecture - 6. IPC (0) | 2021.09.27 |
---|---|
Micro Service Architecture - 5.분해전략 2 (0) | 2021.09.27 |
Micro Service Architecture - 4.분해전략 (0) | 2021.09.27 |
Micro Service Architecture - 3.패턴 (0) | 2021.09.07 |
Micro Service Architecture - 2.FTGO 예시 (0) | 2021.09.06 |