DEV-STUDY/Infra

[쿠버네티스] 쿠버네티스를 사용하는 이유? (가볍게)

HwangJerry 2023. 11. 12. 03:09
오늘날 많은 IT 기업에서 쿠버네티스를 사용하고 있는데, 이들이 k8s(쿠버네티스)를 사용하는 이유를 단순히 "요즘은 서비스 구조로 대부분 MSA를 적용하니까" 보다 조금은 더 디테일한 이유를 간단하게 파악해보기 위해선 클라우드 컴퓨팅을 왜 사용하는지부터 알아야 합니다.

 

 

클라우드 컴퓨팅을 사용하는 이유

컴퓨터를 이용하여 서비스 환경을 구축하기 위해선 우리가 일상적으로 사용하는 컴퓨터(PC)와 비교하여 더 많은 연산량을 처리해야 했고, 제너럴하게 이용되는 PC와 달리 보다 목적에 최적화된 구조가 필요했습니다.

 

이를 위해 서버 컴퓨터라는 개념이 등장하게 되었습니다.

 

사실 크게 다르진 않고, CPU나 마더보드, 그리고 주변 장치(네트워크)로 이어지는 길이가 일반 컴퓨터에 비해 넓고 빠르며, 설계 목적이 '365일 중단없는 서비스'를 제공하기 위해 높은 사양으로 구축됩니다. 또한 그 하드웨어 디자인에서도 열을 효율적으로 배출할 수 있도록 설계되고, 열을 낮추기 위해 서버실은 냉각 시스템이 24시간동안 돌아가곤 합니다.

 

이러한 인프라를 구축하는 방식 중 현재 사용하는 대표적인 방식들을 위주로 간단히 안내해 드리겠습니다.

 

메인프레임

출처 : 나무위키

 

메인프레임은 연구조사, 산업 및 소비자 통계, ERP, 금융 트랜잭션 처리와 같은 정부 연구기관과 대기업의 중요한 응용 프로그램들을 사용하는 데 쓰이는 중앙 집중식 처리 전용 컴퓨터입니다.

1664년, IBM에서 출시한 시스템/360이 현대식 메인프레임의 시초입니다. IBM에서 오늘날 주로 공급하는 메인프레임에는 z/os 또는 리눅스를 사용합니다.

메인프레임은 안정성과 성능이 매우 높아 아직까지도 많은 곳에서 사용하는 서버 솔루션이지만, 가격과 운영 비용 그리고 유지보수성이 높은 인프라 구축 방법임에는 부정할 수 없습니다. (말은 이렇게 하지만, 단적으로 말해서 IT 시장은 변동성이 큰 시장으로 평가받는 것에 비해 메인프레임을 활용하여 서버 환경을 구축하는 것은 유연하지 않은 선택지이기 때문에 현실적으로 쉽게 선택할 수 없는 방식입니다.)

 

유닉스 / 리눅스

출처 : 소프트정보서비스

메인프레임으로 처음부터 서버 환경을 구축하기에는 부담스러웠기에, 물리적인 크기가 상대적으로 작으면서 접근성이 높은 서버 구축 방법에 대한 고민을 하게 되었고, 이에 따라 몇몇 회사에서 기본적으로 모든 OS의 조상격이라 불리우는 유닉스를 이용한 서버 환경을 만들게 됩니다.

 

하지만 향후 x86이 등장하게 되는데, Unix는 호환되는 특정 CPU가 존재하였기에 벤더에 대한 종속성이 매우 높았던 반면, Linux는 벤더 종속성 없이 모든 cpu에서 실행 가능한 운영체제였고, 리눅스 오픈소스가 무료였기 때문에 Linux 서버 시장 점유율은 Unix 대비 무섭게 증가하였습니다. 결국 유닉스 대신 리눅스 환경으로 서버를 구축하는 것이 초기 구축 비용 뿐만 아니라 운영 비용 측면에서도 더욱 이점이 많았기 때문에 대다수의 서버는 리눅스를 이용한 환경이 되었습니다. (현재도 온프레미스 환경으로 메인프레임을 구축할 때에도, 일반 서버 컴퓨터 환경을 구축할 때에도 리눅스가 많이 사용되며, 이는 클라우드 환경에서도 리눅스를 많이 사용하여 클라우드로 전환할 때에도 유리합니다.)

 

 

클라우드

출처 : https://velog.io/@jaden_94/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EC%BB%B4%ED%93%A8%ED%8C%85feat.AWS

 

하지만 사업을 위해서는 데이터센터 등을 처음부터 지어야 하는 상황이었던 IT 기업들은 비용 절감이라는 패러다임에서 자유로울 수 없었습니다. 하지만 향후 물리적인 컴퓨팅 자원과 네트워크 기술을 통해 사용한 만큼만 비용을 지불하면서 서버 환경을 구축할 수 있었기에 물리적으로 구현해야 하는 온프레미스 방식보다 클라우드 방식이 비용적인 면에서 확실히 접근성이 뛰어났습니다. 특히나 스케일링이라는 관점에서도 클라우드 방식이 상당한 이점을 갖고 있는 것으로 이해하는 것은 어렵지 않았습니다.

 

 

 

쿠버네티스를 사용하는 이유?

 

출처 : ResearchGate

 

처음 클라우드 서버 환경이 등장하면서 AWS EC2와 같은 가상 머신(virtual machine)이라는 기술을 사용하여 논리적인 서버 공간 내에서 CPU와 메모리를 할당받은 컴퓨터에 OS를 설치하고 난 뒤, 그 안에 자바, DB 등의 온갖 의존성을 설치한 뒤 배포가 이루어졌습니다. 하지만 가상 머신 환경으로만 운영하기에는 운영 측면에서 업데이트를 할 때마다 config나 사용 라이브러리의 버전을 매번 일일히 관리해줘야 하는 등 형상 관리 측면에서 매우 번거롭고 부담이 되는 방식이었습니다. 이는 MSA가 유행하기 시작하면서 업데이트 및 배포가 자주 발생하게 되면서 더욱 강력하게 불편함을 느끼게 되었습니다.

 

 

출처 : knoldus blog

그래서 나온 것이 도커 등의 컨테이너 기술입니다. 격리된 공간에서 두 개의 프로세스를 동작시키는 가상화 기법이었고, 이는 가상 머신으로만 배포를 하던 것에 비해 확실히 가벼웠고, 확장성이 뛰어났습니다. VM에 비해 뛰어난 형상 관리 능력을 가진 컨테이너 기술을 활용하기 위하여 Docker라는 오픈소스를 활용하는데, 이는 git 만큼이나 전 세계적으로 많이 사용하는 기술이 되었습니다.

 

 

출처 : kt cloud 블로그

이처럼 이제 대다수의 웹 서비스 배포 과정에서 컨테이너를 사용하게 되었는데, 이러한 컨테이너가 적은 경우에는 충분히 사람이 컨트롤할 수 있지만, 만약 100개 1000개 정도의 컨테이너를 운영하는 상황에서는 사람의 손으로 모든 컨테이너를 관리하기 어려울 것입니다. 따라서 컨테이너 오케스트레이션 툴로서 쿠버네티스를 사용하고 있습니다. 만약 업데이트를 한다고 가정해보면, 버전 1짜리가 세 개가 존재할 때, 3개의 컨테이너를 모두 죽이고 버전 2 컨테이너를 생성하여 연결하는 롤링 업데이트를 하자니 두 시간이 걸리게 되는 것입니다. 따라서 쿠버네티스에서는 블루그린 배포나 카나리 배포 등을 실현하여 배포 프로세스를 간소화하여 관리해주고, 오토스케일링을 지원합니다.

 

 

 

레퍼런스:

http://www.ugenssnc.com/cloud1.html

https://www.bemax.co.kr/%ec%a0%95%eb%b3%b4%ea%b2%8c%ec%8b%9c%ed%8c%90/news?mod=document&uid=42

https://ko.wikipedia.org/wiki/%EB%A9%94%EC%9D%B8%ED%94%84%EB%A0%88%EC%9E%84#:~:text=%EB%A9%94%EC%9D%B8%ED%94%84%EB%A0%88%EC%9E%84(mainframe%2C%20%ED%81%B0%20%EC%87%B3%EB%8D%A9%EC%9D%B4,%EC%9D%84%20%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94%20%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%B4%EB%8B%A4.

https://zdnet.co.kr/view/?no=20191124222540