쿠버네티스를 배워야 하는 이유

클라우드 네이티브

  • 클라우드의 장점을 최대한 활용하여 정보 시스템을 구축 및 싱행하는 환경
  • 클라우드 네이티브 기술, 애플리케이션, 아키텍처, 개발방법론, 조직, 프로세스 등 다양한 용어와 결합하여 다양한 의미로 사용
  • 쿠버네티스는 클라우드 네이티브 구성요소를 완전히 수행할 수 있는 최고의 플랫폼

CNCF(Cloud Native Computing Foundation)

  • 클라우드 컴퓨팅 모델의 이점을 황용하는 애플리케이션 거축 방법론
  • 핵심가치
    • 클라우드 네이티브 기술의 촉진
    • 오픈소스 프로젝트 생태계 육성
    • 기술의 표준화 수립
  • CNCF에서 관리하는 프로젝트
  • url : https://www.cncf.io/projects/

기존 어플리케이션과 클라우드 네이티브 애플리케이션 차이점

  • 기존 애플리케이션은 장기간에 걸쳐 긴밀하게 결합된 모놀리식 기반 위에서 동작
  • 클라우드 네이티브 애플리케이션은 소규모 서비스 단위의 마이크로서비스로 구성되며 가상 컨테이너 환경에서 동작되도록 설계 및 구현
구분기존 애플리케이션클라우드네이티브 애플리케이션
애플리케이션 구조모놀리식 구조마이크로서비스
결합크고, 조밀함느슨하고, 서비스 기반
실행환경물리서버 중심가상 컨테이너 중심
확장수직확장수평확장
인프라 의존성인프라 의존인프라 독립, 이식성 보장
개발방법폭포수애자일
빌드/배포수작업, 긴시간CI/CD 자동화, 짤은시간/지속적
조직구조단절된 개발, 운영, 보안데브옵스 협업

클라우드 네이티브 구성요소

  • 마이크로서비스
    • 독립적인 실행 및 배포가 가능한 마이크로서비스
  • 컨테이너
    • 경량화된 컨테이너 단위 수평적 확장
  • DevOps
    • 개발팀과 운영팀간 단일한 협업 프로세스
  • CI/CD
    - Countinuous Integration, Continuous Delivery/Deployment > 지속적 통합, 지속적 제공/배포
    - 소규모 개발팀별 자율적, 독립적 서비스 운영

모놀리식 아키텍처

  • 전통적인 아키텍처, 기존에 사용하던 서비스 방법
  • 서비스가 하나의 애플리케이션으로 돌아가는 구조
  • 기존의 개발 방식을 사용해 개발하여 간단히 배포
  • 하나의 서비스 또는 어플리케이션이 하나의 거대한 아키텍처
  • 다양한 기능을 동작하는 서비스를 서버에서 실행하여 서비스

    단점

  • 모놀리식 서비스 아키텍처를 스케일아웃
    • 기존의 애플리케이션을 그대로 복제하여 로드밸런싱
    • 불필요한 서비스까지 모두 복제함
  • 종속적인 라이브러리의 충돌
    • 각각의 기능들은 서로 다른 기능을 제공하여 버전의 종속성을 필요한 경우가 존재
    • 각 기능의 따른 라이브러리를 매 업데이트마다 관리하기 어려움
  • 수정시 전체 빌드 및 배포 필요함
    • 소스코드 전체가 하나로써 동작하기 작은 수정만 있더라도 전체를 빌드하여 다시 배포
    • 프로그램의 크기가 커지면 컴파일시 시간이 많이 소비됨
    • 여러개의 버그가 순차적으로 발견될 시 여러번 수정과 빌드 및 배포가 필요

마이크로서비스 아키텍처

  • 모놀리식 아키텍처와 반대되는 개념
  • 애플리케이션의 각각의 기능을 분리하여 개발 및 관리

    장점

  • 개발자가 로직에 대해서만 집중하여 빠르게 개발이 가능함
  • 개별 서비스 단위로 개발, 패키징, 빌드, 테스트, 배포로 각 서비스마다 유연한 스케줄
  • 서비스 단위로 스케일아웃이 가능하여 불필요한 서비스는 줄이고 더 많은 자원이 필요한 서비스는 확장 가능

    단점

  • 분산 시스템 환경에서 테스트, 배포, 관리가 복잡함

데브옵스(DevOps) 모델

  • 데브옵스는 소프트웨어 개발과 IT 운영을 결합한 합성어
  • 기존의 분리된 소프트웨어 개발팀과 IT 운영팀의 협업으로 전체 라이프사이클을 함께 관리할 수 있자는 일종의 철학 또는 운동
  • 소프트웨어 개발팀과 IT 팀이 더 빠르게 안정적으로 소프트웨어를 빌드, 릴리즈할 수 있도록 두 팀 간의 프로세스를 자동화하는 일련의 과정

    장점

  • 속도 : 서로의 업무에 잘 이해하여 좀더 신속하게 사용자에게 필요한 서비스를 제공 가능함
  • 신속한 제공 : 컨테이너와 마이크로서비스를 사용하면 빠르게 릴리즈가 가능함. 빠르고, 좋은 기능을 제공할 수 있으며 개발자가 운영에 필요한 인프라와 하드웨어에 대해 잘 몰라도 릴리즈가 가능함
  • 개발과 릴리즈가 편해 안정성 및 협업이 강화

마이크로서비스 성공 사례

  • Neflix

    • 최초의 마이크로서비스 사례
    • 수백개가 넘는 작은 단위의 서비스 운영
    • API 기반의 마이크로서비스를 활용한 넷플릭스 아키텍처
  • Amazon

    • 수천 개의 자율적 데브옵스팀 구성, MSA 적용, 팀별 CI/CD 파이프라인 자동화를 통한 지속적인 통합/배포
    • 다양한 개발환경 구성 등을 통해 신속한서비스 배포 체계를 구축
    • 2020년 기준 연간 1억 8천만 회 배포

출처

profile
사진은 남아 추억이 메모는 남아 스펙이 된다

0개의 댓글