클라우드 네이티브란?
클라우드 네이티브 애플리케이션은 클라우드 환경에 통합되도록 설계된 마이크로서비스라는 별개의 재사용 가능한 구성요소로 이루어져 있습니다.
검은색과 파란색 배경
클라우드 네이티브란?

클라우드 네이티브는 애플리케이션이 있는 위치보다는 이를 구축하고 배포하는 방법과 더 관련이 있습니다.

  • 클라우드 네이티브 애플리케이션은 클라우드 환경에 통합되도록 설계된 마이크로서비스라는 별개의 재사용 가능한 구성요소로 이루어져 있습니다.

  • 이러한 마이크로서비스는 구성 요소로서의 역할을 하며, 종종 컨테이너에 패키징되어 있습니다.

  • 마이크로서비스는 전체적으로 함께 작동하여 애플리케이션을 구성하지만, 자동화와 오케스트레이션 프로세스를 통해 각각을 별도로 확장하고 지속적으로 개선하며 빠르게 반복할 수 있습니다.

  • 클라우드 네이티브 애플리케이션의 민첩성과 지속적인 개선에 각 마이크로서비스의 유연성이 더해집니다.

아래 "클라우드 네이티브란?" 비디오에서 Andrea Crawford 씨가 다음과 같은 주요 개념을 간략하게 설명합니다.

마이크로서비스 및 컨테이너

마이크로서비스(마이크로서비스 아키텍처라고도 함)란 하나의 애플리케이션이 다수의 보다 작은, 느슨하게 결합된, 개별 배포가 가능한 컴포넌트 또는 서비스로 구성되어 있는 아키텍처 접근 방식입니다. 이러한 서비스(마이크로서비스라고도 함)는 통상적으로 데이터베이스와 데이터 모델을 포함한 자체 기술 스택을 보유하며, REST API, 이벤트 스트리밍 및 메시지 브로커의 조합을 통해 서로 통신합니다.

마이크로서비스는 서로 간에 영향을 주거나 일반 사용자 환경에 지장을 주지 않고 독립적으로 배포 및 재배포될 수 있으므로, 지속적 통합/지속적 배포(CI/CD) 또는 DevOps 등의 자동화된 반복적인 딜리버리 방식에 매우 적합합니다. 

마이크로서비스는 전혀 새로운 클라우드 네이티브 애플리케이션의 작성에도 사용될 뿐만 아니라 기존의 모놀리식 애플리케이션의 현대화에도 사용될 수 있습니다.

IT 임원, 개발 임원 및 개발자를 대상으로 실시한 IBM 설문조사에서 마이크로서비스 사용자의 87%는 마이크로서비스 채택이 비용과 노력을 지불할 만한 가치가 있다는 데 동의했습니다.

개발자들은 종종 마이크로서비스를 컨테이너 내에 배포합니다. 이 경우 컨테이너는 모든 환경에서 코드를 실행하는 데 필요한 모든 운영 체제(OS) 라이브러리 및 종속 항목과 애플리케이션 소스 코드(이 경우 마이크로서비스 코드)를 결합하는 경량의 실행 가능한 애플리케이션 구성 요소입니다. 가상 머신(VM)보다 작으면서도 리소스 효율성과 이식성이 뛰어난 컨테이너는 최신 클라우드 네이티브 애플리케이션의 실질적인 컴퓨팅 유닛입니다.

컨테이너는 퍼블릭 클라우드, 프라이빗 클라우드 및 온프레미스 인프라 등의 하이브리드 멀티클라우드 환경에서 일관된 배포 및 관리 경험을 지원함으로써 마이크로서비스의 이점을 극대화합니다. 그러나 클라우드 네이티브 애플리케이션이 증가됨에 따라 컨테이너 및 관리 복잡도 역시 증가됩니다. 컨테이너형 마이크로서비스를 사용하는 대부분의 기업들은 또한 Kubernetes 등의 컨테이너 오케스트레이션 플랫폼을 사용하여 자체 규모에 맞게 컨테이너 배포와 관리를 자동화합니다.

마이크로서비스와 컨테이너를 사용해야 하는 이유
장점 및 단점

IBM 고객들은 기존 애플리케이션을 개선하고, 새로운 애플리케이션을 구축하며, 사용자 경험을 개선해야 하는 업무가 점점 더 많아지고 있음을 알게 됩니다. 클라우드 네이티브 애플리케이션은 앱 성능, 유연성 및 확장성을 개선함으로써 이러한 요구사항을 충족합니다.

장점

  • 기존의 모놀리식 앱과 비교할 경우, 클라우드 네이티브 애플리케이션은 Agile 및 DevOps 프로세스를 사용하여 반복적인 개선이 이루어지므로 관리가 더 쉬울 수 있습니다.

  • 개별 마이크로서비스로 구성된 클라우드 네이티브 애플리케이션을 점진적이며 자동으로 개선하여 새롭고 향상된 애플리케이션 기능을 지속적으로 추가할 수 있습니다.

  • 개선 작업이 무중단 방식으로 이루어지므로 다운타임이나 일반 사용자 환경의 중단이 발생하지 않습니다.

  • 클라우드 네이티브 앱의 기반이 되는 탄력적인 인프라를 사용하여 확장 또는 축소가 더 쉬워집니다.

  • 클라우드 네이티브 개발 프로세스는 오늘날의 비즈니스 환경에서 요구하는 속도와 혁신에 더 근접하게 부합됩니다.

단점

  • 마이크로서비스는 반복적 접근 방식을 통해 애플리케이션의 개선을 구현하지만, 이로 인해 더 많은 요소를 관리해야 합니다. 하나의 대형 애플리케이션이 아닌, 훨씬 작고 개별적인 서비스를 관리해야 할 필요성이 있습니다.

  • 클라우드 네이티브 앱에서는 DevOps 파이프라인의 관리, 기존 모니터링 구조의 대체 및 마이크로서비스 아키텍처의 제어를 위한 추가적인 툴 세트가 필요합니다.

  • 클라우드 네이티브 애플리케이션으로 인해 신속한 개발과 배포가 가능하지만, 이러한 혁신의 속도에 대처할 수 있는 비즈니스 문화도 요구됩니다.
애플리케이션 예제

클라우드 네이티브 애플리케이션에는 종종 매우 특정한 기능이 있습니다. 클라우드 네이티브 애플리케이션이 여행 웹 사이트에서 어떻게 사용될 수 있는지를 고려해 봅니다. 항공기, 호텔, 자동차, 특가 등 사이트에서 다루는 각각의 주제가 자체 마이크로서비스입니다. 각 마이크로서비스는 기타 마이크로서비스와는 독립적으로 신규 기능을 롤아웃할 수 있습니다. 특가 및 할인 행사도 개별적으로 확장이 가능합니다. 여행 사이트는 고객에게 전체적으로 제공되지만, 각 마이크로서비스는 독립적으로 유지되며 다른 서비스에 영향을 주지 않고 필요에 따라 스케일링하거나 업데이트할 수 있습니다. 다음은 다른 클라우드 네이티브 애플리케이션의 몇 가지 사례입니다.

  • American Airlines(2:50)는 IBM과의 제휴를 통해 악천후 패턴 중에도 실행되는 Dynamic Rebooking 앱을 구축했습니다. 이 앱은 사용자에게 더 많은 정보와 개선된 재예약 프로세스를 제공함으로써 고객 경험을 향상시켰습니다.

  • 교육 및 훈련용 분석 플랫폼인 XComP Analytics(1:56)는 분석 문제를 해결해야 했습니다. 그러나 한 가지 문제를 해결하는 과정에서 회사는 IBM Cloud Garage와 협력하여 6개의 신제품을 개발할 수 있었습니다. 이 솔루션에는 특정 분석 문제의 해결을 위한 IBM Watson의 플러그인과 마이크로서비스 아키텍처의 사용이 포함되어 있습니다.

  • UBank(2:45)에는 주택 자금 융자 오퍼링을 개선하고 고객들이 주택 자금 융자 프로세스를 마칠 수 있도록 지원해야 하는 비즈니스 요구사항이 있었습니다. 이 회사의 스마트 어시스턴트 앱인 RoboChat은 이러한 필요성을 충족시켰으며, IBM DevOps 툴체인을 사용하여 구축되었습니다. RoboChat을 사용한 고객들은 15% 높은 주택 자금 융자 완료율을 기록했습니다.

  • 의료 연구의 중요사항 중 하나는 의사들에게 환자 치료의 모범 사례에 대해 조언하는 것입니다. 그러나 우수 사례를 보여주는 의료 연구가 실제 의료 행위에 도입되기까지는 17년이 걸립니다. ThinkResearch(2:06)에서는 IBM Cloud를 사용하여 치료 시점에서 최상의 의료 정보를 제공합니다. ThinkResearch DevOps 팀은 IBM Cloud 인프라 및 관리형 Kubernetes 서비스를 사용하여 인프라보다 혁신과 환자 치료에 주력할 수 있습니다.

IBM Cloud Garage는 확장형의 혁신적인 클라우드 네이티브 앱을 신속하게 구축할 수 있도록 IBM 고객들에게 컨설팅 전문 지식을 제공합니다. 이 제품은 모든 규모의 기업이 실제 비즈니스 요구사항을 해결하는 앱을 설계하고 구축할 수 있는 혁신 허브를 제공합니다.

개발 원칙

새로운 클라우드 네이티브 애플리케이션을 작성하거나 기존 애플리케이션을 현대화하는지에 관계없이 개발자는 다음과 같은 일관된 원칙을 준수합니다.

  • 마이크로서비스 아키텍처 접근 방식 준수: 애플리케이션을 마이크로서비스라고 하는 단일 기능 서비스로 구분합니다. 마이크로서비스는 느슨하게 결합되어 있지만 독립적으로 유지되므로, 가동 중단 없이도 애플리케이션의 점진적인, 자동화된, 지속적인 개선을 허용합니다.

  • 유연성과 확장성 극대화를 위해 컨테이너에 의존: 컨테이너는 모든 코드와 종속성을 한 곳에 모아 소프트웨어를 패키지화하여 어디서나 소프트웨어를 실행할 수 있도록 합니다. 이를 통해 멀티클라우드 환경에서 유연성과 이식성을 극대화할 수 있습니다. 또한 사용자가 정의한 Kubernetes 오케스트레이션 정책을 통해 컨테이너를 빠르게 확장하거나 축소할 수 있습니다.

  • 애자일 방법론 채택: 애자일 방법론은 작성 및 개선 프로세스를 가속화합니다. 개발자가 사용자 피드백을 기반으로 업데이트를 신속하게 반복할 수 있으므로, 작동하는 애플리케이션 버전이 일반 사용자의 기대에 최대한 근접하게 부합할 수 있습니다.
스토리지

클라우드 네이티브 애플리케이션은 종종 컨테이너에 의존합니다. 컨테이너의 장점은 유연성, 경량 및 휴대성에 있습니다. 컨테이너의 초기 사용에서는 하나의 사용자 세션의 사용자 데이터를 다음 사용자 세션에 저장할 필요가 없는 Stateless 애플리케이션에 초점을 맞추는 경향이 있었습니다.

그러나 더 많은 핵심 비즈니스 기능이 클라우드로 이동함에 따라 클라우드 네이티브 환경에서 영구 스토리지 문제를 해결해야 합니다. 따라서 개발자는 클라우드 스토리지에 접근하는 새로운 방법을 고려해야 합니다.

클라우드 네이티브 애플리케이션 개발이 마이크로서비스 및 모듈형 접근 방식을 취하듯이, 클라우드 네이티브 스토리지도 마찬가지입니다. 클라우드 네이티브 데이터는 이벤트 또는 시스템 로그, 관계형 데이터베이스, 문서 또는 오브젝트 저장소 등 다양한 위치에 상주할 수 있습니다.

데이터 위치, 보관 요구사항, 이식성, 플랫폼 호환성 및 보안은 개발자가 클라우드 네이티브 스토리지를 계획할 때 고려해야 하는 일부 측면에 불과합니다.

클라우드 네이티브 데이터 스토리지 자세히 보기
클라우드 네이티브 및 기존 애플리케이션 비교

클라우드 네이티브 및 클라우드 지원 비교

클라우드 지원 애플리케이션은 기존 데이터 센터에 배포하기 위해 개발되었지만 나중에 클라우드 환경에서도 실행할 수 있도록 변경된 애플리케이션입니다. 그러나 클라우드 네이티브 애플리케이션은 클라우드에서만 작동하도록 빌드되었습니다. 개발자들은 확장 가능하고 플랫폼에 구애받지 않으며 마이크로서비스로 구성되도록 클라우드 네이티브 애플리케이션을 설계합니다.

클라우드 네이티브 및 클라우드 준비 비교

클라우드 컴퓨팅의 짧은 역사에서 "클라우드 준비"의 의미는 여러 번 바뀌었습니다. 처음에 이 용어는 인터넷 상에서 작동하도록 설계된 서비스나 소프트웨어에 적용되었습니다. 오늘날, 이 용어는 클라우드 환경을 위해 재구성된 기존 앱 또는 클라우드 환경에서 작동하는 애플리케이션을 기술하기 위해 보다 자주 사용됩니다. "클라우드 네이티브"라는 용어는 훨씬 짧은 역사를 가지고 있으며 처음부터 클라우드에서만 작동하도록 개발되어 클라우드 아키텍처의 특성을 활용하는 애플리케이션 또는 클라우드 네이티브 원칙으로 리팩터링되고 재구성된 기존 앱을 의미합니다.

클라우드 네이티브 및 클라우드 기반 비교

클라우드 기반 서비스 또는 애플리케이션은 인터넷을 통해 제공됩니다. 이는 다수의 클라우드 오퍼링에 자유롭게 적용되는 일반 용어입니다. 클라우드 네이티브는 보다 특정한 용어입니다. 클라우드 네이티브는 클라우드 환경에서 작동하도록 설계된 애플리케이션을 말합니다. 이 용어는 마이크로서비스, 지속적 통합 및 지속적 딜리버리(CI/CD)에 의존하고 모든 클라우드 플랫폼을 통해 사용할 수 있는 애플리케이션을 의미합니다.

클라우드 네이티브 및 클라우드 우선 비교

"클라우드 우선"은 조직이 새로운 IT 서비스를 시작하거나 기존 서비스를 갱신하거나 레거시 기술을 대체할 때 클라우드 리소스를 우선적으로 사용하는 비즈니스 전략을 의미합니다. 비용 절감과 운영 효율성이 이 전략의 장점입니다. 클라우드 네이티브 애플리케이션은 클라우드 리소스만 사용하고 클라우드 아키텍처의 유용한 특성을 활용하도록 설계되었으므로 클라우드 우선 전략과 잘 맞습니다.

관련 솔루션
IBM 클라우드 네이티브

IBM Cloud는 클라우드 네이티브 앱 개발의 선두주자이며, 개방형의 안전하고 통합된 플랫폼에서 엔터프라이즈 앱을 빠르게 구축하기 위한 신뢰할 수 있는 파트너입니다.

IBM 클라우드 네이티브 살펴보기
Red Hat OpenShift on IBM Cloud

클릭 한 번으로 컨테이너 기반 애플리케이션을 위해 가용성이 뛰어난 완전 관리형 Kubernetes 클러스터를 배포하세요.

Red Hat OpenShift on IBM Cloud 살펴보기
IBM Cloud Code Engine

컨테이너 이미지, 배포 작업, 소스 코드를 서버리스 워크로드의 형태로 실행합니다. 사이징, 배포, 네트워킹, 스케일링이 필요하지 않습니다.

IBM Cloud Code Engine 살펴보기
리소스 마이크로서비스란?

마이크로서비스 아키텍처에서 각 애플리케이션은 더 작고 느슨하게 결합되고 독립적으로 배포 가능한 여러 서비스로 구성됩니다.

컨테이너란?

컨테이너는 애플리케이션 코드를 라이브러리 종속성과 패키지로 결합하는 실행 가능한 소프트웨어 단위이며, 데스크탑, 기존 IT 또는 클라우드 등 어디서나 실행할 수 있습니다.

Kubernetes란?

Kubernetes는 컨테이너화된 애플리케이션의 배포, 관리 및 확장을 자동화하는 오픈 소스 컨테이너 오케스트레이션 플랫폼입니다.

다음 단계

지난 20년 동안 IBM은 Cloud Native Computing Foundation을 포함하여 오픈 소스 코드, 커뮤니티 및 거버넌스에 상당한 투자를 했습니다.현재 20,000개 이상의 Kubernetes 클러스터가 운용 및 실행되고 있는 IBM Cloud는 우수한 성능을 제공하도록 구축되었습니다.또한 데이터 암호화에 대한 업계 최고 표준 중 하나를 제공하며 30개 이상의 컴플라이언스 프로그램을 준수하고 있습니다.

IBM Cloud의 클라우드 네이티브 살펴보기