서버리스 아키텍쳐 ( Serverless Architecture ) 란?

Wooseok·2022년 4월 21일
0

Serverless

목록 보기
1/2

AWS Lambda를 사용하면서 한번도 제대로 서버리스에 대해서 알아보지 않은거 같아서 장점과 단점, 특징, 동작 방식을 확실히 알고 싶어서 알아보게 되었다.

🤔 서버리스 아키텍쳐 (Serverless Architecture) 란?

코드 실행, 데이터 관리 및 애플리케이션 통합을 위한 기술을 서버를 관리할 필요 없이 제공합니다. 서버리스 기술은 자동 크기 조정, 기본 제공 고가용성 및 종량제 결제 모델을 제공하여 민첩성을 개선하고 비용을 최적화합니다.

위의 내용은 아마존에서 서버리스에 대하여 설명한 내용이다. 즉 서버리스란 본인이 서버를 직접 구축하고 관리하지 않고 사용한 만큼 비용을 내면 되는 것이다. Serverless 라고해서 말 그대로 서버가 없다는 것은 아니다.
일단 서버리스는 일반적으로 Baas (Backend-as-a-Service) 와 Faas (Funtion-as-a-Service) 로 구분된다.

Baas ( Backend as a Service ) 란

서비스형 백엔드(BaaS)는 개발자가 웹 또는 모바일 애플리케이션의 모든 백그라운드 측면을 아웃소싱하여 프런트 엔드만 작성하고 유지 관리하면 되는 클라우드 서비스 모델이다.

Baas는 주로 모바일 앱, 웹앱 등에 사용되는데 Baas로 앱을 만드는 개발자가 서버 기술을 알지 못해도 앱에 필요한 기능 ( DB, 푸쉬 알림, 인증, SNS, 위치 서비스 )를 API로 제공해 사용한만큼만 비용을 지불하여 쉽고 빠르게 구현할수 있게해준다. 또한 이용자 확장 또한 자동으로 해준다.

대표적으로 구글의 Firebase, AWS Amplify 등이 있다.

👍 장점

  • 개발 속도를 줄일 수 있다.
    서버를 따로 만들 필요가 없어서 대부분 프론트쪽에서의 작업 시간만 필요하기 때문에 개발 속도를 줄일 수 있다.
  • 작은 프로젝트에서의 비용 절감
    실제로 Firebase 같은 경우에는 초기비용이 필요없다. 또한 비용이 들더라도 작은 프로젝트에서는 사용시에만 비용이 청구되기 때문에 소규모 프로젝트를 진행할 경우에는 매우 매력적인 대안이 될 수 있다..

👎 단점

  • 이용자가 많을시 큰 비용
    작은 프로젝트에서는 비교적 저렴하게 이용할 수 있지만 프로젝트의 규모가 커지거나 사용자가 많아지게 되면 많은 비용을 요구하게 된다.
  • 한정된 기능
    Baas에서 제공하는 방식 이외의 확장이나 변경은 복잡하거나 불가능하다. 따라서 클라이언트가 이미 만들어진 Baas의 틀에 끼워지는 방식이다.

Faas ( Function as a Service ) 란

서비스형 함수(FaaS)는 고객들이 앱 개발 및 런칭에 관련한 하부 구조의 복잡한 빌드, 유지보수 없이 애플리케이션 기능을 개발, 실행, 관리할 수 있도록 플랫폼을 제공하는 클라우드 컴퓨팅 서비스의 한 분류이다.

서비스형 함수는 클라우드에 코드를 함수 단위로 저장해서 필요할때마다 꺼내서 비용을 지불하는 방식이다. 함수를 저장하게 되면 함수는 대기상태에 들어가는데 이때 자고있는 함수를 요청하게 되면 함수는 일어나서 요청을 처리하고 다시 대기상태로 돌아가는 방식이다.

대표적으로 AWS Lambda, Google Cloud Functions, Cloudflare Workers 등이 있다.

👍 장점

  • 저렴한 비용
    앞에 설명한 Baas와 같이 요청마다 비용이 청구되기 때문에 비교적 저렴하고 Baas방식 보다 저렴하다!
  • 코드의 유연성
    Faas는 Baas와 다르게 직접 함수를 작성하기 때문에 클라이언트의 요청에 따라 값을 처리할 수 있으며 후에 함수를 수정할 수 있다.

👎 단점

  • 콜드 스타트
    본인은 콜드 스타트가 Faas와 서버리스의 가장 큰 문제점이라고 생각한다. Faas는 요청을 상시 대기하고 있는 것이 아니기 때문에 요청을 한번 보내고 나서 시간이 지나고 다시 요청을 보내게 되면 꽤나 느린 응답 속도를 보인다. AWS 공식 자료에 의하면 5분이 지나면 가장 느린 상태가 된다.

알아보니까 서버리스는 긴 시간을 요구하는 작업에는 부적합 하다. 서버리스는 제한된 요청시간이 있기 때문에 동영상 없로드 같은 작업에는 불리 하다고 볼 수 있다.
왠지 Lambda로 동영상 업로드 할때 잘 안되었던 기억이 있다.

🧹 정리

서버리스는 AWS Lambda와 API gateway 만 사용했었는데 이번 기회로 Baas와 Faas에 대하여 알게 되었고 둘의 차이점, 장단점에 대하여 알게되었다. 소규모 프로젝트에서는 둘다 적합하지만 Baas 를 사용할 것 같다. 클라이언트에서 바로 사용할 수 있고 무엇보다 콜드 스타트때문이다.
하지만 개인적으로 Faas는 콜드 스타트를 제외하면 Baas보다 낫다고 생각하기 때문에 콜드 스타트가 중요하지 않거나 규모가 상대적으로 큰 프로젝트에서 서버리스로 웹, 앱을 만들게 된다면 함수가 완전히 잠들기 직전인 5분마다 한번씩 Lambda에 요청을 보내는 방식을 사용하게 된다면 콜드 스타트는 해결 된다고 생각한다.

0개의 댓글