도커와 쿠버네티스를 헷갈리는부분들이 종종있는데,
결론부터 말하자면 둘은 다르다.
도커는 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다.
애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고, 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 및 운영하기 위한 오픈소스 가상화 플랫폼 이다.
한마디로 말해 도커는 그냥 우리가 흔히 쓰는 Mysql, Kafka 이런 애들을 이미지로 모아두고 이걸 구동시켜, 컨테이너로 실행하게 해주는 플랫폼임
쿠버네티스는 이렇게 실행된 컨테이너를 자동으로 배포, 확장 및 축소 관리가 가능하도록 만들어진 시스템이다.
클라우드 네이티브 애플리케이션을 제대로 설계하고 구축할 수 있도록 해주는 컨테이너 오케스트레이션 플랫폼이다.
✅ 클라우드 네이티브는 무엇인가?
클라우드 핵심 기술로 손꼽히는 쿠버네티스를 알기 위해서는 우선 ‘클라우드 네이티브’라는 개념을 이해해야 한다.
애플리케이션 개발 환경과 인프라 구조는 생산성과 민첩성을 높이는 방향으로 계속해서 변화해 왔다.
클라우드 네이티브는 ‘클라우드의 장점을 최대한 활용할 수 있도록 애플리케이션을 개발하고 또 구축하고 실행하는 방식’ 이다.
클라우드 장점 이용해서 개발도 하고 배포도 하고 실행까지 하는!! 그야말로 다 하는거임
그림을 보면 요새 대세라는 기술이 다 들어 있는걸 볼 수 있음!
클라우드 네이티브의
방법론은 데브옵스(DevOps),
운영 구조는 마이크로서비스,
운영 인프라는 컨테이너 ,
지속적인 통합/배포(CI/CD) : 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 자동화 프로세스
여기서 잠깐 데브옵스의 개념을 알고 가자
✅ 데브옵스(DevOps)?
"Development(개발)"과 "Operations(운영)"의 합성어로, 이 두 영역 간의 협업과 소통을 강조하는 개념
이 정의긴 하지만 결국 개발후 배포/운영을 자동화하는게 목적이다.
이를테면 이번 프로젝트에 이용한 AWS CodePipeline에서
- GitHub 프로젝트를 연동하여 코드 변경이 GitHub 리포지토리에 푸시될 때마다 AWS가 자동으로 파이프라인을 실행하여 빌드 및 배포를 수행해준다.
- AWS CodeCommit(소스)
- AWS CodeBuild(빌드)
- AWS CodeDeploy(배포)
✅ MSA는 아래게시글 참조
https://ssmyefrin.tistory.com/50
✅ 그렇다면 컨테이너는 뭐지?
컨테이너는 환경과 상관없이 실행을 위해 필요한 모든 요소를 포함하는 소프트웨어 패키지다.
장점
컨테이너는 애플리케이션 간에 운영체제(OS)를 공유하므로 VM과 달리 프로그램의 구동을 위해 OS를 매번 설치할 필요가 없다.
그덕에 마치 하나하나가 별도의 서버인 것처럼 사용할 수 있게 만들어져 있는 느낌이다.
그렇기때문에 다른 컴퓨팅 환경으로 이동하더라도 안정적으로 실행 가능하다
애플리케이션을 실행하기 위한 컴퓨팅 작업을 패키징하여 이미지로 만들기 때문에 경량화되어 있고, 종속적이지 않아 이식성을 실현할 수 있고 독립적입니다. 즉, 소프트웨어를 컨테이너화시키면 인프라와 상관없이 어디서나 동일하게 실행할 수 있다는것이다.
인프라에 구애받지 않으니 환경을 구축하거나 테스트하는데 필요한 시간이 오래 걸리지 않음.
같은 기반 위에서 한꺼번에 개발된 게 아니니, 고객의 니즈에 맞춘 수정이나 교체도 훨씬 용이하다.
프로세스 수준에서 실행되어 필요한 컴퓨팅 자원의 소비가 적고 동작과 확장(scale-out)도 빠르다.
즉, 애플리케이션을 포장하고 실행하기에 최적의 방법이라고 할 수 있다.
But! 단점
OS를 공유하는 방식이기 때문에 어떤프로그램이 OS에문제를일으킬경우에는 OS에서 구동중인 전체 컨테이너의 문제가 될 가능성이있다.
✅ 그렇다면 쿠버네티스는?
쿠버네티스를 한마디로 정의하자면, ‘오픈소스 컨테이너 오케스트레이션 플랫폼’.
컨테이너 오케스트레이션이 컨테이너의 배포, 관리, 확장 및 네트워킹을 자동화하는 것을 의미하기 때문에 쿠버네티스란 컨테이너화된 애플리케이션의 관리를 자동화할 수 있도록 도와주는 플랫폼이다..
구글이 십수 년 간 방대한 컨테이너를 운영한 경험을 바탕으로 공개한 오픈소스 시스템이며, 외국 웹에서는 줄여서 ‘K8s’라고 표기하기도 한다. (구글님 ㄱㅅㄱㅅ)
쿠버네티스는 데브옵스, MSA 등과 매우 밀접한 관계에 있는데, 이는 당연하다. 모두 클라우드 네이티브를 가장 효과적으로 구현하기 위한 일환으로 사용되고 있기 때문이다. 쿠버네티스를 이용하여 MSA를 관리할 때, 주요 이점이다.
- 컨테이너 오케스트레이션 비용 절감
- MSA를 위한 데브옵스 효율성 향상
- 멀티 클라우드 환경에서 워크로드 배포 용이
- 종속 가능성 없는 이식성 제고
- 배포 자동화 및 확장성 강화
- 클라우드 환경에서의 앱 안정성 및 가용성 강화
- 오픈소스 생태계의 일부로서 이용하기 편리
쿠버네티스는 보유 리소스를 최대 활용하고 효율적인 워크플로우를 제공하기 때문에 자연히 비용이 절감된다.
또, 이전에는 수동으로 처리되었던 많은 데브옵스 프로세스를 자동화하고 소프트웨어 개발자의 작업을 단순화 해준다.
자연히 어플리케이션의 확장성을 높여주고 유연하게 뒷받침하며 이를 통해 생산성도 커지게된다.
또 쿠버네티스 환경에서 쓸 수 있으면 OS와 관계없이 이용할 수 있는데,
즉, 쿠버네티스를 이용하면 구글에서 사용하던 컨테이너화된 애플리케이션을 AWS로 그대로 마이그레이션할 수도 있다는 소리다.
퍼블릭 클라우드는 물론, 프라이빗 클라우드 등 다양한 유형의 인프라에서 컨테이너를 관리할 수 있고 자동으로 배포, 확장 및 축소가 가능하다. 컨테이너화된 애플리케이션의 안정적 실행도 지원. 마지막으로 가장 많은 사람들이 이용하는 오픈소스 프로젝트 중 하나이니 만큼, 지속적인 피드백과 이에 따른 개선이 뒷받침되고있다.
걍 좋으니 쓰자
아무튼 쓰자.
참조
'IT' 카테고리의 다른 글
[K8S] 쿠버네티스로 Jenkins 설치하기 (1) | 2023.12.18 |
---|---|
[K8S] 쿠버네티스로 Spring Boot 프로젝트 배포해보기(1) (1) | 2023.12.18 |
[JAVA] Thread 개념 (single/multi) (0) | 2023.12.15 |
[JAVA] 메모리영역 (0) | 2023.12.15 |
[Python] 동영상 수집 모듈 만들기 (1) | 2023.11.30 |