조훈, 심근우, 문성주 저 / 길벗 펼침 / 2021.6.7 초판 발행

1. 새로운 인프라 환경이 온다

1.1 컨테이너 인프라 환경이란

컨테이너 인프라 환경: 컨테이너를 중심으로 구성된 인프라 환경

컨테이너: 다른 프로세스의 영향 없이 독립적으로 실행되는 프로세스 상태, 가상화보다 가볍고 빠름

1.1.1 모놀리식 아키텍처(Monolithic architecture)

하나의 큰 목적이 있는 서비스/애플리케이션에 여러 기능이 통합되어 있는 구조

+ 초기 단계 설계가 용이
+ 개발이 단순함
+ 코드 관리가 간편함
- 한 서비스에서 생긴 수정이 다른 서비스에 영향을 미칠 가능성 높음
- 서비스가 커지면 기능 간 관계가 복잡해짐
- 여러 서비스들 중 일부만 확장하는 것이 힘듦

image.png

1.1.2 마이크로서비스 아키텍처

개별 기능을 작은 서비스로 분리, 다른 서비스와 독립되게 만든 구조

+ 개발된 서비스를 재사용하기 용이함
+ 수정되어도 타 서비스에 영향이 적음
+ 개별적 확장이 용이함
- 모놀리식 대비 높은 복잡성
- 네트워크 호출(REST)이 많아져 성능이 떨어질 수 있음

image.png

1.2 컨테이너 인프라 환경을 지원하는 도구

1.2.1 도커(Docker)

컨테이너를 만들고 관리하도록 돕는 도구. 운영체제와 무관하게 일관된 결과를 보장

1.2.2 쿠버네티스(Kubernetes)

다수의 컨테이너(도커 등)을 관리하기 위한 도구. 컨테이너 자동 배포, 컨테이너의 동작 보증, 부하에 따른 동적 확장 등을 지원

1.2.3 젠킨스(Jenkins)

CI/CD 툴