서버리스 컴퓨팅은 개발자가 서버나 백엔드 인프라를 프로비저닝하거나 관리하지 않고도 애플리케이션 코드를 빌드하고 실행할 수 있는 애플리케이션 개발 및 실행 모델입니다.
서버리스는 '서버가 없음'을 의미하지 않습니다. 이름과는 달리 서버리스 컴퓨팅의 서버는 클라우드 서비스 제공업체(CSP)가 관리합니다. '서버리스'는 해당 서버에 대한 개발자의 경험을 설명하는 말입니다. 즉, 서버는 개발자에게 보이지 않습니다. 개발자는 서버를 보거나 관리하지 않으며 서버와 어떤 방식으로든 상호 작용하지 않습니다.
개발자는 서버리스 컴퓨팅을 통해 최고의 프론트엔드 애플리케이션 코드와 비즈니스 로직을 작성하는 데 집중할 수 있습니다. 애플리케이션 코드를 작성하고 CSP에서 관리하는 컨테이너에 배포하기만 하면 됩니다.
클라우드 공급자는 코드를 실행하는 데 필요한 클라우드 인프라를 프로비저닝하고 필요에 따라 인프라를 확장 및 축소하는 등의 나머지 작업을 처리하며 운영 체제 업데이트 및 패치, 보안 관리, 용량 계획, 시스템 모니터링 등과 같은 모든 일상적인 인프라 관리 및 유지 관리도 담당합니다.
또한 개발자는 서버리스의 유휴 용량에 대해 비용을 지불하지 않습니다. 클라우드 제공업체는 코드가 실행되면 필요한 컴퓨팅 리소스를 스핀업하고 프로비저닝하며, 실행이 중지되면 이를 다시 스핀다운합니다(즉, '0으로 조정'함). 청구는 실행이 시작되면 시작되고, 실행이 중지되면 종료됩니다. 일반적으로 가격은 실행 시간과 필요한 리소스를 기반으로 책정됩니다.
서비스형 인프라(IaaS), 서비스형 플랫폼(PaaS), 서비스형 기능(FaaS), 서비스형 소프트웨어(SaaS)와 함께 서버리스는 선도적인 클라우드 서비스 제품이 되었습니다. SkyQuest Technology의 보고서에 따르면 글로벌 서버리스 아키텍처 시장 규모는 2022년 80억 1,000만 십억 달러로 평가되었으며 2023년 98억 4,000만 십억 달러에서 2031년에는 508억 6,000만 달러로 성장할 것으로 예상됩니다1. 오늘날 모든 주요 클라우드 서비스 제공업체는 Amazon Web Services(AWS Lambda), Microsoft Azure(Azure Functions), Google Cloud(Google Cloud Functions), IBM Cloud(IBM Cloud Code Engine)와 같은 서버리스 플랫폼을 제공합니다.
서버리스 컴퓨팅, 마이크로서비스, 컨테이너는 클라우드 네이티브 애플리케이션 개발의 핵심을 이루는 세 가지 기술을 함께 구성합니다.
서버리스 및 서버리스 스택에 대한 자세한 설명은 이 동영상을 확인하세요(6:37).
서버리스는 2008년 Google이 관리하는 데이터 센터에서 웹 애플리케이션을 개발하고 호스팅하기 위한 플랫폼인 Google App Engine(GAE)을 출시하면서 시작되었습니다. GAE를 사용하면 소프트웨어 개발자는 Google에서 처리하던 패치 또는 로드 밸런싱과 같은 서버 관리 작업에 대한 걱정 없이 Google Cloud에서 소프트웨어를 만들고 실행할 수 있습니다.
'서버리스'라는 용어는 2012년 클라우드 컴퓨팅 전문가인 Ken Fromm의 기술 기사에 처음 등장했습니다2. 2014년, Amazon은 최초의 서버리스 플랫폼인 AWS Lambda를 출시했습니다. 람다 미적분학 및 프로그래밍의 함수에서 이름을 따온 FaaS 모델인 AWS Lambda는 서버 관리 없이 이벤트에 대응하여 코드를 실행할 수 있도록 함으로써 서버리스 컴퓨팅 프레임워크가 소프트웨어 개발자들 사이에서 대중적인 인기를 얻고 빠르게 채택되는 데 기여했습니다. 2016년 Microsoft Azure Functions와 Google Cloud Functions는 서버리스 플랫폼을 출시했습니다.
오늘날 서버리스 플랫폼 시장의 다른 주요 업체로는 IBM Cloud Code Engine, Oracle Cloud Infrastructure(OCI) Functions, Cloudflare Workers 및 Alibaba Function Compute가 있습니다.
서버리스는 단순히 서비스형 기능(FaaS)을 넘어 개발자가 코드 실행에 필요한 인프라를 지정하거나 관리하지 않고도 특정 이벤트 또는 요청에 응답하여 코드나 컨테이너를 실행할 수 있게 해주는 클라우드 컴퓨팅 서비스입니다.
FaaS는 서버리스의 중심이 되는 컴퓨팅 모델이며, 두 용어는 종종 같은 의미로 사용됩니다. FaaS와 비교했을 때, 서버리스는 특정 이벤트나 요청에 응답하고 더 이상 사용하지 않을 때 0으로 확장할 수 있는 전체 서비스 스택이며, 프로비저닝, 관리 및 청구는 클라우드 제공업체에서 처리하고 개발자에게는 보이지 않습니다.
이러한 서비스에는 FaaS 외에도 데이터베이스 및 스토리지, 애플리케이션 프로그래밍 인터페이스(API) Gateway, 이벤트 중심 아키텍처가 포함됩니다.
데이터베이스(SQL 및 NoSQL)와 스토리지(특히 Object Storage)는 데이터 계층의 기반입니다. 이러한 기술에 대한 서버리스 접근 방식은 용량, 연결 및 쿼리 제한이 정의된 '인스턴스' 프로비저닝에서 벗어나 인프라 및 가격 모두에서 수요에 따라 선형적으로 확장하는 모델로 전환하는 것을 포함합니다.
API Gateway 웹 애플리케이션 작업의 프록시 역할을 하며 HTTP 메서드 라우팅, 클라이언트 ID 및 비밀, 속도 제한, CORS, API 사용량 보기, 응답 로그 보기, API 공유 정책 보기 등을 제공합니다.
서버리스 아키텍처는 이벤트 기반 및 스트림 처리 워크로드, 특히 오픈 소스 Apache Kafka 이벤트 스트리밍 플랫폼에 적합합니다.
자동화된 서버리스 기능은 상태 비저장 기능이며 개별 이벤트를 처리하도록 설계되었습니다. 이러한 기능은 이벤트의 게시, 캡처, 처리 및 저장을 중심으로 구축된 소프트웨어 설계 모델인 이벤트 기반 아키텍처(EDA)의 필수적인 부분이 되었습니다. EDA 프레임워크에서 이벤트 생산자(예: 마이크로서비스, API, IoT 장치)는 이벤트 소비자에게 실시간 Event Notifications을 전송하여 특정 처리 루틴을 활성화합니다. 예를 들어 넷플릭스에서 새 오리지널 시리즈를 출시하면 여러 EDA 서비스가 출시 알림을 대기하고 있다가 연쇄적으로 업데이트를 트리거하여 사용자에게 알립니다. 사용자 대면 웹 및 모바일 애플리케이션을 기반으로 하는 다른 많은 회사(예: Uber, DoorDash, Instacart)는 이벤트 중심 아키텍처에 의존하고 있습니다.
서버리스, 서비스형 플랫폼(PaaS), 컨테이너, 가상 머신(VM)은 모두 클라우드 애플리케이션 개발 및 컴퓨팅 에코시스템에서 중요한 역할을 하기 때문에 몇 가지 주요 속성에 걸쳐 서버리스가 다른 모델과 어떻게 다른지 비교해 보면 도움이 됩니다.
Kubernetes는 컨테이너 배포, 관리 및 확장을 자동화하는 오픈 소스 컨테이너 오케스트레이션 플랫폼입니다. 이러한 자동화는 컨테이너화된 애플리케이션의 개발을 획기적으로 간소화합니다.
서버리스 애플리케이션은 컨테이너에 배포되는 경우가 많습니다. 그러나 Kubernetes는 Kubernetes를 특정 클라우드 제공업체의 서버리스 플랫폼과 통합하는 전문 소프트웨어를 통해서만 서버리스 앱을 독립적으로 실행할 수 있습니다.
Knative는 서버리스 프레임워크를 제공하는 Kubernetes의 오픈 소스 확장입니다. 이를 통해 컨테이너가 서버리스 기능 또는 다른 애플리케이션 코드(예: 마이크로서비스)를 기반으로 구축되었는지 여부에 관계없이 Kubernetes를 실행하는 모든 클라우드 플랫폼에서 모든 컨테이너를 서버리스 워크로드로 실행할 수 있습니다. Knative는 코드를 추상화하고 서버리스 실행을 위한 자동 조정, 이벤트 트리거, 네트워크 라우팅을 처리하는 방식으로 작동합니다.
Knative는 개발자에게 투명합니다. 개발자가 Kubernetes를 사용하여 컨테이너를 구축하면 Knative가 나머지 작업을 수행하여 컨테이너를 서버리스 워크로드로 실행합니다.
서버리스 컴퓨팅은 개인 개발자와 엔터프라이즈 개발 팀에 다음과 같은 많은 기술 및 비즈니스 이점을 제공합니다.
서버리스에는 많은 장점이 있지만 다음과 같은 몇 가지 단점을 고려해야 합니다.
CSP는 서버리스 애플리케이션 관리를 위한 보안 조치를 제공하지만, 클라이언트는 공동 책임 모델에 따라 애플리케이션 코드와 데이터를 보호할 책임도 있습니다. 서버리스를 위한 클라우드 기반 보안 조치에는 보안 정보 및 이벤트 관리(SIEM), ID 및 액세스 관리(IAM), 위협 탐지 및 대응과 같은 자동화된 보안 정책 및 솔루션이 포함됩니다.
DevSecOps 관행을 따르면 개발팀이 서버리스 기술을 보호하는 데 도움이 됩니다. 개발, 보안 및 운영의 약자인 DevSecOps는 초기 설계부터 통합, 테스트, 제공 및 배포에 이르기까지 소프트웨어 개발 수명 주기의 모든 단계에서 보안 및 보안 관행의 통합을 자동화하는 애플리케이션 개발 관행입니다.
기존의 온프레미스 데이터 센터 환경과 달리 서버리스 컴퓨팅 모델은 조직이 에너지 소비를 줄이고 IT 운영을 위한 탄소 발자국을 줄이는 데 도움이 될 수 있습니다.
또한 서버리스 모델을 사용하면 기업은 필요한 리소스에 대해서만 비용을 지불하고 사용함으로써 리소스 효율성을 통해 배출량을 최적화할 수 있습니다. 이 기능을 사용하면 유휴 또는 초과 프로세스에서 낭비되는 에너지가 줄어듭니다.
고유한 속성과 이점을 감안할 때 서버리스 아키텍처는 마이크로서비스, 모바일 백엔드, 데이터 및 이벤트 스트림 처리와 관련된 사용 사례에 가장 적합합니다.
오늘날 서버리스의 가장 일반적인 사용 사례는 마이크로서비스 아키텍처를 지원하는 것입니다. 마이크로서비스 모델은 단일 작업을 수행하고 API를 사용하여 서로 통신하는 소규모 서비스를 만드는 데 집중합니다. PaaS 또는 컨테이너를 사용하여 마이크로서비스를 빌드하고 운영할 수도 있지만, 서버리스는 작은 코드 비트, 내재된 자동 조정, 신속한 프로비저닝, 유휴 용량에 대해 비용을 청구하지 않는 가격 모델과 같은 속성으로 인해 상당한 추진력을 얻었습니다.
서버리스 플랫폼의 모든 작업(또는 기능)은 웹 클라이언트에서 사용할 수 있는 HTTP 엔드포인트로 전환될 수 있습니다. 웹에 대해 활성화된 경우 이러한 작업을 웹 작업이라고 합니다. 웹 작업이 있으면 보안 강화, OAuth3 지원, 속도 제한, 맞춤 도메인 지원을 제공하는 API Gateway를 사용하여 모든 기능을 갖춘 API로 조합할 수 있습니다.
Open Liberty InstantOn4은 새로운 접근 방식을 사용하여 서버리스 애플리케이션의 빠른 시작을 지원합니다. InstantOn을 사용하면 애플리케이션 빌드 중에 실행 중인 Java 애플리케이션 프로세스의 체크포인트를 생성한 다음 프로덕션 환경에서 해당 체크포인트를 복원할 수 있습니다. 복원 속도가 100밀리초 초반으로 빠르기 때문에 서버리스에 이상적입니다. InstantOn은 기존 애플리케이션의 체크포인트이므로 복원 후의 동작은 동일하며, 뛰어난 처리량 성능도 동일합니다. 이 프로세스를 통해 조직은 새로운 클라우드 네이티브 애플리케이션에 서버리스를 도입할 수 있으며 기존 엔터프라이즈에 서버리스를 도입할 수 있는 기회를 제공합니다.
서버리스는 데이터 보강, 변환, 검증 및 정리와 같은 작업을 중심으로 구조화된 텍스트, 오디오, 이미지 및 비디오 데이터로 작업하는 데 적합합니다. 개발자는 PDF 처리, 오디오 정규화, 이미지 처리(회전, 선명화, 노이즈 감소, 섬네일 생성), 광학 문자 인식(OCR) 및 비디오 트랜스코딩에도 사용할 수 있습니다.
모든 처치 곤란 병렬 작업은 서버리스 런타임의 좋은 사용 사례이며, 병렬화 가능한 각 작업은 하나의 작업 호출을 생성합니다. 샘플 작업에는 데이터 검색 및 처리(특히 Cloud Object Storage), MapReduce 작업 및 웹 스크래핑부터 비즈니스 프로세스 자동화, 하이퍼 매개변수 조정, 몬테카를로 시뮬레이션 및 게놈 처리에 이르는 모든 것이 포함됩니다.
관리형 Apache Kafka를 FaaS 및 데이터베이스 또는 스토리지와 결합하면, 데이터 파이프라인 및 스트리밍 앱의 실시간 빌드를 위한 강력한 기반이 제공됩니다. 이러한 아키텍처는 IoT 센서 데이터, 애플리케이션 로그 데이터, 금융 시장 데이터 및 비즈니스 데이터 스트림(출처: 다른 데이터 소스)을 포함한 모든 종류의 데이터 스트림 수집(검증, 정제, 보강, 변환용) 작업에 적합합니다.
서버리스 컴퓨팅은 온프레미스, 퍼블릭 클라우드, 프라이빗 클라우드 및 엣지 환경 전반에서 변동하는 워크로드를 수용하는 데 필요한 민첩성, 유연성 및 확장성을 제공하여 하이브리드 클라우드 전략을 지원합니다.
서버리스는 고객 관계 관리(CRM), 고성능 컴퓨팅(HPC), 빅데이터 분석, 비즈니스 프로세스 자동화, 비디오 스트리밍, 게임, 원격 의료, 디지털 상거래, 챗봇 생성 등 오늘날 가장 일반적인 애플리케이션을 다수 지원합니다.
다음과 같은 튜토리얼을 활용하면 서버리스 컴퓨팅 스킬을 확장할 수 있습니다.
IBM Consulting Advantage 플랫폼으로 구동되는 IBM 클라우드 서비스를 사용하여 하이브리드 클라우드로의 여정을 가속화하고 비용 효율성을 높이며, 생산성과 지속 가능성을 높이고 시장 출시 시간을 단축할 수 있습니다.
IBM의 전용 서버 호스팅은 맞춤형 옵션을 통해 미션 크리티컬 워크로드에 대해 완전한 격리, 제어 및 보안을 제공합니다.
IBM Cloud Virtual Server for VPC는 IBM Cloud Virtual Private Cloud를 기반으로 구축된 Intel x86, IBM Z, IBM LinuxONE 가상 서버 제품군입니다.
(모든 링크는 ibm.com 외부에 있음)
1 Global Serverless Architecture Market Report, SkyQuest, 2024년 3월
2 Why The Future Of Software And Apps Is Serverless, ReadWrite, 2012년 10월
3 About OAuth 2.0, OAuth
4 Faster startup for containerized applications with Open Liberty InstantOn, Open Liberty