
Kubernetes : 컨테이너화된 애플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈 소스 플랫폼.
왜 컨테이너를 사용할까?
CI/CD* (지속적 통합, 지속적 배포) : 사용자에게 새로운 기능과 서비스를 빠르고 안정적으로 제공할 수 있음
그러나 개발자들이 오픈 소스를 사용해 애플리케이션을 개발할 때, 오픈소스의 버전이 바꾸미에 따라 같은 팀의 개발자 사이에 다른 버전을 사용하는 상황이 발생, 개발 환경 차이가 발생하여 생산성과 안정성이 떨어지게 된다.
컨테이너 기술은 애플리케이션 실행에 필요한 라이브러리나 운영체제 패키지 등을 모두 담아서 Immutable Infrastructure (불변의 실행 환경)을 만들고 개발자들 간에 테스트, 운영환경 차이를 없애 개발 생산성 증가와 안정적인 배포를 가능케 한다.
- CI/CD(Continuous Integration/Continuous Delivery) : CI란 소프트웨어 개발시 테스트단계에서만 테스트 하는것이 아닌 일상적인 빌드와 테스트를 수행하여 실제 동작을 확인하는 사이클을 돌면서 소프트웨어 품질을 관리. 일반적으로 CI를 위한 전용 소프트웨어 or SaaS를 이용해 자동화. CD는 CI의 범위를 확장해 통합 테스트를 위한 스테이징 환경에 배포, 정식 서비스 배포까지 자동화도구를 사용해 수행.
쿠버네티스는 구글의 사내 운영 시스템인 Borg를 오픈소스로 만든 것. 다음과 같은 기능을 제공