온프레미스 환경 : 엔지니어가 개발 환경을 구축하면 사용자가 그에 해당하는 도구들을 모두 설치해야 하는 환경 (고전적인 인프라 환경임)
서비스로서의 인프라 환경(IaaS) : 이미 구성된 환경을 사용자가 필요에 따라서 선택 및 조합해서 사용할 수 있게 제공되는 환경
컨테이너 인프라 환경 : 컨테이너를 중심으로 구성된 인프라 환경
컨테이너 : 하나의 운영 체제 커널에서 다른 프로세스에는 영향을 받지 않고 독립적으로 실행되는 프로세스 상태 -> 가상화 상태에서 프로세스보다 가볍고 빠르게 동작
모놀리식 아키텍처 : 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 하나로 통합돼 있는 구조
-> 코드 관리가 간편
-> but, 수정이 많을 경우 다른 서비스에 영향 미칠 가능성이 커짐
마이크로서비스 아키텍처(MSA) : 기능들이 독립된 서비스를 구성하고 있는 구조
-> 서비스 변경시에 다른 서비스에 영향을 미칠 가능성이 줄어듦
-> IaaS 환경에 적합!
우리가 공부할 컨테이너 인프라 환경은 마이크로서비스 아키텍처로 구현하기에 적합
컨테이너는 마이크로서비스 아키텍처의 서비스와 1:1로 완벽하게 대응됨
컨테이너 인프라 환경의 구성 : 컨테이너, 컨테이너 관리, 개발환경 구성 및 배포 자동화, 모니터링
도커 : 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구
도커로 애플리케이션을 실행하면 운영 체제 환경에 관계 없이 독립적인 환경에서 일관적인 결과를 보장
쿠버네티스 : 다수의 컨테이너를 관리하는 데 사용. 컨테이너의 자동 배포와 배포된 컨테이너에 대한 동작 보증, 부하에 따른 동적 확장 등의 기능을 제공
젠킨스 : 지속적 통합(CI)과 지속적 배포(CD)를 지원
-> 개발한 프로그램의 빌드, 테스트, 패키지화, 배포 단계를 모두 자동화해 개발 단계를 표준화함
-> 단일 기능을 빠르게 개발해 적용해야 하는 환경인 컨테이너 인프라 환경에서 매우 적합한 도구
프로메테우스 & 그라파나 : 모니터링을 위한 도구
프로메테우스 : 상태 데이터를 수집
그라파나 : 프로메테우스로 수집한 데이터를 관리자가 보기 좋게 시각화
이 책에서 구성할 컨테이너 인프라 환경
이 책에서 학습할 컨테이너 인프라 환경에서는 컨테이너가 마이크로서비스 아키텍처의 서비스와 1:1로 대응되어 생산성이 향상되기 때문에 MSA를 채택한 것을 알게 되어서 무작정 MSA를 사용하는 것이 아니라, 이유 있는 선택인 것을 깨달았다.
데이터를 시각화하는 도구는 그라파나 외에도 키바나가 있는데, 키바나는 프로메테우스와 연결할 때 구성이 복잡하므로 간결하게 사용할 수 있는 그라파나를 책에서 다룬다는 것을 새로 알게 되었다.