쇼핑몰에 사용자 이용수가 몰린다고 생각해보자 ex. 마감세일 등
상황 ex) 트래픽이 증가하는 마감세일 등의 타이밍에서 사용자 트래픽을 예상해
시스템 용량을 증설하고 다시 줄이는 번복을 삼가하기 위해
클라우드 인프라를 사용해 시스템 인프라 환경을 준비한다.
서비스 사용량 증가에 따른 인프라 용량의 성능과 가용성을 높이는 일반적인 방법
- scale-up: 물리적 용량(cpu, clock)을 증가시켜 데이터 처리를 증가시킨다.'
- scale-out : 수평 확장, 가용성 높이기, 사용량을 분산시켜서 전체적으로 장애가 없이 운영되게 한다. 확장 탄력성을 보장
시스템의 인스턴스로 설정된 개수로 복제해서 증가시킨다.CPU 사용량(%)이 증가하면 인스턴스가 1개에서 2개가 되는 등의 적절한 분산이 이뤄진다.
MSA : 시스템을 작은 단위의 독립적인 서비스 연계로 구성한다.
클라우드 플랫폼 중 하나인 클라우드 파운드리(Cloud Foundry를 서비스하는 피보탈(Pivotal)에서는 이처럼 큰 덩어리로 클라우드 환경에 올라갈 수 있게만 한 애플리케이션 : 클라우드 친화 애플리케이션(Cloud Friendly Application)
독립적으로 분리되어 배포될 수 있는 조각으로 구성된 애플리케이션 : 클라우드 네이티브 애플리케이션(Cloud Native Application)
스케일 아웃은 모노리스 전체가 확장된다
tier : 서버와 같은 물리적인 분리
layer : 논리적인 분리
하나의 티어 내부를 여러 개의 논리 레이어로 나눌 수 있다.
모노리틱이 가진 한계: 예상치 못한 결합, 늦은 출시 사이클, 높은 테스트 비용, 단일 확장성, 부족한 장애 내성
(출처: https://www.slideshare.net/arawnkr/ss-224478403)
장점: 테스트 및 배포 파이프라인 구성이 간단
인프라스트럭처 구축과 운용이 간결하다.
모듈 : 서로 관련성이 높은 클래스 집합을 하나의 논리적인 단위로 묶는 구성 요소들을 모듈이라 하고 자바에서는 패키지라고 한다.
모듈화 : sw 시스템을 분해하여 서브시스템들과 컴포넌트들의 그룹으로 묶는것
시스템 내에 잘 정의된 경계를 도입해 소프트웨어의 복잡성을 다루는 것
좋은 코드 : 결합도와 응집도를 느슨하게 바꿔야한다
설계 방법
1) monoliths
2) modular monoliths
3) distrubuted monoliths
4) microservice
결합은 모듈 사이 관계에 집중
응집은 모듈 내부의 상태에 집중
'SW Architecture' 카테고리의 다른 글
[Architecture / MSA] 02. 프론트 역할과 백엔드 설계의 시작 : API (0) | 2022.07.28 |
---|