서버리스란?

dowon kim·2023년 11월 9일

개요

서버리스는 서버 사용자가 서버를 직접 관리할 필요가 없는 서비스 모델을 의미합니다.

서버리스 모델에도 서버가 존재하지만 일반적인 서버개발과는 다르게 추상화 되어 있으며
이에대한 부분을 클라우딩업체에서 프로비저닝 , 유지관리 , 스케일링을 알아서 처리해주므로
개발자는 배포를 위해 코드를 컨테이너에 패키징 하기만 하면 되는 구조입니다.

서버에 대한 직접관리가 필요없고 서버에 대해 자세히 알 필요가 없는
낮은 러닝커브로 인해 간단한 서비스를 구축할때 많이 이용되는 편입니다.

구분

FaaS(Function as a Service)

FaaS는 Function, 즉 함수를 서비스로 제공합니다.

사용자가 작성한 코드(백엔드)를 서버리스 제공자의 서버에 업로드하게 되면 해당 서버는 업로드한 코드를 함수 단위로 쪼개어 대기상태로 두게 됩니다. 그러다 요청이 들어오면 서버가 대기상태에 두었던 함수를 실행시켜 처리한 다음 작업이 끝나면 다시 대기상태로 만드는 구조입니다. 비용은 함수 호출 횟수에 따라 청구됩니다.

쉽게 말하자면 업로드한 코드가 평상시에는 쿨쿨 자고있고, 요청이 들어오면 서버가 코드를 깨워 일을 시킨 후 다시 재운다..정도로 이해하시면 될 것 같습니다.

  • 함수 호출 후 일정 시간이 경과되어도 다시 수면상태로 들어간다고 합니다.(AWS Lambda의 경우는 5분)

대표 서비스 : AWS Lambda, MS Azure Function

BaaS(Backend as a Service)

BaaS는 백엔드 개발에 필요한 여러 기능을 API로 제공하는 서비스입니다.

쉽게 말하자면 SNS연동이나 DB와 같이 백엔드에 필요한 기능들을 사용자가 직접 구현 할 필요 없이 제공하는 API로 해당 기능을 구현할 수 있게 해 주는 것입니다. 클라우드 공급자가 백엔드 개발 환경까지 제공해 준다고 보시면 될 것 같습니다.

대표 서비스 : Firebase

즉, FaaS와 BaaS의 차이는 직접 백엔드를 구현했느냐 아니냐의 차이 정도로 보시면 됩니다.

서버리스의 장, 단점

장점

  • 서버리스 컴퓨팅은 개발자 생산성을 높이고 운영 비용을 줄일 수 있습니다.
  • 서버 프로비저닝 및 관리와 같은 일상 업무의 부담을 줄여, 개발자가 애플리케이션에 더 많은 시간을 할애할 수 있습니다.
  • 서버리스는 개발자가 프로비저닝하기 위한 작업에 필요한 인프라를 명시적으로 설명할 필요를 줄여줌으로써 DevOps 도입을 지원합니다.
  • 제3사 BaaS 오퍼링의 모든 구성 요소를 통합해 애플리케이션 개발을 더욱 간소화할 수도 있습니다.
  • 서버리스 모델에서 운영 비용이 낮아지는 이유는 항상 자체 서버를 실행하고 관리하는 대신 필요한 만큼
    클라우드 기반 컴퓨팅 시간에 대해 비용을 지불하기 때문입니다.

단점

  • 자체 서버를 실행하지 않거나 자체 서버측 로직을 제어하지 않는 데 따른 단점이 있습니다.
  • 클라우드 제공업체는 자사 구성 요소가 상호작용하는 방법을 엄격히 제한할 수 있어,
    사용자 시스템의 유연성과 커스터마이징 수준에 영향을 주게 됩니다.
  • BaaS 환경의 경우 개발자는 코드 제어 권한이 없는 서비스에 의존해야 할 수 있습니다.
  • IT 스택의 이러한 측면에 대한 제어 권한을 이전하면 벤더 종속성 문제도 발생할 수 있습니다.
  • 제공업체를 변경하면 새로운 벤더 사양에 맞추기 위해 시스템을 업그레이드하는 비용이 발생할 수도 있습니다.

서버리스를 추천하는 대상

서버리스는 사이드 프로젝트(토이 프로젝트)나 최대한 빠르게 시제품(초기 서비스)을 런칭하고 싶은 경우에 추천드립니다.
이런 경우 기존 클라우드 컴퓨팅 모델에 비해 돈과 시간을 모두 절약할 수 있으므로
서버리스가 좋은 선택이 될 수 있습니다.

profile
The pain is so persistent that it is like a snail, and the joy is so short that it is like a rabbit's tail running through the fields of autumn

0개의 댓글