서버리스, 알아볼까?

Xonic·2022년 8월 14일
2
post-thumbnail

서버리스

  • 개발자가 서버를 관리(서버 스케일링, 애플리케이션 구성 요소의 프로비저닝)할 필요 없이 application을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델이다.

    즉 클라우드 컴퓨팅 기법과 기술을 기반으로 애플리케이션을 구축, 실행, 개선을 클라우드 제공업체에 맡긴다.

  • 서버리스 모델에도 서버가 존재한다. 하지만 일반 애플리케이션 개발에서와는 달리, 추상화 되어 있다.
  • 클라우드 제공업체가 server infrastructure에 대한 provisioning, maintaining, scaling 등의 일상적인 작업을 처리한다. -> 개발자는 배포를 위해 코드를 컨테이너에 패키징하기만 하면 된다.

서버리스 애플리케이션

  • 배포되고 나면 필요에 따라 자동으로 스케일 업 또는 스케일 다운된다.
  • public cloud providers 의 serverless offering 은 일반적으로 event-driven execution model을 통해서 metered on-demand 되는데, 서버리스 기능이 유휴 상태일 때는 아무런 비용도 들지 않는다.
    => 이벤트가 발생하지 않으면, (사용) 가격이 측정되지 않는다.

서버리스 아키텍처

  • 서버리스는 클라우드 제공업체가 cloud infrastructure와 application scaling을 모두 maintaining 하기 때문에 다른 클라우드 컴퓨팅 모델과 차이를 보인다. 서버리스 애플리케이션은 호출 시 on-demand로 자동 시작되는 컨테이너에 배포된다.
  • 표준 IaaS(Infrastructure as a Service) 클라우드 컴퓨팅 모델에서, 사용자는 용량 단위를 사전 구매하게 된다.
  • 즉 애플리케이션을 구동하기 위해 퍼블릭 클라우드 공급업체에 상시 가동 중인 서버 구성 요소(Server Components)에 대한 비용을 지불해야 한다.
  • 사용량에 따른 sacling에 대한 것 역시 사용자 책임이다.
  • 애플리케이션을 구동하기 위해 필요한 클라우드 인프라는 사용되지 않을 때에도 활성화된 상태이다.
  • 그에 반해 서버리스 아키텍처에서는 애플리케이션이 필요할 경우에만 시작된다.
  • 이벤트 구동을 위한 앱 코드를 트리거하면 클라우드 공급업체는 해당 코드에 대한 리소스를 할당한다.
  • 코드 실행이 종료되어도 비용은 청구되지 않는다.
  • 비용, 효율성 등의 이점 외에도 애플리케이션 스케일링 및 서버 프로비저닝과 같은 일상적이고 사소한 태스크에서 개발자를 해방시켜준다.
  • 서버리스를 잘 활용하면, O/S, file System, security patches, load balancing, capacity management, scaling, logging, and monitoring 을 모두 클라우드 서비스 제공업체에 이관할 수 있다.

Serverless Computing service

  • 일반적으로 BaaS(Backend as a Service)와 Faas(Function as a Service)라는 두 그룹으로 나뉜다

BaaS

  • BaaS는 개발자가 다양한 제3사 서비스와 애플리케이션에 액세스 할 수 있게 해주는데 일반적으로 API를 통해 호출된다.

FaaS

  • 개발자가 서버리스를 언급하는 경우는 FaaS 모델을 가리키는 경우가 더욱 일반적이다.
  • FaaS의 경우 개발자는 사용자 정의 서버 측 로직을 작성할 수 있지만, 이러한 로직은 클라우드 제공업체가 전체를 관리하는 컨테이너에서 구동된다.
    => ex) AWS Lambda, Azure Functions, GC multiple Offerings, IBM Colud Functions

FaaS 란?

  • FaaS는 event-driven execution model로, 개발자가 작성하는 로직이 플랫폼에서 전체를 관리하는 컨테이너로 배포된 후 on-demand로 실행된다.
  • 개발자는 API를 통해 서버리스 애플리케이션을 호출할 수 있고, FaaS 제공 업체는 이를 API gateway를 통해 처리한다.

서버리스 컴퓨팅 장단점

장점

  • 서버 프로비저닝 및 관리 같은 일상 업무의 부담을 줄이기 때문에, 개발자가 애플리케이션에 더 많은 시간을 할애할 수 있다.
  • 서버리스는 개발자가 프로비저닝에 필요한 인프라를 명시적으로 설명할 필요를 줄여준다.

단점

  • 벤더 종속성 문제가 발생한다.

출처

https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless

profile
공부 한 것을 공유하는 블로그입니다.

0개의 댓글