클라우드 네이티브

k_hyo·2024년 11월 7일

Cloud Native 정의

클라우드 제공 모델에서 제공하는 분산 컴퓨팅을 활용하기 위해 애플리케이션을 구축 및 실행하는 개념을 의미
이러한 클라우드 네이티브 기술은 서비스 제공에 미치는 영향 없이 애플리케이션을 빠르고 자주 변경할 수 있도록 지원

  • CNCF에서 정의한 바와 같이 클라우드 네이티브 기술은 조직이 클라우드에서 확장 가능한 애플리케이션을 구축하고 실행할 수 있도록 지원한다.

CNCF(Cloud Native Computing Foundation)
CNCF 조직은 2015년에 설립돼 Kubernetes를 비롯한 주요 클라우드 네이티브 구성 요소를 개발하는 오픈 소스를 관리하는 단체

클라우드 네이티브의 장점

  • 조직은 클라우드 네이티브 소프트웨어 애플리케이션을 구축할 때 다양한 경쟁력을 확보할 수 있다.

1. 효율성 증가

  • 클라우드 네이티브 개발은 DevOps 및 CI/CD와 같은 애자일 방식을 지원한다.
  • 개발자는 자동화된 도구, 클라우드 서비스 및 현대적 설계 문화를 활용하여 확장 가능한 애플리케이션을 신속하게 구축한다.

2.비용 절감

  • 물리적 인프라를 조달하고 유지관리하는 비용이 없어진다.

3. 가용성 보장

  • 클라우드 네이티브 기술을 활용하면 복원력이 뛰어나고 가용성이 높은 애플리케이션을 구축할 수 있다.
  • 업데이트 시 애플리케이션 중지 시간이 발생하지 않는다.
  • 사용량 급증 시에는 앱 리소스를 확장하여 불편을 해소할 수 있다.

클라우드 네이티브 애플리케이션

  • 기존에는 개발자가 필요한 모든 기능을 포함하는 단일 블록 구조인 monolith 애플리케이션을 구축하였다.
  • 클라우드 네이티브 애플리케이션은 MicroService라는 여러 상호 의존적인 소규모 서비스로 구성하여 애플리케이션을 구축한다.
  • MicroService는 최소한의 컴퓨팅 리소스만 사용하여 독립적으로 작동하고 실행되어 민첩성이 향상된다.
    클라우드 네이티브 애플리케이션

클라우드 네이티브 애플리케이션 아키텍처

  • 클라우드 네이티브 애플리케이션을 구축하고 실행하는데 사용하는 다양한 소프트웨어 구성 요소를 결합

1. Immutable Infrastrcture

  • 클라우드 네이티브 애플리케이션을 호스팅하는 서버가 배포 후에도 변경되지 않음을 의미
  • 애플리케이션 업데이트 시 기존 서버는 삭제되고 새로운 서버가 만들어짐
    -> Immutable Infrastructure 이 과정에서 서버가 변경되지 않도록 해준다.

2. MicroService

  • 완전한 클라우드 네이티브 소프트웨어로 함께 작동하고 독립적인 소프트웨어 구성 요소이다.
  • 각 MicroService는 서로 통신하는 독립적인 소프트웨어 구성 요소이다.

3. API(Application Programing Interface)

  • 두 개 이상의 소프트웨어 프로그램이 정보를 교환하는데 사용하는 방법

4. 서비스 메시

  • 서비스 메시는 여러 마이크로 서비스 간의 통신을 관리하는 클라우드 인프라의 소프트웨어 계층

5. Container

  • 클라우드 네이티브 애플리케이션에서 가장 작은 컴퓨팅 단위
  • 마이크로서비스 코드와 기타 필수 파일을 패키징하는 소프트웨어 구성 요소

클라우드 네이티브 개발

1. CI(Continuouse Intergration)

  • 개발자가 변경 사항을 공유 코드 기반에 자주 오류 없이 통합하는 소프트웨어 방식
  • CI Tool은 모든 변경 사항에 대한 코드 품질을 자동으로 평가하여 안정성을 보장한다.

2. CD(Continuouse Delivery/Deployment)

  • 지속적 배포는 마이크로서비스가 항상 클라우드에 배포될 준비가 되어 있는지 확인한다.
  • 자동화 도구를 사용하여 새로운 기능을 도입하고 애플리케이션의 버그를 수정하는 등 변경을 할 때 위험을 줄인다.

3. DevOps

  • 개발 및 운영팀의 협업을 개선하는 소프트웨어 문화
  • DevOps 도구를 사용하여 클라우드 네이티브 개발을 자동화한다.

4. 서버리스

  • 클라우드 제공자가 기본 서버 인프라를 완전히 관리하는 클라우드 네이티브 모델이다.

  • 클라우드 인프라가 애플리케이션 요구 사항을 충족되도록 자동 확장되고 구성되기 때문에 컴퓨팅 관리를 하지않아도된다.

클라우드 네이티브 개발 및 인프라 환경

  • 클라우드 환경에 적합한 애플리케이션 단위 및 배포환경

<Refernce>

AWS-클라우드네이티브
티스토리-Char님

profile
거니뇨

0개의 댓글