코딩과 결혼합니다

[CS] 서버리스(Serverless) 본문

2세/Computer Science

[CS] 서버리스(Serverless)

코딩러버 2023. 11. 9. 18:54
728x90

✏️Serverless

개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델.

서버리스는 동적으로 서버의 자원을 할당하여 자원을 효율적으로 사용할 수 있다. 예를 들어 사용자가 없다면 자원을 할당하지 않고 대기하다 요청이 들어오면 그 때 자원을 할당해서 요청을 처리하고 다시 대기 상태로 들어가게 된다. 또한 개발자는 스케일링, 업데이트, 백업, 보안 등 서버에 대해 일절 관리하거나 신경 쓸 필요가 없어 비즈니스 로직에 집중하여 개발할 수 있다.

 

클라우드 네이티브 애플리케이션 : 클라우드 컴퓨팅 기법과 기술을 기반으로 애플리케이션을 구축, 실행, 개선하는 것. 클라우 네이티브 개발은 아키텍처의 모듈성, 탄력적인 결합, 독립적인 서비스에 중점을 둔다. 

 


 

서버리스 아키텍처의 구현 방식

  • FaaS(Function as a Service)
    • AWS Lambda, Microsoft Azure Function, Google Cloud Functions ...
    • 프로그래밍 수준에서 함수 단위로 쪼개어 클라우드에 업로드
    • Rest API와 같은 HTTP 호출을 통해 함수를 이벤트 방식으로 실행 시킨다.
  • BaaS(Backend as a Service)
    • Firebase, Kinvey, Parse ...
    • 앱 개발에 있어서 필요한 다양한 기능들 ( 데이터베이스, 소셜서비스 연동, 파일시스템 등)을 API로 제공 해줌으로 개발자들이 서버 개발을 하지 않고서도 쉽고 빠르게 구현할 수 있게 해준다. 

 

FaaS / BaaS 차이점

BaaS 서비스

  • 애플리케이션 개발 시 요구되는 복잡한 백엔드 기능들을 개발자가 직접 개발하지 않고 클라우드 공급자가 제공하는 서비스를 이용해 쉽고 안정적으로 구현 하는 것
  • 서비스 제공자로부터 미리 만들어진 백엔드 API를 제공받아 사용하는 형태.
  • 데이터 저장 및 로드, 사용자 인증, 메시징, 소셜 서비스 등의 백엔드 기능을 완성된 API로 사용할 수 있다.
  • API 사용량 및 서버 사용 시간에 따라 비용을 지불한다.
  • 게임 백엔드 서비스는 GBaaS (또는 클라우드 게임서버엔진), 모바일은 MBaaS라고 부른다.

 

FaaS 서비스

  • 개발자가 사용자 정의 서버 측 로직을 작성하지만 클라우드 제공 업체가 관리를 전담하는 서버 컨테이너에서 실행 되는 서비스 기능
  • 서버에서 수행될 기능들을 개발자가 직접 코드로 작성하여 등록한다.
  • 실행 가능한 코드(함수)를 미리 등록해놓았다가 특정 이벤트(트리거)가 발생하면 알아서 호출 및 종료되도록 한다.
  • PaaS는 전체 애플리케이션을 배포하여 서버에서 애플리케이션이 항상 실행되지만, FaaS는 애플리케이션을 더 작게 쪼갠 함수를 배포하며 작업을 마치거나 일정 시간이 지나면 종료된다는 차이점이 있다.
  • 호출한 함수의 횟수와 실행 시간에 따라 비용을 지불한다.

 

 

'2세 > Computer Science' 카테고리의 다른 글

[CS] RESTful API 를 작성하기 위하여 고려할 것  (1) 2023.11.14
[CS] 모노레포(monorepo)  (0) 2023.11.13
[CS] Docker  (0) 2023.11.08
[CS] Caching  (0) 2023.11.03
[CS] MSA : MicroService Architecture  (0) 2023.11.02