Revolution

2023. 7. 22. 21:02쿠버네티스/입문

728x90
반응형

혁명이란 '회전하는 움직임'을 의미하며 컴퓨팅은 어느 정도 그 시작점으로 돌아왔다.

오늘날 우리가 컴퓨팅 자원을 공유하는 방식을 "클라우드"라 불리며, 메인프레임의 사용 시간을 공유하는 것으로 시작된 혁명은 다시 원점으로 돌아왔다.

 

클라우드의 핵심

컴퓨터를 구매하는 대신 "컴퓨팅 리소스를 구매하는 것"이다. 

즉, 다른사람이 확장, 관리, 업그레이드를 해주는 컴퓨터의 시간을 사는 것이다.

 

클라우드는 원격 컴퓨팅 파워만 있지 않다. 분산 시스템에 관한 것이기도 하다. 컴퓨팅 리소스를 구매하여 소프트웨어를 실행할 수 있으며 본질적으로 다른 사람의 소프트웨어를 사용하는 클라우드 서비스를 임대할 수도 있다. 예를 들어 시스템을 감시하고 문제 발생 시 알림을 받기 위한 프로그램을 사용한다면 서비스형 소프트웨어(SaaS)라 부르는 클라우드 서비스를 사용하는 것이다.

서비스형 인프라(laas)

서비스를 운영하기 위해 구매하는 클라우드 인프라를 의미한다. 인프라 구매에 투자 비용이 발생하지 않으며, 구축, 업그레이드 또한 필요하지 않다(다른 사람(기업)이 해준다). 클라우드는 전기나, 물처럼 구매해 쓸 수 있는 상품일 뿐이다.

 

하드웨어 아웃소싱은 클라우드의 일부일 뿐이다. 클라우드는 소프트웨어를 아웃소싱할 수 있게 해준다.  운영 체제, 데이터베이스, 클러스터링, 복제, 네트워킹, 모니터링, 고가용성, 큐와 스트림 처리, 코드와 CPU 사이에 걸친 수많은 소프트웨어 계층과 구성을 아웃소싱할 수 있다. 관리형 서비스는 이러한 고된 일을 거의 모두 처리할 수 있다.

데브옵스 탄생

데브옵스 이전에 소프트웨어의 개발과 운영은 본질적으로 서로 다른 업무로 두 개의 다른 그룹이 맡아 수행했다. 

개발자는 소프트웨어를 작성, 사용 환경에서 소프트웨어를 실행하고 관리하는 운영자에게 전달했다. 개발과 운영은 각자 매운 전문적인 일이었다. 

 

개발은 신속하게 새로운 기능을 제공하는 데 주력 / 운영은 장기적이고 안정적으로 신뢰할 수 있는 서비스 주력

 

데브옵스는 조직적이고 인간적인 문제와 관련이 있다. 운영과 개발 두 그룹을 하나로 모으기 위한 시도(운동)이다.

 

처음에 어떻게 보이든 문제는 항상 사람이다 from 컨설팅의 법칙, 제럴드 와인버그

코드형 인프라

하드웨어는 클라우드에 있다. 데브옵스는 소프트웨어 개발 기술을 운영에 도입한다. 복잡한 시스템을 신속하고 민첩하며 협력적으로 구축하는 도구이자 워크플로다. 그런데 이 데브옵스와 떼려야 뗼 수 없는 것이 하나 있다. 바로 코드형 인프라라는 개념이다.

 

운영 엔지니어는 하드웨어를 수동으로 배포하고 업그레이드하는 대신 클라우드를 자동화하는 소프트웨어를 작성하는 사람이 되었다. 반대로 개발자는 클라우드 시스템의 문제와 실패, 장애 최소화, 성능 우스성, 안전 장치가 확보된 소프트웨어를 설계하는 방법을 배운다.

 

클라우드, 데브옵스 운동은 운영을 소프트웨어 문제로 바꿔놓았다. 그리고 다음과 같은 질문을 던진다.

  • 서로 다른 서버 아키텍처, 운영 체제의 다양한 네트워크에서 소프트웨어를 배포하고 업그레이드하는 방법
  • 표준화된 구성 요소를 활용하여 안정적이고 재현 가능한 방식으로 분산 환경에 배포하는 방법

컨테이너 등장

컨테이너는 1950년대에 말콤 맥린이라는 트럭 운전사가 화물을 배에 싣는 새로운 방법을 제안했다. 단순하게 트럭의 짐칸을 뗴어내 배에 싣는 방법이다. 소프트웨어 컨테이너는 해운 산업의 컨테이너와 정확히 같은 개념이다. 표준 패키징과 배포 형식은 운반 용량을 크게 늘리고, 비용은 절감하며, 규모의 경제를 이루며, 다루기 쉽다. 컨테이너 형식에는 애플리케이션 실행에 필요한 모든 것이 포함되어 있으며 컨테이너 런타임이 실행할 수 있는 이미지 파일에 저장한다.

 

컨테이너는 객체지향 소프트웨어 시스템의 객체와 유사해져서 분산 시스템 디자인 패턴을 개발할 수 있을 것으로 기대한다. from '컨테이너 기반 분산 디자인 패턴' 

컨테이너 오케스트레이션

오케스트레이터는 다양한 머신을 하나의 클러스터로 결합하도록 설계된 소프트웨어의 한 종류이다.

 

오케스트레이션은 서비스의 공통적인 목표를 위해 서로 다른 역할을 조정하고 나열하는 것을 의미한다(오케스트라의 연주자)

 

스케줄리은 사용 가능한 리소스를 관리하고 가장 효율적으로 실행할 수 있는 워크로드를 할당하는 것을 의미한다.

 

클러스터 관리는 여러 개의 물리 또는 가상 서버를 신뢰할 수 있고 장애 허용를 유지하는 원할한 그룹으로 통합한다.

쿠버네티스

구글은 모든 서비스는 컨테이너에서 실행되어 직접 오케스트레이터를 개발했다. 처음에는 보그라는 내부 컨테이너를 개발했다. 보그는 서버 풀에서 실행할 컨테이너를 할당하고 스케줄링하는 중앙 관리 시스템이다. 강력하지만 내부 및 독점 기술과 밀접하게 연결되어 있으며 확장하기 어렵고 외부에 공개할 수 없다.

 

2014년 구글은 오픈 소스 프로젝트를 시작했다. 쿠버는 보그와 오메가에서 얻은 교훈을 바탕으로 개발한 누구나 사용할 수 있는 컨테이너 오케스트레이터다. 2017년 오케스트레이터의 전쟁은 쿠버네티스가 승리했다. 이제 쿠버네티스만 고려하면 된다.

 

반응형

'쿠버네티스 > 입문' 카테고리의 다른 글

쿠버네티스 구축  (0) 2023.07.23
모놀리식 아키텍처 / 마이크로서비스 아키텍처  (0) 2023.07.22
첫 번째 컨테이너  (0) 2023.07.22