본문 바로가기

Infra

[Infra] 컨테이너 인프라 환경이란?(MSA, 도커, 쿠버네티스, 젠킨스, 프로메테우스, 그라파나)

ㅈㅣ난 포스팅을 이어 차근차근 공부해보자구요 ~

 

[Infra] 쿠버네티스가 뭐얏!

안뇽 ~ 쿠버네티스를 공부하게 되었어요 .. ~! 작년 겨울에 구글 스터디잼 활동으로 쿠버네티스를 했었는데 ,, 기억이 날리 없지!! 이참에 아주 그냥 마스터 해보겠어여 에트리 선임연구원분이 추

min-0.tistory.com

 

컨테이너 인프라 환경

 

컨테이너를 중심으로 구성된 인프라 환경을 말한다.

그렇다면 컨테이너가 뭘까?

컨테이너(Container)는 하나의 운영체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태를 뜻한다. 

왜 컨테이너 ~ 컨테이너 노래를 부르는 걸까 .. 이해해보려고 해보자 ..!

 

모놀리식 아키텍처 vs 마이크로서비스 아키텍처

 

컨테이너 인프라 환경에서는 어떤 아키텍처를 사용할까 ?

모놀리식 아키텍처(Monolithic Architecture):
하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합되어 있는 구조

모놀리식 아키텍처는 SW가 결합된 코드로 구성되어 있어서 초기 단계에서 설계하기 용이하여 개발이 단순해 코드관리가 편하다는 장점이 있다. 하지만 서비스 운영 과정에서 수정이 많아진다면, 수정하는 코드와 관련된 다른 서비스에 영향을 미칠 가능성이 커지고, 서비스가 점점 성장할수록 서비스 간의 관계가 복잡해질 수 있다. 
마이크로서비스 아키텍처(Micro Service Architecture):
시스템 전체가 하나의 목적을 지향하지만 개별 기능을 하는 작은 서비스를 각각 개발해 다른 서비스들과 연결하는 독립적인 서비스를 구성하는 완결된 구조


마이크로서비스 아키텍처는 각각의 기능을 하는 작은 서비스를 각각 개발하여 연결한다. 다른 서비스들과 독립적으로 되어 있어 재사용도 쉽고, 서비스 간의 영향을 미칠 가능성도 줄어 확장에 용이하다. 사용자의 요구사항에 따라 가용성을 즉각적으로 확보해야 하는 IassS(서비스로의 인프라) 환경에 적합하다. 하지만 모놀리식 아키텍처보다 복잡도가 높고 네트워크를 통한 호출 횟수가 많아 성능에 영향을 줄 수 있다.

 

무엇을 사용하냐에 대한 정답은 없다! 모놀리식 아키텍처에서 서비스가 커짐에 따라 마이크로서비스 아키텍처로 전환할 수도 있다. 소규모에는 모놀리식을 선호하는 경우가 있지만 장기적으로 유지보수를 생각한다면 마이크로서비스 아키텍처가 유리하다. 

우리가 공부할 컨테이너 인프라 환경은 특히 마이크로서비스 아키텍처로 구현하기 적합하다고 한당

 

컨테이너 인프라 환경을 지원하는 도구

 

컨테이너 인프라 환경은 컨테이너, 컨테이너 관리, 개발 환경 구성 및 배포 자동화, 모니터링으로 구성된다.

 

1. 도커(Docker)

컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구로 도커로 애플리케이션을 실행하면 운영체제 환경에 관계없이 독립적인 환경에서 일관된 결과를 볼 수 있다. 컨테이너 런타임 도구에는 이외에도 Conainerd, CRI-O, Podman 등이 있다.

 

2. 쿠버네티스(Kubernetes)

다수의 컨테이너를 관리하는데 용이하며 컨테이너의 자동 배포와 배포된 컨테이너에 대한 동작 등 컨테이너 인프라 필요한 기능을 통합하고 관리하는 솔루션이 되었다. 컨테이너 관리 도구는 Docker Swarm, Mesos, Nomad 등이 있다.

 

3. 젠킨스(Jenkins)

지속적인 통합, 배포(CI/CD)를 지원하는 도구이다. 개발한 프로그램의 빌드, 테스트, 패키징, 배포 단계를 모두 자동화해 개발 단계를 표준화 한다. CI/CD 도구는 Bamboo, Github Action, Teamcity 등이 있다.

 

4. 프로메테우스와 그라파나(Prometheus, Grafana)

모니터링을 위한 도구로 프로메테우스는 상태 데이터를 수집하고, 그라파나는 수집된 데이터를 보기좋게 가시화 해주는 도구이다. 컨테이너 인프라 환경에서는 많은 종류의 기능이 개발되기 때문에 중앙 모니터링이 필요하기에 이 둘의 조합으로 많이 이용된다. 데이터수집 도구는 DadtaDog, InfluxDB, New Relic 등이 있고, 데이터 시각화 도구는 Kibana, Chronograf 등이 있다.

 

앞으로 진행될 컨테이너 인프라 환경 구성은 아래와 같다!

 

잘그렸다 나,,!

 

여기서 하이퍼바이저는 가상머신(VM)을 생성하고 실행하는 프로세스라고 합니둥 ~

 


 

여기까지 컨테이너 인프라 환경 개요 같은 느낌이었구요 ~

다음 포스팅에는 베이그런트로 한번 테스트 환경을 만들어보겠습니다 !!