클라우드 네이티브 란? 소프트웨어를 개발하는 현대적인 방법

"클라우드 네이티브"라는 용어는 특히 클라우드 제공 업체에서 자주 사용됩니다. 뿐만 아니라 Linux Foundation에서 2015 년에 시작한 CNCF (Cloud Native Computing Foundation)라는 자체 기반도 있습니다.

'클라우드 네이티브'정의

일반적으로 "클라우드 네이티브"는 클라우드 컴퓨팅 제공 모델의 장점을 활용하는 애플리케이션을 구축하고 실행하는 접근 방식입니다. "클라우드 네이티브"는 애플리케이션이 어디에 생성되고 배포 되는지 에 관한 것 입니다. 이는 앱이 온 프레미스 데이터 센터가 아닌 공용 클라우드에 있음을 의미합니다.

CNCF는 "클라우드 네이티브"를 조금 더 좁게 정의합니다. 즉, 컨테이너화 할 오픈 소스 소프트웨어 스택을 사용하는 것을 의미합니다. 즉, 앱의 각 부분이 자체 컨테이너에 패키징되고 동적으로 조정되므로 각 부분이 리소스를 최적화하기 위해 능동적으로 예약되고 관리됩니다. 응용 프로그램의 전반적인 민첩성과 유지 관리 성을 높이기위한 마이크로 서비스 지향.

컨설팅 회사 인 Deloitte의 전무 이사 인 Mike Kavis는“클라우드 네이티브 앱은 최신 클라우드 컴퓨팅 플랫폼에서 요구하는 탄력적이고 분산 된 특성에서 실행되도록 특별히 설계되었습니다. “이러한 앱은 느슨하게 결합되어 있습니다. 즉, 코드가 인프라 구성 요소에 고정되어 있지 않으므로 앱이 필요에 따라 확장 및 축소되고 변경 불가능한 인프라 개념을 수용 할 수 있습니다. 일반적으로 이러한 아키텍처는 마이크로 서비스를 사용하여 구축되지만 필수 요구 사항은 아닙니다. "

클라우드 네이티브 애플리케이션의 경우 가장 큰 차이점은 애플리케이션이 실제로 구축, 제공 및 운영되는 방식이라고 클라우드 서비스 제공 업체 Splunk의 최고 기술 옹호자 인 Andi Mann은 말합니다. "클라우드 서비스를 활용한다는 것은 컨테이너와 같은 민첩하고 확장 가능한 구성 요소를 사용하여 멀티 클라우드와 같은 기술 경계를 넘어 잘 설명 된 방식으로 통합되는 개별적이고 재사용 가능한 기능을 제공하는 것을 의미합니다.이를 통해 전달 팀은 반복 가능한 자동화 및 오케스트레이션을 사용하여 신속하게 반복 할 수 있습니다."

클라우드 네이티브 앱 개발에는 일반적으로 devops, 애자일 방법론, 마이크로 서비스, 클라우드 플랫폼, Kubernetes 및 Docker와 같은 컨테이너, 지속적 배포가 포함됩니다. 간단히 말해서 모든 새롭고 현대적인 애플리케이션 배포 방법입니다.

따라서 PaaS (Platform-as-a-Service) 모델을 원합니다. PaaS는 필수는 아니지만 작업을 훨씬 쉽게 만듭니다. 대부분의 클라우드 고객은 기본 하드웨어에서 앱을 추상화하는 데 도움이되는 IaaS (Infrastructure-as-a-Service)로 시작합니다. 그러나 PaaS는 기본 OS를 추상화하기 위해 추가 레이어를 추가하므로 앱의 비즈니스 로직에 전적으로 집중할 수 있고 OS 호출에 대해 걱정할 필요가 없습니다.

관련 비디오 : 클라우드 네이티브 접근 방식이란 무엇입니까?

60 초 분량의이 동영상에서는 Heptio의 설립자이자 CEO이자 오픈 소스 Kubernetes의 발명가 중 한 명인 Craig McLuckie가 클라우드 네이티브 접근 방식이 기업의 기술 구조 방식을 어떻게 바꾸고 있는지 알아 봅니다.

클라우드 네이티브 애플리케이션과 온 프레미스 애플리케이션의 차이점

클라우드 네이티브 애플리케이션 개발에는 기존 엔터프라이즈 애플리케이션과는 매우 다른 아키텍처가 필요합니다.

언어

회사 서버에서 실행되도록 작성된 온-프레미스 앱은 Windows Server 플랫폼 및 엔터프라이즈 Java에 배포 된 경우 C / C ++, C # 또는 다른 Visual Studio 언어와 같은 기존 언어로 작성되는 경향이 있습니다. 메인 프레임에있는 경우 Cobol에있을 가능성이 높습니다.

클라우드 네이티브 앱은 HTML, CSS, 자바, 자바 스크립트, .Net, Go, Node.js, PHP, Python 및 Ruby를 의미하는 웹 중심 언어로 작성 될 가능성이 더 높습니다.

업데이트 가능성

클라우드 네이티브 앱은 항상 최신 상태로 유지됩니다. 클라우드 네이티브 앱은 항상 사용할 수 있습니다.

온-프레미스 앱에는 업데이트가 필요하며 일반적으로 공급 업체에서 구독 기반으로 제공되며 업데이트를 설치하는 동안 가동 중지 시간이 필요합니다.

탄력

클라우드 네이티브 앱은 사용량이 급증하는 동안 증가 된 리소스를 사용하여 클라우드의 탄력성을 활용합니다. 클라우드 기반 전자 상거래 앱에서 사용량이 급증하는 경우 급증이 가라 앉을 때까지 추가 컴퓨팅 리소스를 사용하도록 설정 한 다음 해당 리소스를 끌 수 있습니다. 클라우드 네이티브 앱은 증가 된 리소스에 맞게 조정하고 필요에 따라 확장 할 수 있습니다.

온-프레미스 앱은 동적으로 확장 할 수 없습니다.

멀티 테넌시

클라우드 네이티브 앱은 가상화 된 공간에서 작업하고 다른 앱과 리소스를 공유하는 데 문제가 없습니다.

많은 온 프레미스 앱이 가상 환경에서 제대로 작동하지 않거나 전혀 작동하지 않으며 가상화되지 않은 공간이 필요합니다.

연결된 리소스

온-프레미스 앱은 네트워크, 보안, 권한 및 저장소와 같은 네트워크 리소스에 대한 연결이 상당히 엄격합니다. 이러한 리소스의 대부분은 하드 코딩되어야하며, 이동하거나 변경하면 중단됩니다.

“클라우드에서는 네트워크와 스토리지가 완전히 다릅니다. '재 플랫폼'이라는 용어를 들으면 일반적으로 네트워킹, 스토리지 및 데이터베이스 기술의 변화를 수용하여 앱이 클라우드에서 실행될 수 있도록하는 작업입니다.”라고 Deloitte의 Kavis는 말합니다.

다운 타임

클라우드에는 온 프레미스보다 더 큰 중복성이 있으므로 클라우드 제공 업체가 중단을 겪으면 다른 지역이 여유를 가져올 수 있습니다.

온 프레미스 앱에는 장애 조치가 준비되어있을 수 있지만 서버가 다운되면 앱도 함께 다운 될 가능성이 있습니다.

오토메이션

클라우드의 대부분은 자동화되어 있으며 여기에는 앱 관리가 포함됩니다. "클라우드 네이티브 전송의 이점, 특히 속도와 민첩성은 수동 개입이 아닌 자동화 및 오케스트레이션 도구에서 필요에 따라 반복적으로 실행되는 신뢰할 수 있고 검증되고 감사 된 알려진 양호한 프로세스의 기반에 크게 의존합니다."라고 Splunk는 말합니다. Mann. 엔지니어는 반복성, 셀프 서비스, 민첩성, 확장 성, 감사 및 제어를 가능하게하기 위해 두 번 이상 수행하는 거의 모든 작업을 자동화해야합니다.

온-프레미스 앱은 수동으로 관리해야합니다.

모듈 식 디자인

온 프레미스 앱은 디자인에서 모 놀리 식인 경향이 있습니다. 그들은 확실히 일부 작업을 라이브러리로 오프로드하지만 결국에는 많은 서브 루틴을 가진 하나의 큰 앱입니다. 클라우드 네이티브 앱은 훨씬 더 모듈 식이며 많은 기능이 마이크로 서비스로 분류됩니다. 이를 통해 필요하지 않은 경우 종료하고 전체 앱이 아닌 해당 모듈에 업데이트를 롤아웃 할 수 있습니다.

무국적

느슨하게 결합 된 클라우드의 특성은 앱이 인프라에 연결되어 있지 않다는 것을 의미합니다. 클라우드 네이티브 앱은 데이터베이스 또는 다른 외부 엔터티에 상태를 저장하므로 인스턴스가 왔다가 이동할 수 있고 앱이 작업 단위에서 애플리케이션이있는 위치를 계속 추적 할 수 있습니다. “이것은 느슨하게 결합 된 본질입니다. 인프라에 묶여 있지 않으면 앱이 고도로 분산 된 방식으로 실행되고 기본 인프라의 탄력적 특성과 관계없이 여전히 상태를 유지할 수 있습니다.”라고 Kavis는 말합니다.

대부분의 온-프레미스 앱은 상태 저장 앱입니다. 즉, 코드가 실행되는 인프라에 앱의 상태를 저장합니다. 이로 인해 서버 리소스를 추가 할 때 앱이 중단 될 수 있습니다.

클라우드 네이티브 컴퓨팅의 과제

고객이 저지르는 큰 실수 중 하나는 기존의 온 프레미스 앱을 클라우드로 옮기려는 것입니다. "기존 애플리케이션 (특히 모 놀리 식 레거시 애플리케이션)을 클라우드 인프라로 옮기려고하면 필수 클라우드 네이티브 기능을 활용할 수 없습니다."

대신 새로운 클라우드 네이티브 애플리케이션을 새로운 클라우드 인프라에 배치하거나 기존 모놀리스를 분리하여 처음부터 클라우드 네이티브 원칙을 사용하여 리팩토링하는 방식으로 새로운 방식으로 새로운 작업을 수행해야합니다.

또한 기존 개발자 방법을 생략해야합니다. 폭포수 모델은 확실히 할 수 없으며 민첩한 개발만으로는 충분하지 않을 수 있습니다. 따라서 최소 실행 가능한 제품 (MVP) 개발, 다 변수 테스트, 빠른 반복, devops 모델에서 조직 경계를 넘어 긴밀하게 작업하는 것과 같은 새로운 클라우드 네이티브 접근 방식을 채택해야합니다.

인프라 서비스, 자동화 / 오케스트레이션, 가상화 및 컨테이너화, 마이크로 서비스 아키텍처, 관찰 가능성을 포함하여 클라우드 네이티브가되는 데는 여러 측면이 있습니다. 이 모든 것은 일을하는 새로운 방식을 의미하며, 이는 새로운 방식을 배우면서 오래된 습관을 깨는 것을 의미합니다. 따라서 측정 된 속도로 수행하십시오.

관련 클라우드 네이티브 기술에 대해 자세히 알아보기

  • PaaS (Platform-as-a-Service) 설명
  • 멀티 클라우드 설명
  • 애자일 방법론 설명
  • 애자일 개발 모범 사례
  • Devops 설명
  • DevOps 모범 사례
  • 마이크로 서비스 설명
  • 마이크로 서비스 자습서
  • Docker 및 Linux 컨테이너 설명
  • Kubernetes 튜토리얼
  • CI / CD (지속적 통합 및 지속적 전달) 설명
  • CI / CD 모범 사례