기술정보

[클라우드 네이티브] 개념 정리

quantumee 2024. 2. 13. 15:05

기존 로컬 PC저장소를 활용하던 시절과 달리 현재는 클라우딩 서비스가 대세를 보이고 있다

 

클라우드는 쉽게 설명하자면

외부에 있는 PC에 원격으로 접속해 PC자원을 사용하는 것이다.

 

그렇다면 클라우드 네이티브는?

- 클라우드 네이티브는 애플리케이션 개발을 위한 소프트웨어 방식으로서 확장성, 안정성, 고성능을 갖춘 기본적인 개발 방식과 그 특성을 의미하며, 애플리케이션과 서비스를 클라우드 아키텍처에 따라 조정하는 데 사용

=> 즉, 클라우드 환경에 맞춰 구축되어 클라우드의 장점을 발휘하는데 최적화된 상태를 의미


 

1. 클라우드 네이티브 ( Cloud Naitive )

- 핵심 기술

    ㄴ 1) 컨테이너

    ㄴ 2) 마이크로서비스아키텍처(MSA)

    ㄴ 3) DevOps

    ㄴ 4) CI/CD

 


1) 컨테이너

   : 어플리케이션을 실행에 필요한 라이브러리, 구성 파일 등과 패키지로 묶어서 이미지 처럼 배포하는 것

   

    - 기존의 비교 대상 기술

  • 가상머신 ( Virtual Machine ) =>  단점 : HostOS에 종속되어 분리한 어플리케이션마다 OS 할당해줘야함

    - 관련 SW

  • Docker ( 현재 높은 점유율)
  • K8s (Kubernetes) ( 빠르게 상승중인 점유율 )  

    - 장점**

  • 경량성
  • 높은 이식성

(** 참고: [ Docker ] Docker Container vs Virtual Machine )


2) MSA  (Micro Service Architecture)

   :  하나의 애플리케이션을 여러 서비스로 작게 나누고 서비스들끼리 통신하는 형태의 아키텍쳐로 구축하는 것을 의미

 

    - 기존의 비교 대상 기술

  • 모놀리식 =>  단점:  전체 어플리케이션이 하나로 구성되며 각 모듈이 연결되어 있어서 한부분이 전체에 영향을 끼침

    - 장점

  • 독립성 ( 한 기능에 문제가 생겨도 전체 시스템에 영향을 주지 않음 )
  • 확장가능성 ( 각 서비스가 연결되어 있지 않아 서비스별로 분리해서 개발, 배포, 확장이 가능 )
  • 유연성 ( 서비스 특성에 맞는 언어와 인프라를 사용할 수 있음 )
  • 유지보수 용이

    - 단점

  • 복잡함
  • 느린 속도 ( 서비스간 통신하는 구조로 인해 )

2) DevOps  (Development +Operation)

   :  소프트웨어 개발과 운영의 스피드와 품질 향상을 위해 개발과 운영 간의 프로세스를 통합 후 서로 협업하도록 하는 것

 

    - 형태

  • 개발 계획
  • 비즈니스 타당성 검토
  • 개발
  • Build
  • Release
  • 서버쪽 Deploy
  • Operation
  • Monitoring

의 과정이 작동하여 공동작업을 수행

 

    - 장점

  • 개발-운영 프로세스 자동화
  • 생산성 극대화

2) CI/CD  (Continuous Integration / Continuous Delivery·Deployment)

   :  지속적 통합과 지속적 배포를 의미

   - CI : 개발자를 위한 자동화 프로세스로 개별 개발자가 작업한 코드가 자동으로 빌드 및 테스트 되는 것을 의미

   - CD : 배포, 코딩 결과를 최종 사용자에게 넘겨주어 실행 가능하도록 하는 단계를 자동화하는 것을 의미

 

    - 관련 SW

  • Jenkins
  • Bamboo

    - 장점

  • 시장 출시 시간 감소
  • 소프트웨어 품질 개선
  • 배포 파이프라인 효율 증

    - 단점

  • 복잡한 파이프라인 설계 과정 ( 설계에 따라 파이프라인이 느리게 구동됨)
  • 인프라 리소스 소모  ( -> GitHub Actions 등 관리형 CI/CD 서비스 이용시 완화가능)

 

 


이외에도 

+) 서비스 메시 :

  • 여러 마이크로서비스 간의 통신을 관리하는 클라우드 인프라의 소프트웨어 계층  
  • 애플리케이션에 새 코드를 작성하지 않고도 추가 기능을 도입

+) 서버리스 (Serverless)

  • 클라우드 제공업체가 기반 서버 인프라를 전적으로 관리하는 클라우드 네이티브 모델
  • 클라우드 인프라가 애플리케이션 요구 사항에 맞게 자동으로 확장 및 구성

등이 있다.

 


2. 클라우드 네이티브의 장점

    ㄴ 1) 보다 적은 컴퓨팅 리소스 사용

    ㄴ 2) 즉각적인 배포 가능

    ㄴ 3) 컴퓨팅 리소스의 효율적인 확장 가능  

    ㄴ 4) 더 빠른 개발

    ㄴ 5) 플랫폼 독립성

    ㄴ 6) 비용의 효율적인 관리 ( 실제 사용하는 리소스만 비용 지불 )

 


3. 클라우드 네이티브 스택

: 개발자가 클라우드 네이티브 애플리케이션을 구축·관리·실행하는 데 사용하는 기술 계층을 설명하는 용어

 

1) 인프라 계층

-  클라우드 제공업체가 관리하는 운영 체제, 스토리지, 네트워크 및 기타 컴퓨팅 리소스로 구성

-  예시) AWS, Azure 등

2) 프로비저닝 계층

-  클라우드 환경을 할당하고 구성하는 다양한 클라우드 서비스로 구성 

3) 런타임 계층

- 컨테이너가 작동할 수 있는 클라우드 네이티브 기술을 제공 

- 클라우드 데이터 스토리지, 네트워킹 기능, 그리고 컨테이너화된 리소스와 같은 컨테이너 런타임이 포함

4) 오케스트레이션 및 관리 계층

- 다양한 클라우드 구성 요소를 통합하여 하나의 유닛으로 작동하도록 하는 역할

- 개발자는 오케스트레이션 도구를 사용하여 다양한 시스템에서 클라우드 애플리케이션을 배포, 관리 및 확장

- 예시)  Kubernetes

5) 애플리케이션 정의 및 개발 계층

- 클라우드 네이티브 애플리케이션을 구축하기 위한 소프트웨어 기술

- 개발자는  클라우드 기술을 사용하여 클라우드 애플리케이션을 구축

- 예시)  데이터베이스, 메시징, 컨테이너 이미지, 지속적 통합(CI) 및 지속적 전달(CD) 도구

6) 관측성 및 분석 도구 계층

- 클라우드 애플리케이션의 시스템 상태를 모니터링 및 평가하고 개선

- 개발자는 도구를 사용하여 지표를 모니터링함으로써 앱의 서비스 품질에 문제가 없는지 확인

- 예시)  CPU 사용량, 메모리, 지연 시간