본문 바로가기
SK shieldus Rookies 16기

[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(32일차)

by Challenge programmers 2023. 12. 7.

오늘 학습 주제

1. 서버리스 아키텍처

2. 서버리스 구축

 

 

 

서버리스 아키텍처


- 서버리스 아키텍처 -

서버리스 아키텍처
정의 애플리케이션을 개발하고 배포하기 위한 혁신적인 접근 방식 중 하나로
전통적인 서버 기반의 모델과는 다르게 서버 관리에 대한 부담을 최소화하고
개발자가 코드 작성에 집중할 수 있도록 하는 방식
특징
  1. 서버 없음 (Serverless): 서버리스 아키텍처에서는 서버를 명시적으로 관리하지 않으며
    개발자는 코드를 업로드하고 실행하는 플랫폼에 대해 걱정하지 않아도 됨

  2. 이벤트 기반 (Event-Driven): 서버리스 애플리케이션은 이벤트에 응답하는 방식으로 동작하며
    파일이 업로드되었을 때, HTTP 요청이 발생했을 때 등과 같은 이벤트에 대한 함수를 작성하고 실행 가능

  3. 자동 확장 (Auto-Scaling): 서버리스 플랫폼은 필요에 따라 자동으로 확장하고 축소 가능
    트래픽이 많아지면 자동으로 함수 인스턴스를 늘리고, 트래픽이 감소하면 인스턴스를 축소하여 비용을 절약

  4. 컴퓨팅 단위로 비용 지불 (Pay-As-You-Go): 서버리스 모델에서는 함수 실행에 대한 비용만 지불하고
    함수가 실행되지 않으면 비용이 발생하지 않으며 사용량에 따라 비용이 발생하는 페이-어-고 모델을 적용

  5. 함수 기반 (Function-as-a-Service - FaaS): 서버리스에서는 주로 작은 단위의 함수로 애플리케이션을 구성하여
    필요할 때마다 실행되며, 각 함수는 독립적으로 배포

 

내가 만든 함수들로 서비스를 구현해주는 것이 "서버리스" 아키텍처

 

 

- AWS의 서버리스 -

AWS 서버리스
정의 서버에 대한 고민 없이 애플리케이션을 구축하고 실행
특징
  • AWS는 코드 실행, 데이터 관리 및 애플리케이션 통합을 위한 기술을 서버를 관리할 필요 없이 제공

  • 자동 크기 조정, 기본 제공 고가용성 및 종량제 결제 모델을 제공하여 민첩성을 개선하고 비용을 최적화

  •  용량 프로비저닝 및 패치 적용과 같은 인프라 관리 작업이 필요하지 않으므로 
    고객을 위한 코드를 작성하는 데 집중

  • 서버리스 애플리케이션은 AWS Lambda에서 시작되며, 이 이벤트 기반 컴퓨팅 서비스는
    200개 이상의 AWS 서비스 및 서비스형 소프트웨어(SaaS) 애플리케이션과 기본적으로 통합

 

AWS 서버리스 서비스
정의 컴퓨팅, 통합, 데이터 스토어를 포함한 3개 계층에 대한 서버리스 서비스를 개발
서비스
  •  컴퓨팅
    • AWS Lambda: 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 이벤트 기반 종량제 컴퓨팅 서비스
    • AWS Fargate: ECS 및 EKS와 연동되는 서버리스 컴퓨팅 엔진
  • 애플리케이션 통합
    • Amazon EventBridge: awS와 기존 시스템에서 이벤트 기반 애플리케이션을 대규모로 구축하는 데
      사용할 수 있는 서버리스 이벤트 버스

    • AWS Step Functions: 여러 AWS 서비스를 손쉽게 비즈니스 크리티컬 애플리케이션으로
      차례로 배열할 수 있게 하는 시각적 워크플로 오케스트레이터

    • Amazon SQS: 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션의 손쉬운 분리 및 크기 조정을
      지원하는 메시지 대기열 서비스

    • Amazon SNS: 애플리케이션 간(A2A) 및 애플리케이션과 사용자 간(A2P) 통신 모두를 위한
      완전관리형 메시징 서비스

    • Amazon API Gateway: 모든 규모에서 API를 손쉽게 생성 및 게시할 수 있는 완전관리형 서비스

    • AWS AppSync: 확장 가능한 GraphQL API를 통해 애플리케이션 개발을 가속화하는 완전관리형 서비스
  • 데이터 스토어
    • Amazon S3: 모든 양의 데이터를 저장하고 보호할 수 있도록 설계된 객체 스토리지 서비스

    • Amazon EFS: 고가용성 공유 스토리지의 설정, 크기 조정 및 비용 최적화를 간편하게 하는 
      빌더를 위한 완전 탄력적인 서버리스 파일 시스템

    • Amazon DynamoDB: 모든 규모에서 10밀리초 미만의 성능을 제공하는 키-값 및 문서
      데이터베이스 서비스

    • Amazon RDS Proxy: Amazon Relational Database Service(RDS)를 위한 관리형 데이터베이스 프록시로,
      애플리케이션의 확장성 및 보안을 개선

    • Amazon Aurora Serverless: 애플리케이션 요구 사항에 따라 자동으로 용량을 확장하고 축소하는
      MySQL 및 PostgreSQL 호환 관계형 데이터베이스

    • Amazon Redshift Serverless: 데이터 웨어하우스 인프라를 관리하지 않고도 분석을 쉽게 실행하고
      크기 조정할 수 있으며 사용한 만큼만 요금을 지불

    • Amazon Neptune Serverless: 애플리케이션 요구 사항에 따라 용량을 자동으로 제공하는
      온디맨드 방식의 확장 가능한 그래프 데이터베이스

    • Amazon OpenSearch Serverless:  Amazon OpenSearch Service의 서버리스 옵션으로,
      리소스를 프로비저닝하거나 조정하지 않고도 검색 및 로그 분석을 제공하는 데 도움
  •  

 

- 서버리스 아키텍처의 원칙 -

AWS 서버리스
원칙
  • 컴퓨팅 서비스를 사용해 요구에 맞게 코드를 실행(서버없이)

  • 단일 목적의 상태 없는 함수를 작성(하나의 함수는 하나의 기능 제공)

  • 푸시 기반, 이벤트 주도 파이프 라인을 설계

  • 강한 프론트엔드를 만들어야 함(React, Angular, Vue..)

  • 서트 파티 서비스를 받아들여야 함(소셜 로그인 등)

사용자가 다른 형식으로 변환된 비디오를 업로드하는 예시로

푸시 기반 설계의 파이프라인 스타일은 서버리스 아키텍처에서 작동

 

 

 

 

 

 

서버리스 구축


- 백엔드 API 기능을 Lambda 함수와 API Gateway로 구성 -

 

플라스크 서버가 수행하던 백엔드 API 서비스를 람다 함수로 대체