Serverless Framework VS Chalice

Gyullbb·2020년 1월 29일
1

Serverless Framework

목록 보기
1/3

1. Serverless

Serverless framework와 Chalice의 비교를 하기 전 간단하게 serverless개념에 대해서 알아보자.

서버리스란 클라우드 컴퓨팅 실행 모델의 하나로 '서버, 운영체제 유지, 용량 관리' 등의 작업들을 클라우드 제공 업체가 관리함으로써 개발자는 서버의 존재를 신경쓰지 않고 작업을 할 수 있다. 서버리스 모델은 기존 사용자가 용량 단위를 미리 구매하던 IaaS(Infrastructure-as-a-Service)와는 다르게 처리량, 메모리 설정에 따라 용량을 조절할 수 있다. 요금 지불 또한 이 일관된 처리량과 실행기간에 대해 이루어진다.

서버리스 컴퓨팅에는 주요한 방법 2가지가 있는데 BaaS(Backend-as-a-Service),FaaS(Function-as-a-Service)가 그것이다. BaaS란 서비스형 백엔드로 서버 기술을 몰라도 그 환경에 연결되는 모바일 앱을 만들 수 있게 돕는 서비스이다. BaaS를 사용하지 않는다면 개발 시 다양한 백엔드 기능(푸시알림, 데이터 저장, 사용자 관리 etc..)을 직접 개발해야 하지만 BaaS를 이용함으로써 직접 코드를 개발하지 않고 앱을 클라우드와 연동시켜 BaaS에서 제공하는 API를 호출하여 해당 기능을 쉽게 사용할 수 있다.

FaaS란 프로젝트를 여러개의 함수로 쪼개서 매우 거대하고 분산된 컴퓨팅 자원에 쪼개놓은 함수를 등록하고, 특정 이벤트가 발생했을 때 함수들이 실행되고 이벤트가 끝나면 종료되는 방식을 의미한다. 이벤트가 발생했을 때에만 함수가 실행되므로 비용이 줄어들며 확장성은 좋아진다.

2. Serverless Framework

Serverless Framework는 AWS에서 제공하는 AWS Lambda에서 애플리케이션을 구축하기 위해 개발된 첫 번째 Framework이다. AWS Lambda, API Gateway와 같은 Serverless 자원들을 사용하여 Serverless 아키텍처를 쉽게 설계, 구현, 배포, 관리 할 수 있게 도와준다. 현재 AWS, Google Cloud Platform, Azure, Knative등 다양한 cloud제공 업체에서 지원을 한다.

기본 언어는 node.js이나 이 외에도 swift, ruby, Go, java, python, PHP 언어를 모두 지원한다. Serverless Framework는 아주 활성화 되어있는 Framework중 하나이기 때문에 관련된 Plugin이 굉장히 많다는 장점이 있다. 이 Plugin을 활용하여서 HTTP, Tracing, Step Functions 등의 다양한 기능을 활용할 수 있다.

3. Chalice

Chalice는 serverless app을 Python으로 작성하기 위한 목적으로 만들어진 프레임이다. Chalice를 이용함으로써 Amazon API GateWay와 AWS Lambda를 사용하여 application을 빠르게 생성하고 배포할 수 있다. Chalice공식 홈페이지에 들어가면 아래 세가지를 제공한다고 쓰여있다.

  • App을 생성하고, 배포하고, 관리하기 위한 command line tool
  • python 코드로 선언하기 위한 친숙하고 쉽게 사용할 수 있는 API
  • 자동적인 IAM policy generation

생긴 목적 자체가 serverless app 코드를 python으로 작성하기 위함이므로 python을 이용한 분석 등에 이용하기에는 다른 프레임에 비해 편리하다는 장점이 있다.

4. Chalice -> Serverless???

|Chalice 초기 선택 이유|

현재 회사는 Chalice를 이용하여서 serverless환경을 개발하고 있다. Chalice를 선택한 이유는 바로 python의 장점 때문이다. python은 다른 언어에 비해서 데이터 분석에서 압도적으로 강한데 이미지,영상 전처리가 필요한 회사의 특성상 python은 필수 고려사항이었다. Chalice는 serverless app을 python으로 작성하기 위해 만들어진 프레임이기 때문에 python을 사용해야하는 회사의 목적과 맞아떨어지는 프레임이었다.

|Chalice의 문제점|

그러나 Chalice의 기능에는 Lambda 생성, Lambda에 trigger설정, Amazone API Gateway생성 이외의 기능이 거의 없기 때문에 개발에 필요한 Step Function, S3, key 등의 설정들을 모두 Terraform에 넣어야 했다. 이럴 경우 발생하는 문제점들이 있었는데 그 중 하나는 바로 Lambda의 수정을 즉각적으로 Step Function에 반영할 수 없다는 문제점이었다. Lambda는 Chalice에서 생성,관리하고 Step Function은 Terraform에서 관리하기 때문에 발생하는 일이었다.

|Serverless Framework|

이를 해결할 수 있는 방법 중 하나가 Serverless Framework이다. Serverless에는 앞에서 말했다시피 Plugin이 굉장히 많은데, 이 Plugin중에 AWS Step Functions 라는 Plugin이 있다. 이를 사용하면 Serverless환경에서 Step Function을 사용할 수 있게 되어 기존 Chalice를 사용할 때 문제점이었던 Lambda와 Step Function을 따로 관리하는 문제점이 해결된다. 하지만 이대로 Serverless를 바로 사용하기에는 아직 해결해야 할 점이 있다.

|무엇을 더 알아보아야 하는가|

우선 Serverless의 기본언어는 node.js로 python을 serverless에서 사용하기 위해서는 엄청난 환경설정이 필요하다. (사실 이부분은 내가 직접 해보지 않아서 직접 경험해야 할 부분이다.) 기존 회사의 Chalice구현을 Serverless로 바꾸기 위해서는 우선 Serverless에서 python 설정을 쉽게, 빠르게 할 수 있는 방법을 찾거나 , 정확한 환경설정을 시행할 수 있어야 한다.

이후부터는 Serverless에서 Python 환경설정을 하는 것을 시도해 볼 예정이다. 이에 대한 글을 다음 글에 올리도록 하겠다.

5. 참조

0개의 댓글