https://velog.velcdn.com/images/augus-xury/post/550d1227-dd24-41e9-a56a-cb96e7aac7db/image.png

어플리케이션 아키텍처에는 크게 3가지 종류가 있다.monolithic 앱은 모든 데이터에 대한 단일 데이터베이스를 사용해 단일 코드베이스로 모든 기능 구현하는 것이다.반면 SOA는 monolithic architecture를 UI/DB/비즈니스 등 3티어 식의 가로로 나누는 것이고, 마이크로서비스는 수직적으로 자르는 것이다.

https://velog.velcdn.com/images/augus-xury/post/faac7266-de39-40d4-8afe-933488c08bf2/image.png

마이크로서비스 아키텍처(MSA)란:

SOA에서는 용어가 다 표준화돼 있지만, MSA에서는 도메인 별로 분리돼 있음. 중앙에서 통제하려고 하면 결재 받는 등 시간이 너무 많이 걸리기 때문에 환경변화에 밀접하게 대응하라는 의미.

마이크로서비스는 공통서비스(웹 ui, 모바일 ui , 인증 ) 등은 별도 취급하고 여러 코드베이스가 있으며 각 서비스는 자체 데이터 관리한다.마이크로 서비스 단위란? 독립적으로 배포가 돼야 한다. 그래야 민첩성이 확보된다. 각 서비스 유지 팀이 5명 정도 돼서 책임지기 때문에 각자 db를 갖게하는 것이 특징이다.

MSA 장단점?장점✔︎ 독립적으로 빠른 속도가 장점✔︎ 서비스마다 다른 언어와 프레임 워크 사용 가능⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻⎻단점✔︎ 복잡도가 증가하고, 서비스 시간이 지연✔︎ 서비스 간 트래픽 보안 우려(그래서 복잡도에 대한 솔루션 사용)

최근엔 서비스 하나에 컨테이너 하나 이상 해서 배포한다고 한다. 그러나 컨테이너가 많아지면 컨테이너 관리도 문제가 된다. 결국 어플리케이션 설계의 핵심은 서비스 경계를 정의하는 것이다.

https://velog.velcdn.com/images/augus-xury/post/3bbeb23b-0006-419b-bbf7-add17ea7e0a9/image.png

이중화

이중화란 한 쪽이 망가지면 바로 다른 쪽이 액티브한 상태가 되는 것이다. 비용 두배로 든다는 단점이 있지만, 서비스 장애를 염두에 둔다면 이중화는 기본이다.클라우드의 경우 안정적인 이중화를 위해 Zone이라고 불리는 데이터 센터와 legion이라고 불리는 데이터 센터 2~3개로 구성돼 있다.

Hadoop의 경우 빅데이터 솔루션으로 하나를 복사하면 2~3개 카피본이 만들어진다. 지역별로 3개 데이터센터가 하나의 리전을 구성한다. 이를 3카피 방식이라고 한다.

SLI/SLA/SLO