쿠버네티스 패턴 - 0장 쿠버네티스 패턴

오정재·2021년 4월 16일
19

쿠버네티스 패턴

목록 보기
1/12
post-thumbnail

🤔 무엇을 얘기할까?

최근 MSA컨테이너에 대한 관심이 급증하고 있습니다.
이에 따라 컨테이너를 운영하고 관리하기 위한 플랫폼들이 많아졌습니다.

그 중 쿠버네티스는 컨테이너 오케스트레이션 플랫폼의 표준으로 자리잡았다고 무방하며,
쿠버네티스를 통해서 컨테이너를 운영하고 관리하기 위한 방법들 또한 중요해졌습니다.

따라서 쿠버네티스를 통해서 컨테이너를 관리하기 위한 여러가지 방법들을
디자인 패턴으로 만들어 정리하고 익혀가며 나만의 Best Practice를 만들 것 입니다.

들어가기에 앞서 앞으로 다룰 두 가지 개념인 쿠버네티스디자인 패턴을 간단하게 짚고 마무리하겠습니다.

🍏 쿠버네티스

먼저 쿠버네티스란 무엇일까요?
쿠버네티스 공식 문서에서는 다음과 같이 설명하고 있습니다.

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다.

이 내용으로 쿠버네티스를 이해할 수 있는 사람을 절대 없을 것입니다.

저는 새로운 기술을 찾아볼 때 이 기술의 배경을 찾아보는 편입니다.
배경을 파악하면 기술의 부재로 인한 문제와 이 기술을 통해서 해결된 문제가 보이기 때문입니다.

쿠버네티스의 배경은 공식 문서에서 다음과 같이 설명하고 있습니다.

1) 전통적인 배포

전통적인 배포는 물리 서버(PM) 에서 실행이 되었습니다.

물리 서버에서 여러 어플리케이션을 배포하는 것은 다른 어플리케이션의 성능이 저하 될 수 있으며,
물리 서버 단위로 어플리케이션을 나누는 것은 조직에게 많은 비용이 들게 하였습니다.

2) 가상화된 배포

이를 해결하기 위해서 가상화 된 배포가 도입되었습니다.

가상화를 사용하면 단일 물리 서버의 CPU에서 여러 가상 시스템(VM) 을 실행할 수 있게 되며,
VM을 통해서 어플리케이션을 격리하도록 하였습니다.

하지만 VM은 별도의 OS를 필요로 하기 때문에 메모리를 많이 잡아 먹으며, 부팅 시간이 오래 걸린다는 단점이 있습니다.

3) 컨테이너 배포

컨테이너는 VM과 유사하지만 어플리케이션 간에 OS를 공유 합니다.
즉, 하나의 프로세스이며, VM과 마찬가지로 격리된 공간을 사용하지만 자체 OS가 필요하지 않습니다.

따라서 VM 보다 가볍다고 여겨지며, 기본 인프라와의 종속성을 끊었기 때문에 이식성이 좋습니다.

4) 쿠버네티스 배경

이러한 장점으로 컨테이너는 어플리케이션을 포장하고 실행하는 좋은 방법으로 여겨지고 있습니다.

이에 따라서 프로덕션 환경에서 컨테이너를 사용하는 경우가 많아졌으며,
여러 컨테이너가 잘 작동하고 있는지 관리할 필요가 있습니다.

👍 결론적으로 쿠버네티스는 컨테이너 배포를 관리해주는 컨테이너 OS라고 할 수 있습니다.

하지만 위 내용만으로는 쿠버네티스에 대해 완전히 이해하는 것은 어렵습니다...
따라서 앞으로 쿠버네티스 디자인 패턴들을 정리하면서 필요한 쿠버네티스의 내용들도 다뤄볼 것 입니다.

🍏 디자인 패턴

소프트웨어를 설계하는 것은 정말 중요합니다.
특히 소프트웨어 설계 문제로 유지보수의 비용이 많이 들어간다면...
그것만큼 골치 아픈 일이 없을 것입니다.

디자인 패턴은 소프트웨어를 잘 설계하는 것과 관련이 있습니다.
앞서 설명한 것과 같이 디자인 패턴의 배경을 알아보면 다음과 같습니다.

1) 건축적 개념

디자인 패턴은 1977년 건축적 개념으로 크리스토퍼 알렉산더를 통해서 처음 등장하였습니다.
여기서 디자인 패턴은 도시, 건물, 그 밖의 건설 프로젝트에 대한 건축 패턴을 설명하였습니다.

이를 통해서 매우 크고 복잡한 디자인 문제를 쉽게 해결 할 수 있게 해주었습니다.

2) 소프트웨어 분야와의 접목

소프트웨어도 건축과 마찬가지로 크고 복잡한 디자인 문제들이 많습니다.
특히, 고질적인 문제들로 인해서 생기는 유지 보수 비용은 많은 개발자들을 힘들게 했습니다.

이를 착안하여 소프트웨어 분야에서는 4인방(Gang of four)을 통해서
Design Patternss: Elements of Reusable Object-Oriented Software 라는
책으로 디자인 패턴이 처음 소개되었습니다.

책에서는 반복적으로 일어나는 문제이를 해결하기 위한 솔루션 을 서술하였고,
이를 통해서 소프트웨어의 재사용성을 높이고, 유지 보수 비용을 낮췄습니다.

👍 즉, 디자인 패턴이란 반복적으로 일어나는 문제에 대한 반복 가능한 해결책을 의미합니다.

3) 쿠버네티스 디자인 패턴이 필요한 이유

앞으로 우리가 다룰 내용도 이러한 맥락에서 나왔습니다.

쿠버네티스는 하나의 컨테이너만 관리하는 것이 아닌 여러 컨테이너를 관리하기 위한 플랫폼 입니다.
따라서 컨테이너를 관리하면서 생기는 다양한 문제 중 고질적인 문제들이 다시 발생할 수 있을 것이며,
디자인 패턴으로 정리하여 문제에 대한 반복 가능한 해결책을 제시할 수 있습니다.

또한 패턴은 단순히 해결책을 제시하는 것 뿐만 아니라 공통의 언어를 만들어 줍니다.
패턴에는 고유한 이름이 있고, 문제와 해결을 함축하고 있습니다.
이를 통해서 또 다른 문제를 패턴에 대입시켜 이해하고 해결해 나갈 수 있습니다.

👌 마무리

앞으로 컨테이너 운영 환경인 쿠버네티스에서 클라우드 네이티브 어플리케이션을
잘 만들고 잘 관리할 수 있도록 하는 24가지 디자인 패턴에 대해서 다뤄보고 정리할 예정입니다.

따라서 쿠버네티스의 기초적인 내용 및 문법에 대해서 다루진 않을 것이며,
책에서 나온 내용을 제가 이해한 내용을 바탕으로 서술 할 것입니다.

앞으로 이어질 내용은 쿠버네티스 패턴 - 1장 개요 를 제외하고는
디자인 패턴을 정리하는 것과 동일하게 다음과 같은 5가지 주제로 이루어질 것 입니다.

  • 패턴 이름
  • 문제점
  • 해결책
  • 정리

👉 Reference

profile
ohhong

1개의 댓글

comment-user-thumbnail
2021년 5월 23일

깔끔한 정리 감사합니다:)

답글 달기