클라우드 인프라의 등장으로, 초기 개발 준비 시간을 단축할 수 있었으며, 사용량에 따라 유동적으로 서비스 비용을 바꿀 수 있다.
사용량에 따른 성능 및 가용성을 높이는 방법
업 = 시스템 자체의 물리적 용량을 증가하는 방법
아웃 = 용량이 같은 다수의 장비를 병령 추가함.
특정 서비스만 탄력성 있게 확장할 수 있다.(시스템을 블록처럼 분리하면 됨. -> 독립적인 서비스 연계로 구성한다.)
클라우드 플랫폼 중 하나의 클라우드 파운드리를 서비스하는 피보탈에서는 이처럼 큰 덩어리로 클라우드 혼경에 올라갈 수 있게한 앱을 클라우드 친화 애플리케이션 이라함.
클라우드 네이티브 애플리케이션 독립적으로 분리되어 배포될 수 있는 조각으로 구성된 애플리케이션
모노리스 하나의 단위로 개발되는 일체식 애플리케이션
보통 클라이언트, 서버, 데이터베이스로 3티어로 나뉨.
모노리스 단점
1. 작은 변화라도 전체를 빌드.
2. 단일 프로세스에서 실행
로드 밸런서를 앞에 두고 여러 인스턴스 위에서 큰 덩어리를 복제해 수평으로 확장함.
반면에 마이크로서비스는 서버측이 여러개로 구성됨.
각기 저장소 다른것이 장점.
폴리그랏 특정 서비스를 구축하는데 사용되는 언어나 저장소를 자율적으로 선택할 수 있는 방식
MSA는 SOA 와 달리. 데이터 저장소까지 분리한다. (둘 다 애플리케이션 모듈화함)
인프라 구성부터 애플리에키션 빌드, 배포를 정의함.
하드웨어 리소스 설정을 동일하게 통제 가능.
상황에 따른 검증 가능하며 적절한 설정을 쉽게 복제하고 공유할 수 있게 됨으로 인프라를 효율적으로 관리가능
마이크로서비스에서는 비동기 이벤트 처리를 통해 데이터 일관된 처리를 한다. 결과적 일관성 이라고 한다.
두 서비스 데이터가 일시적으로 불일치하는 시점이 잇고, 일관성이 없는 상태지만 결국에는 두 데이터가 같아진다.라는 개념
별도의 로컬 트랜잭션을 각각 수행하고 일괄성이 달라진 부분은 체크해서 보상 트랜잭션으로 일관성을 맞추는 개념.
- 주문 서비스가 주문 처리 트랜잭션 수행
동시 주문 이벤트 발생
주문 이벤트 메시지 큐로 전송
배송 서비스가 주문 이벤트 인식- 배송 서비스가 주문 처리에 맞는 배송 트랜잭션 수행
- 배송 처리 트랜잭션 중 롤백 시
배송 처리 실패 이벤트 발생 후 메시지 큐로 전송
주문 서비스가 배송 처리 실패 인식- 주문 서비스는 주문 취소(보상 트랜잭션) 수행.