본문 바로가기

AWS

[클라우드] Serverless란 무엇인가요?

728x90
반응형

서버리스(Serverless)는 클라우드 컴퓨팅 서비스의 한 형태로, 사용자가 서버 인프라를 직접 관리하지 않고도 애플리케이션을 개발하고 실행할 수 있도록 하는 모델입니다. 여기서는 몇 가지 주요 개념과 특징을 설명하겠습니다.

주요 개념 및 특징

구분 내용
관리되지 않는 인프라 사용자는 서버나 운영 체제를 관리할 필요 없이 애플리케이션 코드에만 집중할 수 있습니다. 서버 관리, 패치, 유지보수 등은 클라우드 제공자가 담당합니
이벤트 기반 실행 서버리스 애플리케이션은 이벤트(예: HTTP 요청, 데이터베이스 트리거, 파일 업로드 등)에 의해 트리거됩니다. 이는 애플리케이션이 특정 이벤트에 반응하여 실행된다는 의미입니다.
자동 확장성 서버리스 환경에서는 애플리케이션이 필요에 따라 자동으로 확장됩니다. 예를 들어, 특정 이벤트가 폭증하면 해당 이벤트를 처리하기 위해 더 많은 리소스가 자동으로 할당됩니다.
과금 모델 사용자는 애플리케이션이 실제로 실행된 시간에 대해서만 비용을 지불합니다. 이는 전통적인 서버 기반 모델과는 달리 유휴 시간에 대한 비용을 절감할 수 있습니다.
빠른 배포 및 개발 서버리스를 사용하면 개발자는 코드 작성 후 이를 빠르게 배포할 수 있습니다. 또한, 코드 수정 후에도 신속하게 업데이트가 가능합니다.

주요 제공자 및 도구

  • AWS Lambda: Amazon Web Services의 서버리스 컴퓨팅 서비스로, 이벤트 기반으로 코드를 실행할 수 있습니다.
  • Azure Functions: Microsoft Azure에서 제공하는 서버리스 컴퓨팅 서비스입니다.
  • Google Cloud Functions: Google Cloud Platform에서 제공하는 서버리스 서비스입니다.
  • IBM Cloud Functions: Apache OpenWhisk 기반의 서버리스 플랫폼입니다.

장단점

장점 단점
  • 비용 효율성: 실제 사용한 만큼만 비용을 지불.
  • 확장성: 트래픽 변화에 따라 자동으로 확장 및 축소.
  • 운영 부담 감소: 서버 관리 및 유지보수 부담 감소.
  • 콜드 스타트 지연: 처음 요청 시 함수 초기화에 시간이 걸릴 수 있음.
  • 벤더 종속성: 특정 클라우드 제공자에 종속될 수 있음.
  • 제한된 실행 시간: 각 함수의 실행 시간에 제한이 있을 수 있음.
  •  
반응형

서버리스 아키텍처 작동 원리

서버리스 아키텍처는 전통적인 서버 기반 아키텍처와는 다른 방식으로 작동합니다.

  1. 이벤트 발생(Event Trigger):
    • 서버리스 함수는 특정 이벤트가 발생할 때 실행됩니다. 이러한 이벤트는 다양한 소스에서 발생할 수 있습니다. 예를 들어, HTTP 요청, 데이터베이스 변경, 파일 업로드, 타이머 등입니다.
    • 클라우드 제공자가 이벤트를 감지하고 이를 처리할 서버리스 함수로 전달합니다.
  2. 함수 실행(Function Execution):
    • 이벤트가 트리거되면 클라우드 제공자는 해당 이벤트를 처리할 서버리스 함수를 실행합니다.
    • 이때 함수는 필요한 리소스와 함께 실행되며, 애플리케이션 코드는 이벤트를 처리하고 필요한 작업을 수행합니다.
  3. 자동 확장(Automatic Scaling):
    • 서버리스 아키텍처는 자동으로 확장됩니다. 즉, 동시에 여러 이벤트가 발생하면 클라우드 제공자는 자동으로 여러 인스턴스를 생성하여 각각의 이벤트를 처리합니다.
    • 이는 트래픽 급증 시에도 애플리케이션이 안정적으로 동작할 수 있도록 합니다.
  4. 리소스 해제(Resource Release):
    • 함수 실행이 완료되면 클라우드 제공자는 사용된 리소스를 해제합니다. 이는 사용자가 더 이상 서버 리소스를 관리할 필요가 없음을 의미합니다.
    • 이렇게 함으로써 비용 절감이 가능하며, 리소스가 효율적으로 사용됩니다.
  5. 비용 부과(Pay-as-You-Go):
    • 사용자는 함수 실행 시간에 비례하여 비용을 지불합니다. 이는 전통적인 서버 기반 모델에서의 고정 비용과는 달리, 실제 사용량에 따른 비용을 지불하게 됩니다.

서버리스 아키텍처 구성 요소

 

서버리스 함수(Serverless Functions)

클라우드 제공자가 실행하는 작은 단위의 코드입니다. AWS Lambda, Azure Functions, Google Cloud Functions 등이 이에 해당합니다.

함수는 독립적으로 배포 및 실행되며, 이벤트에 반응합니다.

API Gateway

클라이언트 요청을 처리하고, 이를 서버리스 함수로 전달하는 역할을 합니다. 이는 주로 RESTful API를 구성하는 데 사용됩니다.

예를 들어, AWS API Gateway는 HTTP 요청을 AWS Lambda 함수로 전달합니다.

데이터베이스

서버리스 애플리케이션은 NoSQL 데이터베이스나 서버리스 SQL 데이터베이스와 함께 작동할 수 있습니다. AWS DynamoDB, Azure Cosmos DB 등이 있습니다.

데이터베이스와의 통합을 통해 데이터 저장 및 조회가 가능합니다.

스토리지

파일 업로드나 대용량 데이터를 저장하기 위해 서버리스 스토리지를 사용합니다. AWS S3, Azure Blob Storage 등이 이에 해당합니다.

파일 업로드 이벤트가 발생하면 이를 처리하는 서버리스 함수가 트리거될 수 있습니다.

메시징 서비스

서버리스 아키텍처에서 이벤트를 전달하고 처리하기 위해 메시징 서비스가 사용됩니다. AWS SQS, Azure Service Bus, Google Pub/Sub 등이 있습니다.

이를 통해 비동기적으로 이벤트를 처리할 수 있습니다.

 

작동 예시

  1. HTTP 요청 처리:
    • 사용자가 웹사이트에 HTTP 요청을 보냅니다.
    • API Gateway가 요청을 받아 서버리스 함수로 전달합니다.
    • 서버리스 함수는 요청을 처리하고, 결과를 반환합니다.
  2. 파일 업로드 처리:
    • 사용자가 파일을 업로드합니다.
    • 파일 업로드 이벤트가 발생하여 서버리스 함수가 트리거됩니다.
    • 서버리스 함수는 파일을 처리하고, 결과를 저장하거나 추가 작업을 수행합니다.

 

서버리스 아키텍처 유형

구분 내용
함수 기반 아키텍처
(Function-as-a-Service, FaaS)
  • 설명: FaaS는 서버리스 아키텍처의 핵심 요소로, 클라우드 제공자가 관리하는 환경에서 작은 단위의 코드를 이벤트 기반으로 실행하는 서비스입니다.
  • 예시: AWS Lambda, Azure Functions, Google Cloud Functions.
  • 용도: 간단한 데이터 처리, 트리거 기반 작업, API 백엔드.
백엔드 서비스로서의 서버리스
(Backend-as-a-Service, BaaS)
  • 설명: BaaS는 개발자가 서버 측 로직과 관리를 클라우드 제공자에게 맡기고, 주로 프론트엔드 개발에 집중할 수 있게 해주는 서비스입니다.
  • 예시: Firebase, AWS Amplify.
  • 용도: 인증, 데이터베이스 관리, 파일 스토리지, 푸시 알림.
이벤트 스트리밍 및 메시징
(Event Streaming and Messaging)
  • 설명: 이벤트 스트리밍 및 메시징 서비스는 서버리스 함수들이 이벤트를 통해 통신하고 비동기적으로 작업을 처리할 수 있게 해줍니다.
  • 예시: AWS Kinesis, Azure Event Hubs, Google Pub/Sub.
  • 용도: 실시간 데이터 스트리밍, 로그 처리, 이벤트 중심 아키텍처.
데이터베이스 및 스토리지 서비스
  • 설명: 서버리스 데이터베이스 및 스토리지 서비스는 데이터 관리 및 저장을 자동으로 확장하며, 서버 관리 부담을 줄여줍니다.
  • 예시: AWS DynamoDB, Azure Cosmos DB, Google Firestore.
  • 용도: 데이터 저장, 데이터베이스 관리, 비정형 데이터 처리.
728x90
반응형