서버리스 기능이란 무엇인가요?
Published: 2024-02-07 14:03:41

서버리스 함수 정의
----------

서버리스 함수는 [클라우드 컴퓨팅 회사의](https://www.pubnub.com/solutions/enterprise-software/) 관리형 인프라에서 호스팅되는 단일 목적의 프로그래밍 함수입니다. 이러한 함수는 인터넷을 통해 호출되며 워크플로우를 자동화하고 지연 시간을 줄이며 온디맨드 컴퓨팅 기능을 제공하도록 설계되었습니다. 이러한 서버리스 아키텍처는 엔지니어링 팀에 의해 유지 관리되어 거의 완벽한 가동 시간, 전 세계의 중복 인스턴스, 들어오는 모든 네트워크 요청 볼륨에 대한 확장성을 보장합니다.

**서버리스 기능은 누가 만들나요?**
---------------------

서버리스 함수는 서버리스 컴퓨팅의 이점을 활용하기 위해 제품 코드를 서버리스 플랫폼으로 전환하는 소프트웨어 개발자가 만듭니다. 이러한 함수를 만드는 것은 클라우드 컴퓨팅 회사가 아니라 고객입니다.

**서버리스 기능 및 서비스의 장점은 무엇인가요?**
-----------------------------

서버리스 기능과 서비스는 더 나은 코드 유지 관리, 비용 효율적인 호스팅, 관리형 인프라에서 실행하여 안심할 수 있는 점 등 다양한 이점을 제공합니다. 이러한 장점으로 인해 이 패러다임은 빠르게 인기를 얻고 있으며, 새로운 코드의 배포가 **더 빠르고 간단하며 쉽게 자동화됩니다**.

### **서버리스 기능의 예는 무엇인가요?**

모든 주요 클라우드 제공업체는 서버리스 함수를 제공합니다:

-   [PubNub 함수](https://www.pubnub.com/docs/serverless/functions/overview)
    
-   Google 클라우드 함수
    
-   AWS Lambda
    
-   Azure 함수
    

**서버리스 인프라: 모놀리식 아키텍처와 마이크로서비스 아키텍처 비교**
----------------------------------------

서버리스 함수는 서버리스 환경에서 널리 사용되는 개념인 마이크로서비스로 간주할 수 있습니다. 소프트웨어 개발 커뮤니티에서는 모놀리식 플랫폼에서 캡슐화된 마이크로서비스로의 전환에 대한 기대가 커지고 있습니다.

기업들이 서버리스 기능 및 아키텍처를 사용하는 이유
----------------------------

역사적으로 모놀리스는 대규모의 통합된 코드베이스를 가지고 있어 새로운 코드를 배포할 때마다 전체 플랫폼을 완전히 배포해야 했습니다. 여기에는 새로운 기능뿐만 아니라 한 줄의 버그 수정도 포함됩니다.

모놀리스는 어떤 상황에서는 실용적일 수 있지만 플랫폼의 코드베이스가 개발 팀의 규모가 커지면 일부 작업이 번거로워집니다.

마이크로서비스 아키텍처는 코드베이스의 유지보수성을 개선하고 소프트웨어 개발팀의 전반적인 개발자 경험을 향상시킵니다. 마이크로서비스를 사용하면 대규모 엔지니어링 조직을 느슨하게 결합된 자율적인 팀으로 세분화할 수 있습니다. 각 팀은 나머지 플랫폼과 독립적으로 작동하는 몇 개의 마이크로서비스에 집중할 수 있습니다. 마이크로서비스는 어느 정도 독립적으로 유지 관리될 수 있지만 여전히 통합된 팀의 일원이라는 점에 유의하세요.

마이크로서비스 아키텍처를 사용하면 새로운 개발자가 전체 모놀리스에 대한 깊은 이해가 없어도 실질적인 기여를 시작할 수 있으므로 엔지니어링 프로젝트에 빠르게 투입될 수 있습니다. 마이크로서비스의 또 다른 장점은 단일 서비스에 소규모 코드 업데이트를 배포해도 고객의 다운타임이 거의 또는 전혀 발생하지 않는다는 점입니다. 모놀리스에 코드 업데이트가 필요한 경우, 서버리스 배포 기능을 사용하는 동안 모든 고객이 다운타임을 경험할 수 있습니다.

![](https://www.pubnub.com/cdn/3prze68gbwl1/asset-17suaysk1qa1jko/0d543200d97bf5ea3eb3d71a4ba3037e/monolith-microservices.png)

**서버리스 함수 및 서비스형 함수(FaaS)**
---------------------------

서버리스 함수의 마법 같은 부분은 자동 확장 및 중복 코드 배포입니다. 즉, 앱 개발자는 훌륭한 애플리케이션 코드를 작성하는 한 가지 일에만 집중할 수 있습니다. 클라우드 호스팅 제공업체는 이 제품을 서비스형 기능(Functions-as-a-Service) 또는 줄여서 [FaaS라고](https://www.pubnub.com/learn/glossary/what-is-serverless-compute/) 부릅니다.

기존 앱 호스팅을 사용하면 소프트웨어 개발자는 코드를 작성할 때 다음과 같은 질문을 반복적으로 해야 합니다:

-   서버가 각 클라이언트의 물리적 위치에 관계없이 매우 짧은 지연 시간으로 모든 클라이언트 요청에 응답할 수 있는가?
    
-   코드 배포 프로세스에서 인적 오류의 여지를 만들고 있지는 않은가?
    
-   서버가 과부하 없이 갑작스러운 요청량 증가를 처리할 수 있는가?
    
-   서버가 많은 비용을 낭비하지 않고 갑작스러운 요청량 증가를 처리할 수 있나요?
    
-   앱의 인프라를 지속적으로 모니터링해야 하나요? 밤에 8시간 이상 자는 것을 좋아합니다.
    

**이러한 질문은 서버리스 함수가 있는 플랫폼에 소프트웨어 시스템을 구축한 경우에는 해당**되지 않습니다.

서버리스 함수 코드는 완전히 상태 비저장 로직을 가져야 하므로 중복 인스턴스가 고객에게 불일치를 일으키지 않습니다. 클라우드 호스팅 제공업체는 일반적으로 전 세계에 많은 지점을 보유하고 있습니다. 즉, 애플리케이션이 실행되는 서버는 가능한 모든 최종 사용자와 가장 가까운 곳에 있습니다. 클라우드 호스팅 제공업체는 서버리스 기능을 전 세계 데이터 센터에 동시에 이중화하여 배포합니다. 이는 클라이언트 측 요청에 가능한 한 짧은 지연 시간으로 응답하기 때문에 개발자의 고객에게 유리합니다. 모든 네트워킹 로직은 클라우드 제공업체에서 구현합니다.

**클라우드 호스팅 플랫폼의 Google 및 AWS 서버리스 기능**
--------------------------------------

서버리스 함수를 제공하는 클라우드 호스팅 제공업체는 자동화된 코드 배포를 위해 업계 표준 모범 사례를 사용합니다. 즉, 배포 중에 사람의 실수로 서비스가 중단될 가능성이 없으며 웹 제품의 다운타임이 거의 또는 전혀 없이 새 코드를 빠르게 배포할 수 있습니다.

서버리스 기능 호스팅의 가장 가치 있는 기능 중 하나는 바로 사용할 수 있는 자동 확장 기능입니다. 클라우드 호스팅 제공업체는 고객에게 유휴 서버 비용을 과거의 일로 만들었습니다. Kubernetes와 같은 소프트웨어 제품 덕분에 서비스는 프로그래밍 방식으로 인프라를 자동화된 방식으로 확장할 수 있습니다. 이러한 새로운 종류의 "탄력적인" 인프라는 호스팅을 더욱 효율적으로 만들어 클라우드 호스팅을 구매하는 기업의 비용을 크게 절감해 줍니다.

**FaaS 제공업체 및 서버리스 기능 예시**
--------------------------

클라우드 호스팅 업체들은 최첨단 FaaS 플랫폼을 제공하고 있습니다. 대기업들이 점점 더 많은 서버 팜을 구축함에 따라 전 세계 소비자들의 서버 비용은 점점 더 낮아지고 있습니다. 하지만 모든 FaaS 서비스가 똑같이 만들어진 것은 아닙니다. FaaS 플랫폼은 전화 회사와는 다릅니다. 각 플랫폼은 고유한 시나리오에서 빛을 발합니다.

### **AWS Lambda 서버리스 기능**

[AWS Lambda는](https://aws.amazon.com/lambda/) Amazon Web Services의 서버리스 함수 환경입니다. 지원되는 프로그래밍 언어는 Java, Go, PowerShell, Node.js, C#, Python, Ruby, Rust 및 PHP입니다. 파일 처리와 같은 온디맨드 컴퓨팅 작업에 이상적입니다.

### **Azure 함수 서버리스 함수**

[Azure Functions는](https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview) Microsoft Azure의 서버리스 함수 환경입니다. 지원되는 프로그래밍 언어는 C#, F#, Java, Python, JavaScript 및 TypeScript입니다. 애플리케이션 데이터를 안전하게 저장하기 위한 엔드포인트 제공과 같이 플랫폼에 기능을 추가하기 위한 단일 목적 API를 만드는 데 이상적입니다.

### **Google Cloud 서버리스 함수**

[구글 클라우드](https://cloud.google.com/functions/) 함수는 구글 클라우드 플랫폼의 서버리스 함수 환경입니다. 지원되는 프로그래밍 언어는 JavaScript, Python, Go, .NET(C#), Ruby 및 PHP입니다. 구글 클라우드 함수는 다른 구글 클라우드 서비스 및 클라이언트 애플리케이션과 간결하게 상호 작용하는 서버리스 컴퓨팅을 제공합니다. 이미지 및 동영상에서 관련 데이터를 검색하는 등 데이터 처리가 핵심인 시나리오에 이상적입니다.

### **함수**

[Functions는](https://www.pubnub.com/products/functions/) 서버리스 환경으로 엣지에서 함수를 실행하고 JavaScript를 사용하여 PubNub 네트워크를 통해 라우팅되는 메시지를 변환, 보강 및 필터링합니다. 이 서버리스 플랫폼은 다른 서버리스 플랫폼과 근본적으로 다른데, 함수의 이벤트 핸들러는 [PubNub의 Pub/Sub API로](https://www.pubnub.com/docs/serverless/functions/overview) 메시지가 게시될 때와 같이 PubNub의 이벤트에 대한 응답으로 실행되기 때문입니다.

개발자는 게시 후 메시지가 구독자에게 도달하기 전에 전송 중인 PubNub 메시지에서 코드를 실행할 수 있습니다. 게시 후 비차단, Node.js 서버처럼 액세스할 수 있는 REST API 엔드포인트 등 다른 실행 구성도 있습니다. 상태는 함수 환경 내에서 [KV-Store를](https://www.pubnub.com/docs/serverless/functions/functions-apis/kvstore-module) 사용하여 빌드를 사용하여 관리할 수 있습니다. [PubNub 함수 카탈로그에](https://www.pubnub.com/integrations/) 오픈 소스, 타사 통합 카탈로그도 있습니다.

**내 서비스에 어떤 서버리스 공급자를 사용해야 하나요?**
---------------------------------

이 질문에 대한 답은 구축해야 하는 서비스 유형에 따라 다릅니다. 위에서 설명한 공급자에서 볼 수 있듯이 클라우드에 따라 사용할 수 있는 프로그래밍 언어가 다릅니다. 제공업체를 선택할 때 가장 중요하게 고려해야 할 사항은 내 서비스에 어떤 속성이 미션 크리티컬한가 하는 점입니다.

대형 클라우드 회사(AWS, Azure, Google)는 일반 클라우드 제품을 통해 다양한 사용 사례를 충족하도록 설계된 확장 가능하고 비용 효율적인 서버리스 컴퓨팅 솔루션을 제공합니다. 이러한 서버리스 플랫폼은 인프라 관리를 간소화하고 애플리케이션을 위한 온디맨드 확장성을 제공합니다. 그러나 PubNub과 같은 회사는 특히 실시간 사용 사례에서 특정 개발자의 문제점을 해결하는 데 특화되어 있습니다. 고유한 서버리스 환경을 갖춘 PubNub는 실시간 시나리오에서만 일반적인 서버리스 제품보다 뛰어납니다.

PubNub의 서버리스 기능은 매우 짧은 지연 시간으로 실행되므로 채팅, GPS 위치 추적, IoT 신호, 멀티플레이어 게임 등과 같은 실시간 애플리케이션에 이상적입니다. 이벤트에 대한 응답으로 애플리케이션 코드 실행을 자동화하는 이러한 기능은 구축과 배포가 쉬워 시장 출시 기간을 단축할 수 있습니다. 또한 PubNub은 이제 함수 개발을 위해 JavaScript와 TypeScript를 지원하여 개발자에게 더 많은 유연성을 제공합니다.

사용 사례에 많은 연산이 필요하고 OS 액세스가 필요한 언어가 필요하며 지연 시간에 민감하지 않은 경우 AWS, Azure, Google과 같은 대형 클라우드 호스팅 회사의 광범위한 서버리스 제품이 더 적합할 수 있습니다. 이러한 제공업체는 Node.js, Python, Java, Rust, PHP, .NET(C#), Ruby 등 다양한 프로그래밍 언어를 지원하지만 이에 국한되지 않습니다.

PubNub 함수와 AWS Lambda를 종합적으로 비교하려면 비즈니스에 적합한 서버리스 제공업체 선택에 대한 심층적인 인사이트를 제공하는 [블로그 게시물을](https://www.pubnub.com/blog/comparing-pubnub-functions-vs-aws-lambda-functions/) 확인하세요.

또한 서버리스 애플리케이션의 경우 보안은 고려해야 할 중요한 측면이라는 점도 주목할 필요가 있습니다. PubNub의 서버리스 환경은 데이터 보안을 우선시하여 강력한 인증 메커니즘과 안전한 API 엔드포인트를 제공하므로 데이터를 안전하게 보호할 수 있으니 안심하셔도 됩니다.

결론적으로, 비용 효율적인 서버리스 솔루션을 찾는 스타트업이든 미션 크리티컬 애플리케이션을 위해 서버리스 아키텍처의 강력한 기능을 활용하려는 [기존 기업이든](https://www.pubnub.com/Solutions/Enterprise/), 다양한 서버리스 제공업체의 강점과 기능을 이해하면 정보에 입각한 결정을 내리는 데 도움이 될 수 있습니다.

PubNub이 어떤 도움을 줄 수 있을까요?
========================

이 문서는 원래 [PubNub.com에](https://www.pubnub.com/blog/what-is-a-serverless-function/) 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱 및 IoT 디바이스를 위한 실시간 인터랙티브를 구축, 제공 및 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 월간 8억 명의 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한 또는 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다.

PubNub 체험하기
-----------

[라이브 투어를](https://www.pubnub.com/tour/introduction/) 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기
----

PubNub [계정에](https://admin.pubnub.com/signup/) 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기
----

사용 사례나 [SDK에](https://www.pubnub.com/docs) 관계없이 [PubNub 문서를](https://www.pubnub.com/docs) 통해 바로 시작하고 실행할 수 있습니다.