상세 컨텐츠

본문 제목

서버리스(serverless)란?

개발 Recording/CS | 개발 지식

by sm-stack 2023. 6. 11. 16:45

본문

What is Serverless?

 

  • AWS와 같은 클라우드 시스템에서 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델.
  • 서버가 존재하긴 하지만, 추상화 되어서 클라우드 제공업체가 서버 인프라를 프로비저닝, 유지관리, 스케일링하며 개발자는 단순히 코드를 컨테이너에 패키징하기만 하면 됨.
  • 배포되고 나면 자동으로 스케일 업되거나 스케일 다운된다. 온디맨드로 미터링되기 때문에, 서버리스 기능이 유휴 상태일 때는 아무 비용도 들지 않는다.
  • Vercel, AWS Lambda 등과 같은 곳에서 이러한 서비스를 제공하고 있다.
  • 서버리스는 단순히 클라우드 제공을 의미하는 게 아니라, 동적으로 상황에 맞춰 함수를 쪼개 처리한다던가, DB를 생성한다던가 하는 것을 자동으로 해주는 것을 의미한다. 즉, 서버리스는 관리할 서버가 없는 것.
  • 예를 들어, FaaS(Function-as-a-Service : AWS Lambda function) / BaaS(Backend-as-a-Service : Amplify, Firebase)와 같은 것들을 서버리스라 부른다.

 

** Vercel은?

Vercel은 기본적으로 IaaS(Infra-as-a-Service) 플랫폼이지만, Next.js의 API routes 기능과 Server-side rendering으로 페이지를 생성할 때는 독립적인 서버리스 함수로 만들어져 동작하기에 서버리스 기능을 제공한다고 할 수 있다.

(Next.js 앱을 빌드해보면, api와 페이지 생성이 server-side renders at runtime에서 이루어지는 것을 확인 가능.)

 

 

 

장점

- 효율적이고, 비용 절감 가능.

- 사업 측면에서 개발자 리소스도 절감할 수 있다.

 

단점

  • 모니터링이 쉽지 않음.
  • 콜드 스타트를 처리해야 함. 일정 간격으로 함수를 계속 실행해서 ‘따뜻하게’ 유지할 수도 있겠지만, 복잡한 아키텍처의 경우 상황이 복잡해짐.

'개발 Recording > CS | 개발 지식' 카테고리의 다른 글

싱글 스레드 vs 멀티 스레드  (0) 2023.06.16

관련글 더보기