1. 소개
SeSAC 성동캠퍼스에서 진행하는 클라우드 기반의 모빌리티 융합보안과정 교육에서 Cloud & Connected Car Service 특강을 들었다.
강사님께서는 Connected Car와 관련된 서비스들을 설명해주셨지만, 해당 사업과 관련된 지식을 오랜만에 들어본 내용들과 그렇지 않은 내용이 섞여 있어서 완벽히 이해할 수는 없었다. 하지만 사업적인 내용도 충분히 있었던 덕분에 '특정한 무언가로 어떻게 고객으로부터 수익을 창출하는지'에 대한 생각이 많았던 나에게는 이번 특강을 집중해서 들을 수 있었다.
2. 관련 내용
클라우드와 관련된 내용 중에서 강사님이 자주 언급한 용어는 CI/CD, Kubernetes, DevOps였다. 그중에서 Kubernetes는 클라우드 전문가가 아닌 나에게 생소한 단어였다. 특강을 듣고 기존에 알고 있었던 내용도 복습할 겸 모르는 부분과 함께 다시 공부하게 되는 계기를 갖게 되었다.
2-1. CI/CD
CI/CD를 간단하게 설명하면 지속적인 통합과 배포를 의미한다.
CI는 코드의 커밋과 병합을 자동으로 테스트하고 빌드 또한 자동으로 한다는 개념이다.
CD는 CI를 통해 빌드된 프로그램을 자동으로 출시 및 배포한다는 개념이다.
CI/CD는 DevOps를 수월하게 하기 위한 방식으로 이해하면 된다.
2-2. DevOps
DevOps를 간단하게 설명하면 개발자 혹은 개발팀이 개발 이후 운영까지 담당한다고 이해하면 될 것이다.
기존에는 특정 프로그램에 대한 개발이 완료되면, 개발팀이 개발된 프로그램과 프로그램에 관한 문서(documentation)를 운영팀에게 인수인계했다. 하지만 위의 방식은 프로그램 또는 문서의 내용이 커질수록 개발팀과 운영팀 간의 인수인계 과정이 점점 어려워진다.
따라서 위의 단점을 개선하기 위해 개발팀과 운영팀을 병합해서 프로그램에 대한 개발과 운영을 같이 한다는 DevOps방식이 등장하게 되었다. DevOps방식을 적용하면 개발팀과 운영팀이 병합되어 시간과 인력을 절약할 수 있다. 특히 운영에 자동화할 수 있는 부분을 자동화한다면 시간을 많이 절약할 수 있다.
3. Kubernetes
K8s라고도 불리는 Kubernetes는 프로그램의 배포, 확장, 관리를 자동화하기 위한 오픈 소스 프로그램이다. Kubernetes는 컨테이너 배포 방식이며, 컨테이너 배포 방식은 그림의 오른쪽 방식과 같다.
전통적인 배포 방식은 동일한 OS에 여러 어플리케이션을 실행하는 방식이다. 하지만 해당 방식으로는 어플리케이션마다 할당받는 리소스가 다르므로, 특정 어플리케이션이 과도하게 리소스를 받아 다른 어플리케이션의 성능을 저하시키는 단점이 존재했다. 그림의 왼쪽 방식이다.
가상화 배포 방식은 전통적인 배포 방식의 단점을 개선하여 나온 방식이다. Hypervisor를 통해 운영체제 내부에 가상 머신(VM)을 구성하여 가상머신 내부에 어플리케이션을 배포한다. 배포된 어플리케이션은 가상머신 내부의 리소스를 활용하므로 가상머신의 구성만 잘 설정하면 리소스를 잘 분배할 수 있다.
컨테이너 배포 방식은 가상화 배포 방식과 비슷하지만, OS를 공유하는 것에 차이가 있다. Hypervisor 대신 컨테이너 런타임방식을 사용하며, 이 방식은 Hypervisor에 비교하면 여러 장점이 있다. 가상화 배포 방식을 통해 배포하기 위해서는 가상머신에 OS를 설치해야했는데, OS 자체가 요구하는 리소스도 필요했기 때문에 컨테이너 방식은 이런 리소스를 절약할 수 있다.
교육 과정이 클라우드에 대한 보안 중심이므로 내용은 여기까지 쓰겠다. 배포 방식의 발전은 배경지식으로 알아두는 것이 좋다고 생각되어 작성하게 되었다.
4. 결론
오리엔테이션인 첫날에 클라우드와 관련된 배경지식을 알려줌으로써 교육생들에게 알맞은 특강이었다고 생각한다. 덕분에 클라우드 산업에 사용되는 일부 용어들을 알아볼 수 있었다. 이번 특강이 교육에 시너지 효과를 줄 것으로 생각한다.
5. 참고자료
CI/CD
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이
CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다.
www.redhat.com
DevOps
https://aws.amazon.com/ko/devops/what-is-devops/
DevOps란 무엇인가요? - DevOps 모델 설명 - Amazon Web Services(AWS)
소프트웨어와 인터넷은 쇼핑에서 엔터테인먼트 그리고 뱅킹에 이르기까지 전 세계와 산업을 변화시켰습니다. 이제 소프트웨어는 비즈니스를 지원하는 것에 그치지 않고, 비즈니스의 모든 부분
aws.amazon.com
Kubernetes
Cloud Native Landscape
The Cloud Native Landscape organizes all cloud native open source projects and proprietary products into categories, providing an overview of the current ecosystem
landscape.cncf.io
https://kubernetes.io/docs/concepts/overview/
Overview
Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools
kubernetes.io