ServerLess

서버리스 컴퓨팅은 클라우드 컴퓨팅 실행모델의 하나로 클라우드 제공자는 동적으로 머신 자원의 할당을 관리한다. 가격은 미리 구매한 용적 단위가 아닌 애플리케이션이 소비한 자원의 실제 양에 기반을 두는 유틸리티 컴퓨팅의 일종

📖 1. 서버리스 컴퓨팅 특징 2. 서버리스 기술의 역사 3. 서버리스 사용 사례

서버리스 컴퓨팅은 서버 관리가 필요 없이 응용 프로그램을 작성하고, 실행하는 개념이다. 하나 이상의 기능으로 번들된 응용 프로그램을 서버리스 플랫폼에 업로드한 후 필요에 따라 실행, 확장 및 과금되는 응용 프로그램을 배치하는 상당히 정교한 배포 모델이다. 이러한 서버리스 컴퓨팅은 서버를 사용하여 개발된 코드를 호스트 및 실행환경에서 실행시키지 않아도 된다는 의미는 아니며, 운영 엔지니어가 더 이상 필요하지 않다는 의미가 아니다.

서버리스 컴퓨팅의 사용자가 더 이상 서버 프로비저닝(Provisioning), 유지보수, 업데이트(Update), 확장 및 용량에 대한 계획에 시간과 자원을 소비할 필요가 없다는 뜻

개발자는 응용 프로그램의 비즈니스 로직개발에 주력하게 되고, 시스템 운영 엔지니어는 보다 중요한 업무에 집중할 수 있도록 한다.

  • 개발자 : 서버리스 플랫폼을 위한 코드를 작성하고 편익을 얻음
  • 배포자 : 외부 또는 내부 고객을 위해 서버리스 플랫폼의 API를 배포 서버는 서버리스 플랫폼을 계속해서 실행해야 한다. 배포자는 서버(또는 가상머신이나 컨테이너)를 관리해야 하며, 유휴상태일 때도 플랫폼을 실행하는데 약간의 비용이 발생하게 된다. 자체 호스팅 시스템에서는 서버가 없는 것처럼 보일 수 있다. 일반적으로 한 팀이 배포자의 역할을 수행하고, 또 다른 팀은 개발자의 역할을 수행한다. 서버리스 컴퓨팅 플랫폼은 다음 중 하나 또는 둘 모두를 제공할 수 있다. – FaaSFunctions-as-a-Service FaaS는 이벤트 중심의 컴퓨팅 환경을 제공하며, 개발자는 이벤트 또는 HTTP 요청에 의해 트리거(Trigger)되는 함수를 개발하여 응용 프로그램 코드를 실행하고 관리함. 개발자는 작은 단위의 코드를 FaaS에 구현하며, 이 코드는 필요에 따라 별도의 작업으로 실행되며, 서버 또는 기타 기본 인프라를 관리 할 필요 없이 확장됨
  • BaaSBackend-as-a-Service BaaS는 응용 프로그램의 핵심 기능 하위 집합을 대체하며, 타사 API 기반 서비스이다. 이러한 API는 자동 스케일링(Auto-scaling) 및 투명하게 작동하는 서비스로 제공되기 때문에 개발자에게는 서버가 없는 것처럼 보임 서버리스 제품이나 플랫폼은 개발자에게 다음과 같은 편익을 제공한다.
  • 제로 서버 옵션(Zero Server Options) 서버리스는 서버 리소스 유지보수의 오버헤드를 제거함으로써 실행 중인 애플리케이션의 비용이 대폭 감소 · 서버 인프라를 프로비저닝(Provisioning), 업데이트 등의 관리하지 않음 서버, 가상머신 및 컨테이너를 관리하는 것은 기업에 상당한 경비를 초래함. 서버리스 제품이나 플랫폼으로 인해 이러한 비용을 크게 절감시킬 수 있음. · 유연한 확장성 서버리스 FaaS 또는 BaaS 제품은 각 수신 요청을 즉시 처리 할 수 있음. 개발자는 서버리스 플랫폼의 사전 계획된 용량 정보를 알지 못하며 자동 스케일링 트리거 또는 규칙을 구성해야 함. 스케일링은 개발자의 개입 없이 자동으로 동작하며, 요청 처리가 완료되면 서버리스 FaaS는 계산 리소스를 자동으로 축소하여 유휴 용량이 없는지 확인. – 유휴상태일 때 계산 비용 없음 서버리스의 가장 큰 이점 중 하나는 유휴 상태일 때 비용이 들지 않는다는 것임. 예를 들어 서버리스 컴퓨팅 서비스는 유휴 가상 머신 또는 컨테이너에 비용을 청구하지 않음. 즉, 코드가 실행되고 있지 않거나 의미 있는 작업이 수행되고 있지 않은 경우에 요금이 부과되지 않음. 또한 데이터베이스의 경우, 엔진 용량에 대해 유휴상태로 대기(Cold Start)하는 것은 무료로 진행됨. 물론 여기에는 상태 저장 비용이나 추가된 용량/기능/특징 세트와 같은 다른 비용은 제외됨

서버리스 기술의 역사

2006년 Zimki라는 플랫폼에서 사용 2011년 파스(Parse)와 2012년 파이어베이스와 같은 기업에서 백앤드 서비스(BaaS)로 개발 2014년 11월 아마존은 AWS 람다(Lambda)를 출시 2016년 초 IBM OpenWhisk on Bluemix(IBM 클라우드 기능으로 Apache OpenWhis로 관리되는 핵심 공개 소스 프로젝트), Google Cloud Functions 및 Microsoft Azure Functions를 발표하였다. 2017년 Huawei Function Stage는 시작 이 외에 수많은 오픈 소스 서버리스 프레임워크가 존재

일반적인 서버리스 사용 사례

  • 비동기식, 동시성, 독립 작업 단위로 병렬화하기 쉬운 경우
  • 빈번하거나 가끔 발생하는 스케일링 요구 사항에서 발생하는 변화와 수요가 있을 경우
  • 비상태(Stateless), 일회성, 일시적으로 콜드 스타트 시간이 필요하지 않은 경우
  • 변화하는 비즈니스 요구사항이 매우 역동적이어서 빠른 개발 속도가 필요한 경우

무상태성(Stateless)

stateless processing에 대해 이야기할 때 입력 외에 다른 것이 필요하지 않은 데이터 처리를 의미

즉, 처리 결과가 입력에 의해서만 정의되며 이러한 특징은 멱등성으로 이어지게 된다.

e.g

동일한 텍스트 파일을 pdf로 변환하는 프로그램 = 횟수에 관계없이 결과는 항상 동일 항목 목록의 총 가격을 계산하는 프로그램 = 동일한 항목의 동일한 목록인 한 결과는 동일

이러한 유형의 계산을 side effects-free 부작용이 없는 계산을 pure function 라고 합니다 .

pure function은 수평 확장이 매우 쉽다. 50개의 파일을 pdf로 변환하는 작업을 병렬로 쉽게 수행할 수 있다. 결국, 하나의 파일 변환이 다른 변환 결과를 방해할 수 없습니다.

무상태 처리의 또 다른 특징은 멱등성 

Leave a Comment