Kubernetes

마이크로서비스와 Devops에 대하여

심루트 2021. 6. 17. 08:00
반응형

 

쿠버네티스를 이해하기 위해 먼저 모놀로식 아키텍처와 마이크로서비스 아키텍처의 차이에 대해 살펴보자.

 

* 모놀리식(Monolithic) 아키텍처 : 레거시 시스템(legacy)이라고도 함. 옛날 느낌이지만 아직도 사용하고 있는 아키텍처이며 대부분 단일 프로세스에서 실행이 되거나 몇개의 프로세스로 실행됨.

- 장점 : 간단한 개발, 배포가 가능하며 단순한 확장성

- 단점 : 코드 품질이 낮아짐, 애플리케이션 시작이 오래걸림, 지속적인 배포가 어려움, 애플리케이션 확장의 어려움, 컴포넌트별 개발의 어려움, 다양한 기술적용의 어려움

 

* 마이크로서비스(Microservice) 아키텍처 : 모놀로식 아키텍처의 크기가 커지면서 발생하는 문제점을 극복하기 위해 좀더 기능적으로 세분화되고 독립적으로 작동하는 방식.

- 장점 : 크고 복잡한 애플리케이션을 지속적으로 배포할 수 있음, 개발 생산성 높고 배포 속도가 높음, 향상된 장애 격리, 다양한 기술 적용이 가능함.

- 단점 : 분산시스템 설계에 따른 복잡성, 배포 및 관리 운영상의 복잡성, 증가된 리소스 소비

 

기존의 모놀로식 아키텍처를 사용하다보면 코드가 점점 커질 경우에 실수하기가 쉽다. 그러한 상황들에 대비하기 위해서 마이크로서비스라는 기능적으로 세분화되고 독립적으로 작동하는 방식을 사용하게 되었다. 그렇다고 기존의 모놀리식 아키텍처가 단점만 있는 것도 아니고, 요즘에도 사용하고 있기는 하다. 그러나 마이크로서비스 아키텍처의 장점이 많아서 요즘 많이 사용하고 있는 추세이다. 장점만 있는 것이 아니라 단점도 있는데 마이크로서비스 아키텍처의 단점은 복잡해진다는 것이다.

 

 

* Devops

Devops[데브옵스]는 개발 방법이 아닌 하나의 문화이다.

이렇게 한 마디로 정의를 할 수가 있다. 사실 예전에는 데브옵스라고 하면 개발과 운영을 편리하게 해주는 것?으로 나름대로 정의를 내렸었는데, 하나의 문화라는 표현이 더 적절한 것 같다. 하드웨어 뿐만이 아니라 운영, 개발도 알아야 한다. 대부분 운영만 알고있는 경우가 많은데, 전체 프로세스가 어떻게 흘러가는지를 알아야 한다.

 

 

devops라 하면 흔히 볼 수 있는 이미지다. 시작이 어디고 끝이 어딘지 모르겠으나 전체적인 프로세스의 흐름을 알아야 하는 것이 devops 엔지니어가 되기 위해서 중요하다.

 

예전에는 개발팀, QA팀, 운영팀 각각 나눠져서 배포, 관리를 하는 흐름을 가지고 있었다면 최근에는 개발자가 개발만 하는것이 아니라 전반적인 사이클을 알아야 하고 마찬가지로 운영팀 등 모두가 전체적인 작업들을 함께한다는 이야기다. 소통, 협업 및 통합을 강조하는 개발 환경 및 문화를 일컬어 Devops라고 한다.

 

참고로 docker swarm, Apache Mesos, 쿠버네티스 등등.. 이것들은 도커를 클러스터링(오케스트레이션) 하는 환경이다. 이 중에서 지금까지 남아있는 건 쿠버네티스이다. 쿠버네티스가 시장을 장악한 지는 3년정도밖에 안 되긴 했다. 얼마 되지 않는데 거의 독보적인 개념이니만큼 하나하나 알아가보도록 할 것이다.

Kubernetes는 K와 s 사이에 총 8글자가 들어간다고 해서 약어로 k8s라고 적는다. 이전에는 구글이 만들었지만 현재 CNCF 재단으로 넘어갔다는 건 참고로 알아두도록 하자. 그리고 중요한 것은 컨테이너 개념을 제대로 이해해야 쿠버네티스를 제대로 이해할 수 있다.

 

반응형