[Cloud Infra] 서비스 인프라 환경과 클라우드 인프라
인프라를 통한 서비스 설계의 구조는 크게 두 가지가 있다. 모놀리식 아키텍처와 마이크로서비스 아키텍처이다.
모놀리식 아키텍처
모놀리식 아키텍처는 하나의 목적을 가진 서비스나 애플리케이션에 여러 가지 기능이 통합되어 있는 아키텍처를 의미한다.
여러 가지가 통합된 상태로 결합한 구조이기 때문에 단순하게 개발할 수 있고 개발 초기나 소규모 환경에서 설계하기 좋다는 장점이 있으나 규모가 커지면서 유지 보수가 까다로워 진다는 단점이 있다. 경제로 치면 규모의 불경제가 발생했다고 생각하면 된다. 규모가 커지면서 오히려 유지 보수 들어가는 비용, 관리 비용 등으로 효율이 떨어지는 것이다.
마이크로 아키텍처
마이크로 아키텍처(MSA, Microservices Architecture)는 각 서비스가 독립된 상태에서 개별적으로 서비스를 구성하는 하나의 애플리케이션 구조이다.
각 서비스는 API 게이트웨이를 거치며 REST API를 통해서 요청을 전달받아 사용자에게 서비스를 제공한다. 서비스 디스커버리로 서비스를 파악하고 이벤트 버스를 통해 각 서비스가 내부 통신을 할 수 있도록 한다.
컨테이너
이 각각의 서비스를 포장하여 컨테이너로 구성하여 배포와 확장을 할 수 있도록 한다. 이러한 컨테이너를 통한 마이크로서비스 아키텍처를 구성한 환경이 컨테이너 인프라 환경이라고 한다.
컨테이너 인프라 환경
이때의 컨테이너를 만들고 관리할 수 있도록 해주는 컨테이너 도구는 대표적으로 도커가 있다. 도커는 컨테이너 환경에서 애플리케이션을 독립적으로 실행한다.
각각의 컨테이너를 관리하고 컨테이너 인프라 환경에 필요한 다양한 기능을 관리하는 도구는 쿠버네티스(Kubernetes, K8S - K(ubernete 글자 8개)S)가 대표적이다. 서비스 디스커버리, 이벤트 버스, 외부 서비스 사용 등의 기능을 돕는다.
지속적 통합(CI, Continuous Integration)과 지속적 배포(CD, Continuous Deployment)를 지원하여 개발 환경 구성 및 배포 자동화를 하기 위한 도구로는 젠킨스가 대표적이다. 개발을 빠르게 적용하고 배포할 수 있도록 한다.
모니터링을 위해서는 프로메테우스와 그라파나를 주로 사용한다.