Serverless Architecture

YongjLEE·2023년 8월 3일
0
post-thumbnail

출처 : https://appinventiv.com/blog/what-is-serverless-computing/

서버리스 아키텍처란?

서버리스라고 하면 서버가 없다고 생각할 수 있다.
그러나 서버리스란 사실 서버가 있지만 내가 관리하지 않는 서버구조이다.
쉽게 설명하자면 서버리스 구조는 클라우드에서 만들어 놓은 서버에 서버 개발자가 함수만 던져넣는 구조이고 서버 개발자는 서버 관리에서 완전히 자유로워지고 실제 구현해야 할 기능에 더 집중할 수 있다. 서버리스 구조에서 서버는 어플리케이션이 필요한 경우에만 시작되고 애플리케이션 코드를 트리거하면 클라우드에서 리소스 할당하는 방식으로 실행된다.

서버리스 개념은 어플리케이션 관점에서 BaaS(Backend as a Service)와 FaaS(Fuction as a Service)로 나누어 살펴보면 이해하기 쉽다.

  • BaaS는 단일 웹페이지나 모바일 앱 기반의 서비스에서 필요한 서버 기능들을 사용하기 위해 이용하는 써드파티(Third Party) 어플리케이션이나 클라우드 서비스를 뜻한다. 즉, 어플리케이션 개발 시 요구되는 복잡한 백엔드(Back-End)기능들을 사용자(개발자)가 직접 개발하지 않고 클라우드 공급자가 제공하는 서비스를 이용해 쉽고 안정적으로 구현하는 것이다.
    ex) 클라우드 데이터베이스 서비스인 Firebase나 클라우드 인증 서비스인 Auth0가 BaaS
  • FaaS는 클라우드 서비스 공급자가 제공하는 서버 기능을 단순하게 이용하는 BaaS와 달리 FaaS는 사용자가 쓸 기능을 함수 담위로 나누어 구현하고 이를 서비스하는 형태이다. FaaS는 Event-Driven(비동기 방식으로 메시지를 전달하는 패턴) 아키텍처를 구현하는데 적합하며 사용자가 원하는 기능을 미리 작성해놓고 특정 이벤트(ex Http Request, API호출, 특정 조건 등)에 의해 실행된다. 이때 서버는 이벤트가 발생할 때마다 실행된다. 비용은 서버가 실행된 횟수와 시간(밀리세컨드)에 따라 산정된다.
    ex) AWS의 Lambda, 마이크로소프트의 Azure Functions, 구글의 Google Cloud Functions

충분 조건

  • 완전 관리형 컴퓨팅
  • 개발자 생산성 확보
  • 지속적 확장 능력

필요 조건

  • 최소 단위 기능기준의 배포와 확장
  • 프로그래밍 모델에서 인프라의 완벽한 은폐
  • 지속적인 스토리지 서비스와 결합(Data 혹은 File)
  • 오직 서비스 요청 기준에 따라 용량 확장 및 축소
  • IDLE 타임에 대한 비용제거(NO Cold Server)
  • 실질적 Fault Tolerant 함수 실행 보장
  • BYOC(Bring Your Own Code)
  • 로깅과 측정은 진리

서버리스 탄생 배경

출처 : https://www.einfochips.com/blog/serverless-architecture-the-future-of-software-architecture

Data Center
IaaS(DC 가상서버)
PaaS(Cloud 가상 서버)
Serverless

서버리스(FaaS)의 장점과 단점(고려사항)

장점

  • 운영 비용 절감
    IaaS나 PaaS와 같이 상시 운영 중인 서버와 달리 요청에 따라 호출되어 처리되기 때문에 유휴 자원이 발생하지 않는다.
  • 높은 가용성과 유연한 확장
    기존 클라우드 서비스보다 더 유연한 확장성을 제공한다. 서버리스의 경우 일반적인 클라우드 서비스와 같이 특정 조건(예를 들어 CPU, RAM 임계치 도달과 같은)에 따라 확장되는 방식이 아닌, 호출될 때마다 새로운 인스턴스가 기동되어 동작하기 때문에 특정 조건을 설정하지 않아도 급격한 트래픽 변화에 유연한 대응이 가능하다.
  • 빠른개발배포
    기능이 함수 단위로 개발되기 때문에 서비스를 빠르고 간단하게 출시할 수 있습니다.

단점

  • Cold Start
    빠른 응답이 필요한 제품일 경우 부적합함. 이는 실행되는 함수가 호출되기 위해 컨테이너가 실행되는 대기 시간(콜드스타트, Cold-Start)이 존재하기 때문인데 서버가 항시 기동되고 있지 않은 서버리스의 특징에 기인하기 때문이다.
  • 긴 시간을 요하는 작업에 불리함
    서버리스는 단순 작업(댓글 쓰기, 이메일 보내기 등)에 적합,동영상 업로드, 데이터 백업 등의 시간을 요하는 작업에는 매우 비효율적이다.
  • 로컬 데이터를 사용할 수 없다.(Stateless)
    하나의 작은 기능으로 나뉘어진 함수들은 요청마다 새로 기동되어 호출되기 때문에 전후 상태를 공유할 수 없다. 또한 변수와 데이터의 공유가 불가능하며, 데이터를 로컬 스토리지에서 읽고 쓸 수 없다. (이는 서버리스 벤더에 따라 추가 서비스를 통해 극복이 가능하지만, AWS S3, Azure Storage등 일반적인 서버리스는 불가능하다.)
  • 클라우드 제공 플랫폼에 심하게 종속적
    플랫폼이 함수 내에서 사용할 수 있는 최대 메모리, 최대 처리 가능 시간 등의 제약을 두게 되면 그대로 수용해야 함.

서버리스 아키텍처 제공업체

  • 네이버 클라우드 : Cloud Functions
  • Amazon : AWS Lambda
  • Microsoft : Azure Functions
  • Google : Google Cloud Functions

서버리스 컴퓨팅에서 클라우드 제공업체의 역할

  • BaaS
    개발자가 다양한 제 3사 서비스와 어플리케이션에 액세스할 수 있게 함
    인증 서비스와 추가 암호화, 클라우드 액세스 가능한 데이터베이스 및 상세한 사용량을 제공
    BaaS 서비리스 기능은 일반적으로 API를 통해 호출

  • FaaS
    개발자는 사용자 정의 서버 측 로직을 작성

Faas

서비스로서의 기능(Faas)은 이벤트 기반 컴퓨팅 실행 모델로, 개발자가 작성하는 로직은 플랫폼에서 전체를 관리하는 컨테이너로 배포된 후 온디맨드로 실행된다.

BaaS와 달리 Faas는 사전 작성된 서비스 라이브러리에 의존하지 않고 사용자 정의 애플리케이션을 생성하는 개발자에게 더 많은 제어 권한 제공한다.

코드는 클라우드 제공업

서버리스 사용 사례

서버리스는 저렴한 비용으로 새로운 아이디어를 빠르게 테스트할 수 있는 장점이 있으며, 여러 서비스에 적용이 가능하다. 서버리스가 적합한 기능으로 배치 및 자동화 서비스를 들 수 있다. 배치 작업의 경우 24시간 운영되던 서버가 필요 없게 되고, 특정 시간에 수행되던 기능을 서버리스로 옮기는 것만으로도 손쉽게 변경할 수 있다.

이와 비슷한 맥락으로 자동화 작업도 적용이 가능하다.

  • 넷플릭스
    동영상 업로드 시 파일의 인코딩과 검증, 태깅 이후에 공개되는 작업을 AWS Lambda를 통해 자동화 했다.
  • 실시간 비디오 스트리밍 앱 개발사인 페리스코프(Periscope)
    동영상의 유해성 여부를 확인하는 기능을 Lambda에서 운영하고 있다.

분석과 모니터링 기능에도 서버리스가 적합하다. 예를 들면 CPU 사용량이 임계치에 도달했을 때 알림을 받거나 지속적으로 기록되는 로그를 분석하고 리포팅 하는데 사용할 수 있습니다.

  • 미국 온라인 패션 매거진 버슬(Bustle)
    하루 1억건의 이벤트 처리와 데이터 분석 리포팅에 서버리스를 적용해 84%의 비용을 절감하였습니다.

마지막으로 챗봇(Chat-Bot) 서비스에 서버리스를 적용하면 API 호출 시 요청을 처리하고 유연한 확장이 가능해 많은 사용자에게 안정적인 서비스를 제공할 수 있다.

  • 슬랙(Slack)을 기반으로 하는 챗봇 어플리케이션
  • Amazon Echo
  • AWS Lambda를 이용한 음성인식 어플리케이션

참고:https://www.samsungsds.com/kr/insights/1232763_4627.html

profile
이용준의 블로그입니다.

0개의 댓글