서버리스? 서버가 필요 없다고?

최예준·2023년 10월 18일

공부

목록 보기
1/19
post-thumbnail

서버가 필요 없다고? 어림없는 소리

서버리스 란?

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

서버리스는 말그대로 이전처럼 우리가 서버를 직접 관리 할 필요가 없다는 뜻 이지 서버 자체는 무조건 있어야 한다.

정리하자면 서버리스란?

  • 서버가 필요 없다는 뜻이 아닌, 서버를 관리하거나 신경 쓸 필요가 없다는 뜻입니다.

  • 나노 수준의 함수로 구성되어 있습니다.

서버리스는 어떻게 동작할까?

대부분 서버는 24시간 돌아가며 항상 우리의 응답을 기다라고 있다.
하지만 서버리스의 경우 백앤드 요소들을 작은 함수로 쪼개서 사용자가 직접 관리하지 않는 (AWS등..)에 올리게 되고 이 함수들은 호출되기 전까지 잠들어 있다가 호출 즉시 일어나 동작된 후 다시 수면에 들어가게 된다.

서버리스는 Faas 와 가깝다고 하겠다
BaaS (Backend as a Service)
FaaS (Function as a Service)

  • BaaS의 종류 : Firebase, Kinvey, Parse ...
  • Faas의 종류 : AWS Lambda, Azure Functions, Google Cloud Functions ...

📍 BaaS 특징

  • 일반적으로 SPA, 안드로이드와 같은 클라이언트 중심으로 개발된 애플리케이션입니다.

  • BaaS가 제공하는 인증, DB, 사용자 관리 등과 같은 외부 서비스를 사용해서 대부분의 비즈니스 로직을 처리합니다.

📍 FaaS 특징

  • 무상태(Stateless) 함수가 서버 측 비즈니스 로직을 포함합니다.

  • Backend를 작은 함수로 쪼개서 사용자가 직접 관리하지 않는 서버로 올립니다.

  • 함수들은 특정한 조건 또는 주기, 요청 등으로 trigger 되어서 서버가 알아서 실행되고 종료됩니다.

서버리스 왜쓰는 걸까?

우리가 서버를 이용하는 방법에는 여러가지가 있다.
집에 굴러다니는 데스크탑을 24시간 켜놓고 서버용 컴퓨터로 쓰는 방법도 있고
돈만 드리면 원하는 용량의 서버를 24시간 제공해주시는 AWS 의 서버를 임대하는 방법도 있을것이다.

위에서 기술하였듯, 서버리스는 클라이언트 단에서 작은 함수를 호출할때만 일어나 수행한 뒤 다시 잠이 든다고 했다. 이를 위해 AWS 람다 같은 서버를 사용하면, 서버 컴퓨터를 항상 임대해 놓는 것이 아니라 함수가 실행되는 짧은 순간에만 사용료를 지불하고 함수가 잠들면 돈을 안내도 되는 매우매우 경제적인 방법이 되겠다.

두번째로는 서버의 관리를 클라우드 서비스 업체에게 맞기다 보니 서버의 구성, 운영 , 보안등에 신경쓸 필요가 없어지고, 패키징과 배포가 간단해진다.

대표적인 서버리스 graphQL 을 사용해보니 세팅과 패키징, 배포가 java 를 이용한 방법 보다 훨신 편하고 간단했다.

그렇다면 단점은?

결국 잠들어있는 함수를 호출이오면 깨워서 써야하는 특성상 항상 켜져있는 BaaS 형태의 서버 보다는 동작시간이 아주살짝 이라도 느릴 수 있고,
실시간 서비스가 중요한 비즈니스에는 적합하지 않을 수 있겠다.
그리고 서버의 관리를 클라우드 서비스 업체에 일괄하는 것이 장점이자 단점이 되어버리는데, 결국 업체에 종속되어 버린다는 단점이 있겠다.

-끝-

profile
개발도 잘하고픈 행복한 개발자

0개의 댓글