Part 1. 개발자를 위한 Kubernetes 입문
Ch 1. Kubernetes의 등장 배경
Ch 1. Kubernetes의 등장 배경
애플리케이션 개발환경의 변화와 Kubernetes의 등장
애플리케이션
- 특정 목적을 위해 실행되는 컴퓨터 프로그램
- 모바일 애플리케이션
- 프론트엔드 애플리케이션
- 백엔드 애플리케이션
애플리케이션의 개발 및 배포 과정
- 개발
- 빌드
- 작성된 소스코드와 사용하는 라이브러리를 모아서 실행가능한 형태로 만듦
- 배포
- 빌드한 애플리케이션을 실행할 수 있는 환경으로 전송
- 실행
애플리케이션 환경
- 개발 환경
- 소스코드를 작성하여 빌드한 다음 실행가능한 파일을 만들어 내는 환경
- 개발자가 사용하는 PC, 통합개발도구(IDE), 프레임워크, 디버깅 도구, 빌드 및 배포 도구 등이 포함됨
- 실행 환경
- 배포된 애플리케이션이 실제로 기동되어 계속 동작하면서 원하는 기능을 할 수 있도록 유지해주는 환경
- 애플리케이션이 구동되는 서버, 가상 머신, 클라우드 환경, 로그 관리 및 모니터링 도구, 운영체제 등이 포함됨
백엔드 실행 환경의 변화
- 로컬 애플리케이션
- 네트워크에 연결되지 않고 로컬 환경에서 파일을 기반으로 동작하는 애플리케이션
- 물리 서버의 시대
- 물리적인 서버를 별도의 공간에 배치한 뒤 개발한 서버 애플리케이션을 복사해서 실행
- 가상화와 클라우드
- 대규모 퍼블릭 클라우드가 등장하며 가상화를 통해 자원을 동적으로 할당받아 애플리케이션 실행
- 컨테이너와 Kubernetes
- 운영체제 레벨의 가상화로 하드웨어 자원 및 환경이 추상화되는 단계
컨테이너의 등장
- 운영체제 레벨의 가상화 자원을 격리하여 독립적인 환경을 만든 뒤 애플리케이션에 제공
- 시스템을 부팅하거나 따로 준비하지 않아도 논리적인 격리만으로 환경 구성이 완료됨
- 자원을 세밀하게 조정하고 할당할 수 있음
- 애플리케이션의 일관성 있는 동작을 보장
- 리눅스 컨테이너를 기반으로 컨테이너 기술을 대중화 시킨 프로그램이 도커(Docker)
Kubernetes의 등장
- 도커가 대중화되기 이전부터 구글이 내부적으로 보그(Borg)라는 오케스트레이션 도구를 사용
- 컨테이너 기술이 성숙해지면서 구글이 보그(Borg)를 리눅스 재단에 기부 Kubernetes라는 이름을 붙임
- 리눅스 재단은 하위에 클라우드 네이티브 컴퓨팅 재단을 만들고 Kubernetes를 첫번째 프로젝트로 호스팅
- 2015년 등장과 동시에 소프트웨어 개발과 운영 환경에 엄청난 변화를 가져옴
- 현 시점에서 논쟁의 여지가 없는 가장 지배적인 소프트웨어 개발 및 실행 환경