PaaS 및 서버리스 컴퓨팅 모두 개발자의 백엔드 관리가 필요하지 않지만, 두 모델은 확장성, 가격, 네트 워크 에지에 배포할 수 있는 기능 등 몇 가지 요소로 인해 구분됩니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
글 링크 복사
서버리스 컴퓨팅 및 서비스형 플랫폼(PaaS) 백엔드 아키텍처는 개발자에게 전체 백엔드를 보이지 않게 하므로 어느 정도 유사합니다.그러나 이 두 가지 아키텍처에는 몇 가지 큰 차이점이 있으며, 대부분의 사용 사례는 둘 중 하나에서 가장 잘 작동하지만, 둘 모두에서 잘 작동하지는 않습니다.PaaS와 서버리스 간의 주요 차이점은 확장성, 가격, 시작 시간, 툴링, 네트워크 에지에 배포할 수 있는 기능입니다.
서버리스 애플리케이션은 개발자나 벤더의 추가 구성 없이 필요에 따라 즉각적이고 자동으로 확장됩니다. 서버리스 애플리케이션은 정의에 따라 확장할 수 있습니다. 반면에 개발자는 사용자 수요에 따라 PaaS 호스팅 애플리케이션을 확장 및 축소하도록 프로그래밍할 수 있지만, 이는 PaaS의 본질적인 기능이 아니므로 개발자는 적절한 확장을 위해 어느 정도 예측을 해야 합니다.
서버리스 컴퓨팅은 수도꼭지에서 물을 받는 것에 비유할 수 있으며, 이 경우 물은 컴퓨팅 성능을 나타냅니다. 현대 가정의 수도꼭지는 언제든지 틀 수 있으며 필요한 만큼의 물을 받을 수 있습니다. PaaS는 정수기와 물병 배달 서비스를 사용하는 것과 비슷합니다. 필요한 만큼의 식수를 얻을 수는 있지만 수돗물을 틀어놓는 것만큼 간단하지 않으며, 소비자는 수요가 증가하면 벤더에 더 많은 식수를 공급해달라고 요청해야 합니다. 두 시나리오 모두 다른 사람이 물을 정수하고 건물로 가져오는 등 '백엔드'를 처리합니다. 하지만 수돗물만 필요에 따라 실시간으로 정밀하게 규모를 조정할 수 있습니다.
서버리스 아키텍처는 요청에 따라 애플리케이션 함수의 새로운 인스턴스를 스핀업하여 빠르게 축소할 수 있습니다. 또한 기능이 더 이상 필요하지 않거나 일정 기간 동안 실행된 후에는 기능을 종료하여 빠르게 확장할 수 있습니다. 실제로 서버리스 웹 애플리케이션은 활동이 없는 상태까지 축소했다가 몇 초 또는 몇 밀리초 내에 이벤트에 대한 응답으로 다시 시작할 수 있습니다. PaaS에 구축된 애플리케이션은 그렇게 빠르게 확장하거나 축소할 수 없습니다.
물의 비유를 계속 이어가자면, 수돗물을 사용하는 소비자는 사용한 만큼의 수도 요금을 지불합니다. 마찬가지로 서버리스 과금 방식은 매우 정확하며 개발자는 사용한 만큼만 비용을 지불합니다. 일부 서버리스 벤더는 개발자에게 각 기능의 개별 인스턴스마다 몇 분의 1초 단위까지 정확하게 실행되는 시간만큼만 요금을 청구합니다. 다른 공급자는 요청 수에 따라 요금을 부과합니다.
정수기를 사용하면서 물통을 배달받는 소비자도 사용한 만큼만 요금을 지불하지만, 온스 단위가 아닌 용기 단위로 요금을 지불합니다. 같은 방식으로 일부 PaaS 벤더는 애플리케이션이 사용한 만큼만 개발자에게 요금을 청구합니다. 그러나 청구 금액은 서버리스만큼 정확하지 않습니다. 다른 PaaS 벤더는 서비스에 대해 월 고정 요금을 부과합니다. 개발자는 일반적으로 지불하는 컴퓨팅 성능의 양을 사용자 지정할 수 있습니다. 그러나 이는 사전에 결정된 사항이며 사용량 증가 및 감소에 실시간으로 대응하지 않습니다.
이러한 차이가 반드시 서버리스 아키텍처가 항상 더 저렴하다는 것을 의미하지는 않습니다. 수돗물을 계속 틀어놓으면 비용이 엄청나게 많이 드는 것처럼, 사용량이 일정하고 변동이 크지 않은 웹 애플리케이션은 서버리스 컴퓨팅을 사용하여 실행하려면 비용이 많이 들 수 있습니다.
앞서 설명한 것처럼 서버리스 애플리케이션은 이벤트가 애플리케이션 기능을 트리거하는 즉시 거의 즉각적으로 활성화할 수 있습니다. PaaS로 구축된 애플리케이션은 빠르게 실행할 수 있지만, 서버리스 애플리케이션만큼 가볍지 않고 실행하는 데 시간이 오래 걸립니다. 사용자 관점에서 대기 시간을 방지하려면 PaaS 애플리케이션의 일부 기능이 대부분의 시간 또는 항상 실행되어야 합니다.
일반적으로, PaaS 벤더는 개발자에게 테스트 및 디버깅 도구를 포함하여 애플리케이션을 빌드하고 관리할 수 있는 더 많은 도구를 제공합니다. 서버리스 애플리케이션은 가상 머신이든 다른 머신이든 특정 머신에서 실행되지 않으며 서버리스 기능은 어떤 경우에도 동일하게 실행되어야 합니다. 그러므로 서버리스 벤더는 일부 도구를 제공할 수 있지만, 애플리케이션을 빌드하고 테스트하기 위한 완전한 환경을 제공하지는 않습니다.
서버리스 코드는 특정 서버에서 실행되지 않고 인터넷의 어느 곳에서나 실행할 수 있으므로 네트워크 에지의 최종 사용자와 매우 가까운 곳에 서버리스 애플리케이션을 배포할 수 있어 대기 시간을 크게 줄일 수 있습니다. Service Workers와 Cloudflare Workers는 사용자 가까이에서 실행되는 서버리스 함수의 예입니다(서버리스 JavaScript는 어떻게 작동할까요? 참조).
개발자의 관점에서 보면 PaaS에는 서버가 없습니다. 그러나 PaaS는 코드가 호스팅되는 위치 측면에서 서버리스 컴퓨팅과 여전히 다릅니다. PaaS 벤더는 다른 벤더의 서비스형 인프라(IaaS) 제품을 활용하거나 자체 물리적 데이터 센터를 보유하게 됩니다. 그 결과 클라우드 플랫폼에 구축된 애플리케이션은 특정한 지정된 컴퓨터에서만 실행될 가능성이 높으므로 개발자가 에지에서 코드를 실행하여 애플리케이션의 성능을 최적화하는 것이 불가능합니다.