클라우드 네이티브 앱 (Cloud Native Apps)

개념

클라우드 네이티브 애플리케이션은 클라우드 컴퓨팅의 혁신을 활용하도록 특화 설계되었다. 이러한 애플리케이션은 각각의 클라우드 아키텍처와 쉽게 통합되며, 클라우드의 리소스와 확장 기능을 활용한다. 또한 클라우드 네이티브 애플리케이션은 클라우드 컴퓨팅 기반 인프라의 혁신을 활용하는 애플리케이션을 의미한다. 오늘날 클라우드 네이티브 애플리케이션은 클라우드 공급자의 데이터센터에서 실행되는 앱과 온프레미스(on-premises) 클라우드 네이티브 플랫폼에서 실행되는 앱을 포함한다.

다루는 문제

전통적으로, 온프레미스 환경은 상당한 맞춤형 방식으로 컴퓨팅 리소스를 제공했다. 각 데이터센터는 애플리케이션이 특정 환경에 강결합(tightly coupled)된 형태의 서비스를 실행하고 있었으며, 가상 머신 및 서비스와 같은 인프라에 대한 수동 프로비저닝에 크게 의존하는 경우가 많았다. 이는 결과적으로 개발자와 해당 애플리케이션이 특정 데이터센터를 사용하도록 한정시켰다. 클라우드용으로 설계되지 않은 애플리케이션은 클라우드 환경의 탄력성과 확장성 기능을 활용할 수 없었다. 예를 들어, 정상적으로 실행하기 위해 수동 개입이 필요한 앱은 자동으로 확장할 수 없으며, 오류 발생 시 자동으로 다시 실행할 수도 없다.

문제 해결 방식

클라우드 네이티브 애플리케이션에 대한 “모든 경우에 적용되는” 왕도는 없지만, 몇 가지 공통점은 존재한다. 클라우드 네이티브 앱은 탄력적이고, 관리하기 쉬우며, 함께 제공되는 클라우드 서비스 제품군의 지원을 받는다. 다양한 클라우드 서비스는 높은 수준의 관찰 가능성(observability)을 제공하므로, 문제가 커지기 전에 사용자가 문제를 감지하고 해결할 수 있도록 지원한다. 또한 탄탄한 자동화와 결합되어, 엔지니어가 최소한의 노력으로 영향이 큰 변경을 예측 가능한 형태로 자주 수행할 수 있도록 해 준다.