[용어소개] FaaS (Function as a Service)

  • cloudnativelab
    (클라우드네이티브랩)
  • cloudnativelab's Avatar 이 글의 작성자
  • Offline
  • Newbie
  • Newbie
더보기
28 Jan 2022 23:56 - 28 Jan 2022 23:58 #5490 작성자: cloudnativelab
cloudnativelab 님의 글: [용어소개] FaaS (Function as a Service)
FaaS (Function as a Service)

최진식 (자바 고양이 Tomcat 이야기, Amazon Web Services 이야기 저자)



새로운 서비스를 출시하기 위해서는 먼저 VM 생성, 웹 서버 설치, 이중화 등의 인프라 아키텍처를 구성한 후 그 위에 소스 코드를 배포해야 합니다. 물론 구성 후에는 자원에 문제가 없는지, 적절한 양의 자원을 사용하고 있는지 지속적으로 운영 관리해야 합니다. 하지만 FaaS를 사용하면 자원에 대한 고민 없이 클라우드 상에 함수(Function)를 정의, 생성하고 소스를 배포하는 것만으로 서비스를 출시할 수 있습니다. 그렇다면 함수와 FaaS는 무엇일까요?

함수는 특정 이벤트에 의해 실행되는 개별 기능으로 자바, C#, Typescript, Python, Node.js, Go, Ruby 등 다양한 언어의 코드를 통해 구현할 수 있습니다. 함수형 플랫폼은 Kubeless, Apache OpenWhisk 등의 오픈 소스를 통해 자체 구축할 수도 있지만 일반적으로 클라우드의 관리형 서비스를 사용하는 경우가 많습니다. 이렇게 클라우드의 서비스로(as a Service) 제공되는 함수(Function) 기능을 FaaS(Function as a Service)라고 하는데 AWS Lambda, Azure Functions, Google Cloud Functions이 대표적입니다.

함수가 실행되는 실제 자원은 컨테이너입니다. 다만 컨테이너는 함수 호출에 의해 기동 후 일정시간 동안만 유지됩니다. 따라서 유지시간 내에 함수가 다시 호출되면 빠르게 응답합니다. 만약 유지시간이 지나면 컨테이너는 중지되는데 이 때 호출을 하면 다시 컨테이너를 기동하기 위한 시간이 필요하기 때문에 응답이 느려질 수 있습니다. 유휴 컨테이너가 없어 새로운 컨테이너가 시작되는 것을 콜드 스타트라고 합니다.

함수는 데이터 수집 크롤러나 로그 분석, 파일 업로드 처리 작업 등에 사용하는 경우가 많습니다. 하지만 장시간 수행되는 배치, 항상 기동되어야 하는 서비스에는 적합치 않습니다. 비즈니스 로직을 함수 기반으로 구현할 수도 있지만 대외 서비스를 위해서는 API Gateway와의 연동 및 별도의 UI 처리가 필요합니다.

[무단전재 및 재배포 금지]
Time to create page: 0.049 seconds
Powered by Kunena Forum