Feb 23, 2016

클라우드 기술에 대한 세 가지 패러다임 변화

윤석찬 AWS 테크 에반젤리스트, 2016.02.23

최근 10년 동안 클라우드 기술 혁신이 일어남에 따라 민첩한 비즈니스에 큰 영향을 미치는 애플리케이션 개발 및 서비스 배포에 대한 새로운 패러다임이 생겨나고 있다. 과거 데이터센터를 직접 운영하던 온프레미스(On-premise) 환경에서는 물리적 서버를 준비하고, 운영체제 설치 및 앱 서비스 배포를 하는데 몇 주간의 시간이 걸렸다.

​그러나, 클라우드 시대에 접어 들어서는 단 몇 분안에 우리가 원하는 서버 자원을 준비하고 앱을 배포할 수 있게 되었다. 또한, 이들 자원은 사용자의 트래픽에 따라 언제든지 탄력적으로 확장 및 가용성을 가질 수 있게 되었다. 2006년 아마존웹서비스(AWS)의 아마존 EC2(Amazon Elastic Compute Cloud: Amazon EC2)라는 서비스는 가상 서버를 실제 서비스에 사용할 수 있도록 다양한 CPU와 메모리를 가진 40여가지 인스턴스 타입(Instance Type)을 지원하여, 원할 때 마다 언제든지 준비된IT 자원을 얻을 수 있는 민첩성을 얻게 되었다.


■컨테이너를 통한 수초 단위로 앱배포 단축

​클라우드 내 가상 서버 역시 서버이다. 다양한 앱을 실행하는데 있어 운영 체제와 플랫폼의 제한 사항은 그대로다. 따라서, 내부 자원을 효율적으로 사용하고, 최근에는 좀 더 빠르게 앱을배포하고자 하는 컨테이너(Container)라는 조류가 나타났다.

​컨테이너 서비스란 기존 서버를 통해 2개 이상의 애플리케이션을 배포하는 부담을 줄이기 위해, 앱을 실행하는데 필요한서비스 프레임워크,라이브러리, 소스 코드를별도의 격리된 이미지파일로 만든 후 이를 독자적으로 실행할 수 있도록 만든 것이다. 대표적으로 도커(Docker)가 이러한 컨테이너 서비스 기술을 주도하고 있다.

​AWS에서도 2014년 AWS 리인벤트(re:Invent)를 통해 아마존 EC2 컨테이너 서비스(Amazon EC2 Container Service: ECS)를 공개했다. 이를 사용하면 Amazon EC2 가상 서버 클러스터에서 도커 지원 애플리케이션을 손쉽게실행할 수 있다.

​개발자들은 로컬PC에서 컨테이너로 패키징된 앱을 아마존 ECS가 관리하는 클러스터를 통해 단일 컨테이너에서 시작하여 수백개의 가상 서버에서 실행되는 수천개의 컨테이너까지 일반적으로 애플리케이션을 실행하는 것처럼 쉽게 확장할 수 있다. 즉, 컨테이너 서비스를 통해 기존 가상 서버 자원에 별도의 격리된 작은 마이크로 서비스를 원할 때 마다 언제든지 수 초 내에 배포할 수 있는 상태가 되었다.

​■서버 없는 클라우드 함수의 등장

​또 하나의 주목할 만한 서비스는 바로 AWS 람다(Lambda)이다. AWS 람다 역시2014년 AWS 리인벤트에서 발표된 서비스로 클라우드에서 확장성에 대한 고민 없이도 경량의 애플리케이션을 실행하는 새로운 클라우드 서비스 환경이다.

​개발자가 간단히 파이썬, 자바스크립트 혹은 자바 코드 스니핏을 작성하여, 특정한 클라우드서비스 이벤트에 반응하는 함수로서 실행할 수 있다. 예를 들어 아마존 심플 스토리지(Amazon Simple Storage Service: Amazon S3) 스토리지에 사진을 업로드한 후 이미지 썸네일을 만드는 기능을 생각했을 때, Amazon S3에 업로드 되었다는 이벤트에만 반응하는 람다함수를 작성하기만 하면 된다. 람다 함수는 코드가 실행되는 짧은 시간(수 밀리 세컨드)에만 과금이되며,코드가 실행되지 않을 때는요금이 부과되지 않는다.

​AWS 람다를 활용하면, 사실상 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도 서버 없이 실행할 수 있다. 소스코드를 업로드하기만 하면, 높은 가용성으로 코드를 실행하고,가용성 및 확장성 등 필요한 모든 것을 처리하기 때문이다. 특히, AWS의 자원 이벤트 변화에만 의존하지 않고 2015년 6월 출시된 아마존 API 게이트웨이(Amazon API Gateway)와도 연계가 가능하다. 이를 통해 외부에서 들어오는다양한 API 호출 대한 실행도 가능하여, API Gateway와 함께 AWS 자원을 제어하는 모든 종류의 기능을 수행할 수 있다.

​특히,모바일, 웹, 기업용 또는 IoT 애플리케이션에서 REST 기반 호출 서비스를 위한 API를 개발자가 손쉽게 생성, 게시, 유지관리, 모니터링할 수 있게 해준다. 기존에 API를 운영하고 있는 경우, 외부 혹은 사내팀에게 API를 제공할 때 필요한 많은 부담을 덜어주는 역할을 한다. 아마존 API 게이트웨이는 아마존 EC2에 있는 애플리케이션, 람다함수및 외부에 있는 API 등을 엔드포인트로 사용할 수 있을 뿐 아니라 API 키관리, 트래픽 관리, 보안 및 인증 그리고 iOS/안드로이드 및 자바스크립트 SDK(Software Development Kits)을 자동으로 생성해 준다.

​즉, AWS 람다와 아마존 API 게이트웨이는 기존 가상서버, 컨테이너 서비스와 함께 서버 없이도 확장성을 고민하지 않고도 바로 원하는 애플리케이션 기능을 수 밀리세컨드 단위로 수행할 수 있다. 최근에는 이를 바로 개발 현장에 접목할 수 있는 Serverless FRAMEwork이라는 오픈 소스개발 플랫폼이 나와서 각광을 받고 있기도 하다.

​10년에 걸친 클라우드 기술의 패러다임 변화는 개발자들에게 큰 수고와 비용 없이도 좀 더 빠르고 민첩하게 다양한 애플리케이션을 만들고, 서비스 운용을 위한 확장성 및 가용성에 대한 다양한 선택지를 제공해 주고 있다.

ZDNet Korea