컨테이너 인프라 환경 관련 용어 정리

Yesol Lee·2023년 2월 9일
0

데브옵스

목록 보기
1/3

사내 스터디 CUBE에서 진행하는 쿠버네티스 학습 내용을 정리한다. 원래 책만 보려고 했는데, 찾아보니 내가 이미 결제해놓은 강의의 강사님이 책의 저자라는 것을 알게 되어 영상도 같이 보게 되었다.

책: 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 - 1장
인프런 강의 : 쉽게 시작하는 쿠버네티스(v1.25) - 쿠버네티스 환경 구성

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

서비스 설계 종류

모놀리식 아키텍처 (monolithic architecture)

  • 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합돼 있는 구조. 소프트웨어가 하나의 결합된 코드로 구성되어있음
  • 장점 : 초기단계 설계가 용이. 개발이 좀 더 단순하고 코드 관리가 간편함
  • 단점 : 서비스 수정 시 연관된 다른 서비스에 영향을 미칠 가능성이 큼. 서비스가 커져서 기능이 추가되면 서비스 간 관계가 복잡해질 수 있음

마이크로서비스 아키텍처 (MSA, microservices architecture)

  • 시스템 전체가 하나의 목적을 지행하는 것은 모놀리식과 동일하지만, 개별 기능을 하는 작은 서비스를 각각 개발해서 연결한 구조
  • 장점 : 개발된 서비스를 재사용하기 쉽고, 서비스 수정 시 연관된 다른 서비스에 영향 미칠 가능성이 적음. 사용량 변화에 따라 특정 서비스만 확장할 수도 있음.
  • 단점 : 복잡도가 높으며 각 서비스가 서로 유기적으로 통신하는 구조 -> 네트워크 호출 횟수가 증가해 성능에 영향을 줄 수 있음

컨테이너 인프라 환경은 마이크로서비스 아키텍처로 구현하기 적합함.

구조 특이점

  • 서비스 디스커버리: 서비스 개수가 고정되어 있지 않으므로 어떤 서비스가 등록되어 있는지 파악하기 위해 서비스 디스커버리 사용
  • 이벤트 버스 서비스 : 수많은 서비스의 내부 통신을 이벤트로 일원화하고 효과적으로 관리하기 위해 별도 이벤트 버스를 서비스로 구성함.

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

컨테이너 인프라 환경 구성요소 : 컨테이너, 컨테이너 관리, 개발환경 구성 및 배포 자동화, 모니터링

도커 (docker)

  • 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너 만들고 관리하는 것을 도와주는 컨테이너 도구
  • 도커에서 실행한 애플리케이션은 운영 체제 환경에 관계없이 독립적인 환경에서 일관된 결과가 나옴
  • 기존 가상머신을 이용한 가상화 환경과 많이 비교되는데, 더 많은 애플리케이션을 동작시킬 수 있고 더 가벼움
  • 기타 비슷한 도구 : 컨테이너디(Containerd), 크라이오(CRI_O), 파드맨(Podman)

쿠버네티스 (kubernetes)

  • 다수의 컨테이너 관리(Orchestration) : 컨테이너 자동 배포, 배포된 컨테이너 동작 보증, 부하에 따른 동적 확장 등
  • 기타 비슷한 도구 : 도커 스웜(docekr swarm), 메소스(mesos), 노마드(nomad)
  • 최초에는 구글의 Borg라는 시스템에서 시작해 CNCF (Cloud Native Computing Foundation)라는 클라우드 관련 오픈소스 기관으로 옮겨져 관리되고 있음. 오픈소스라서 vender-neutral하다는 것이 큰 장점.

쿠버네티스 배포 종류 3가지

  1. 관리형 쿠버네티스
  • 현업에서 가장 많이 사용
  • aws, azure, 구글 클라우드 등에서 서비스함
  • 사용자는 배포만 해놓으면 거의 건드리지 않아도 됨
  1. 설치형 쿠버네티스
  • rancher, openshift
  • 설치할 수 있도록 자주 쓰는 설정 이미 패키지화된 상태
  1. 구성형 쿠버네티스
  • kops, kubespray, krib, kubeadm(실습에 사용할 예정) 등
  • 필요로 하는 온프레미스 베어메탈 혹은 클라우드 환경에서 원하는 구성 설치 혹은 교육용

젠킨스 (jenkins)

  • CI/CD 지원 도구 : 프로그램 빌드, 테스트, 패키지화, 배포 단계 자동화
  • 기타 비슷한 도구 : 뱀부(Bamboo), 깃허브 액션(Github action), 팀시티(Teamcity)

모니터링 도구

  • 프로메테우스 (prometheus): 상태 데이터 수집
  • 그라파나 (grafana): 프로메테우스로 수집한 데이터 시각화
profile
문서화를 좋아하는 개발자

0개의 댓글