Part 1. 개발자를 위한 Kubernetes 입문

Ch 1. Kubernetes의 등장 배경

Ch 1. Kubernetes의 등장 배경

애플리케이션 개발환경의 변화와 Kubernetes의 등장

애플리케이션

  • 특정 목적을 위해 실행되는 컴퓨터 프로그램
    • 모바일 애플리케이션
    • 프론트엔드 애플리케이션
    • 백엔드 애플리케이션

애플리케이션의 개발 및 배포 과정

  1. 개발
    • 애플리케이션의 동작에 필요한 소스코드를 작성
  2. 빌드
    • 작성된 소스코드와 사용하는 라이브러리를 모아서 실행가능한 형태로 만듦
  3. 배포
    • 빌드한 애플리케이션을 실행할 수 있는 환경으로 전송
  4. 실행
    • 전송된 애플리케이션을 실행하여 동작하도록 함

애플리케이션 환경

  • 개발 환경
    • 소스코드를 작성하여 빌드한 다음 실행가능한 파일을 만들어 내는 환경
    • 개발자가 사용하는 PC, 통합개발도구(IDE), 프레임워크, 디버깅 도구, 빌드 및 배포 도구 등이 포함됨
  • 실행 환경
    • 배포된 애플리케이션이 실제로 기동되어 계속 동작하면서 원하는 기능을 할 수 있도록 유지해주는 환경
    • 애플리케이션이 구동되는 서버, 가상 머신, 클라우드 환경, 로그 관리 및 모니터링 도구, 운영체제 등이 포함됨

백엔드 실행 환경의 변화

  1. 로컬 애플리케이션
    • 네트워크에 연결되지 않고 로컬 환경에서 파일을 기반으로 동작하는 애플리케이션
  2. 물리 서버의 시대
    • 물리적인 서버를 별도의 공간에 배치한 뒤 개발한 서버 애플리케이션을 복사해서 실행
  3. 가상화와 클라우드
    • 대규모 퍼블릭 클라우드가 등장하며 가상화를 통해 자원을 동적으로 할당받아 애플리케이션 실행
  4. 컨테이너와 Kubernetes
    • 운영체제 레벨의 가상화로 하드웨어 자원 및 환경이 추상화되는 단계

컨테이너의 등장

  1. 운영체제 레벨의 가상화 자원을 격리하여 독립적인 환경을 만든 뒤 애플리케이션에 제공
  2. 시스템을 부팅하거나 따로 준비하지 않아도 논리적인 격리만으로 환경 구성이 완료됨
  3. 자원을 세밀하게 조정하고 할당할 수 있음
  4. 애플리케이션의 일관성 있는 동작을 보장
  5. 리눅스 컨테이너를 기반으로 컨테이너 기술을 대중화 시킨 프로그램이 도커(Docker)

Kubernetes의 등장

  1. 도커가 대중화되기 이전부터 구글이 내부적으로 보그(Borg)라는 오케스트레이션 도구를 사용
  2. 컨테이너 기술이 성숙해지면서 구글이 보그(Borg)를 리눅스 재단에 기부 Kubernetes라는 이름을 붙임
  3. 리눅스 재단은 하위에 클라우드 네이티브 컴퓨팅 재단을 만들고 Kubernetes를 첫번째 프로젝트로 호스팅
  4. 2015년 등장과 동시에 소프트웨어 개발과 운영 환경에 엄청난 변화를 가져옴
  5. 현 시점에서 논쟁의 여지가 없는 가장 지배적인 소프트웨어 개발 및 실행 환경

© 2020. All rights reserved.

SIKSIK