클라우드

서버리스(Serverless) 컴퓨팅 이란?

Ed2024 2024. 10. 26. 19:26

서버리스 컴퓨팅은 사용자가 서버 인프라를 직접 관리하지 않고, 코드 실행에 필요한 모든 인프라를 클라우드 서비스 제공자가 자동으로 관리하는 컴퓨팅 모델을 의미합니다. 서버리스 컴퓨팅에서는 개발자는 애플리케이션의 비즈니스 로직과 기능에만 집중할 수 있으며, 서버의 프로비저닝, 운영 체제 관리, 스케일링, 모니터링과 같은 인프라 관리 작업은 클라우드 서비스 제공자가 처리합니다.

 

1.    서버리스 컴퓨팅의 핵심 개념

1) 서버 관리의 제거:

   - 전통적인 클라우드 컴퓨팅에서는 사용자가 VM(가상 머신)이나 컨테이너를 설정하고 관리해야 합니다. 하지만 서버리스 환경에서는 이러한 서버 구성과 관리 작업이 사용자에게 보이지 않습니다. 클라우드 제공자가 서버를 자동으로 설정하고, 운영하며, 확장합니다.

2) 이벤트 기반 아키텍처:

   - 서버리스 컴퓨팅은 이벤트 중심으로 설계됩니다. 특정 이벤트가 발생할 때만 코드가 실행되며, 이러한 이벤트는 파일 업로드, 데이터베이스 변경, HTTP 요청 등 다양한 클라우드 서비스의 이벤트가 될 수 있습니다. 이러한 이벤트가 트리거되면 서버리스 컴퓨팅 플랫폼이 자동으로 코드 실행 환경을 설정하고 실행합니다.

3) 자동 스케일링 (Auto Scaling):

   - 서버리스 컴퓨팅은 사용량에 따라 자동으로 확장됩니다. , 하나의 요청만 들어오면 하나의 인스턴스가 실행되지만, 수천 개의 요청이 동시에 들어오면 자동으로 여러 인스턴스를 실행하여 요청을 처리합니다. 사용자는 스케일링을 수동으로 설정할 필요가 없으며, 클라우드 플랫폼이 이를 자동으로 관리합니다.

4) 종량제 비용 모델:

   - 서버리스 컴퓨팅의 중요한 특징은 사용한 만큼만 비용을 지불하는 Pay-as-you-go 모델입니다. 전통적인 서버 환경에서는 서버가 실행되고 있는 동안 비용이 발생하지만, 서버리스 컴퓨팅에서는 코드가 실제로 실행된 시간만큼만 비용이 청구됩니다. 이는 비용 효율성을 크게 높여줍니다.

 

2.    서버리스 컴퓨팅의 방식

서버리스 컴퓨팅은 주로 두 가지 형태로 구현됩니다:

1) FaaS (Function as a Service):

   - 서버리스 컴퓨팅의 가장 일반적인 형태는 FaaS입니다. AWS Lambda, Azure Functions, Google Cloud Functions 등과 같은 서비스가 이에 해당합니다.

   - FaaS에서는 사용자가 개별 함수를 작성하고, 이러한 함수는 특정 이벤트가 발생할 때마다 실행됩니다. FaaS는 비동기 처리, 데이터 변환, API 백엔드, IoT 데이터 처리 등 다양한 이벤트 기반 작업에 적합합니다.

2) 서버리스 애플리케이션 플랫폼:

   - FaaS 외에도 서버리스 컴퓨팅은 서버리스 애플리케이션 플랫폼을 통해 구현됩니다. 예를 들어, AWS App Runner, Azure App Service, Google Cloud Run과 같은 서비스가 있습니다.

   - 이러한 플랫폼에서는 사용자가 완전한 애플리케이션을 컨테이너 단위로 배포하고, 해당 컨테이너가 트래픽이나 이벤트에 따라 자동으로 스케일링됩니다. 이 방식은 FaaS와 유사하지만, 개별 함수보다는 더 복잡한 애플리케이션을 배포하고 관리하는 데 적합합니다.

 

3. 서버리스 컴퓨팅의 장점

1) 개발 생산성 향상:

  - 개발자는 서버 설정, 관리, 스케일링 작업에 대한 부담이 줄어들고, 애플리케이션의 비즈니스 로직 구현에만 집중할 수 있습니다.

2) 비용 효율성:

  - 자원이 필요할 때만 코드가 실행되고 비용이 청구되므로, 기존 서버 기반 모델보다 효율적인 비용 관리가 가능합니다.

3) 유연한 확장성:

  - 서버리스 컴퓨팅은 클라우드 플랫폼이 자동으로 확장 및 축소를 수행하므로, 수요에 따라 애플리케이션이 유연하게 대응할 수 있습니다.

 

4. 서버리스 컴퓨팅의 단점 및 고려 사항

1) 콜드 스타트 문제:

  - 서버리스 환경에서 코드가 처음 실행되거나 일정 시간 동안 호출되지 않은 후에 다시 호출되면, 실행 환경을 초기화하는 데 시간이 걸리는 경우가 있습니다. 이를 콜드 스타트 문제라고 하며, 이로 인해 응답 지연이 발생할 수 있습니다.

2) 실행 시간 제한:

  - FaaS 환경에서는 함수의 실행 시간이 제한됩니다(AWS Lambda의 경우 최대 15). 따라서 장기 실행 작업에는 적합하지 않으며, 이러한 경우에는 서버 기반의 다른 아키텍처를 사용해야 할 수 있습니다.

3) 상태 관리의 어려움:

  - 서버리스 환경에서는 함수가 무상태(stateless)로 동작하기 때문에, 함수 실행 간에 상태를 유지하려면 외부 스토리지나 데이터베이스를 사용해야 합니다. 이를 위해 추가적인 설계가 필요할 수 있습니다.

 

5.    결론

서버리스 컴퓨팅은 이러한 방식과 특성을 통해 애플리케이션의 유연성, 확장성, 비용 효율성을 높이며, 개발자가 서버 관리 없이 비즈니스 로직에 집중할 수 있게 해주는 아키텍처입니다.