티스토리 뷰

AWS

[AWS]AWS, AWS Lambda(+Cold Start), API Gateway

rangrangerang 2019. 7. 3. 14:54



PART 1

AWS(Amazon Web Service)

    • 아마존닷컴에서 개발한 클라우드 컴퓨팅 플랫폼
    • 네트워킹을 기반으로 가상 컴퓨터와 스토리지, 네터워크 인프라 등 다양한 서비스 제공한다.
    • 비지니스와 개발자가 웹 서비스를 사용하여 확장 가능하고 정교한 애플리케이션을 구축하도록 지원해준다.


    1# 클라우드 컴퓨팅(Cloud Computing)

    • 기존의 물리적인 형태의 실물 컴퓨팅 리소스를 네트워크 기반 서비스 형태로 제공하는 것.
    • 사용자로 하여금 네트워크 상에서 클라우드 서비스의 자원을 사용하는 것
    • IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Softward as a Service)로 나눔



    2# AWS의 장점
    • 저렴한 비용
      => AWS는 사전 확약금이나 장기 약정 없이 저렴한 종량 과금제 방식으로 운영된다. 확장형 글로벌 인프라를 구축 및 관리하고, 더 저렴한 요금의 형태로 사용자에게 비용 절감 혜택을 고스란히 돌려준다. (사용한 만큼만 냄)

    • 민첩성, 즉작적 융퉁성

      => 필요한 가상 서버가 한 대든 아니면 수천 대든 몇분만에 구축 가능및 배포가 가능하다. 가상 서버가 필요한 시간이 설치가 빠르고 관리가 편리하다.


    • 개방성과 유연성
      => AWS는 언어 및 운영 체제에 구애받지 않는 플랫폼이다. 따라서 사용자의 비지니스에 가장 적합한 개발 플랫폼 또는 프로그래밍 모델을 선택할 수 있다. 사용할 서비스를 한 개 또는 여러 개 선택하고, 그 사용 방식도 선택할 수 있다.

    • 보안
      => PCI DSS Level 1, ISO 27001, FISMA Moderate, FedRAMP, HIPAA 및 SOC 1(이전의 SAS 70 또는 SSAE 16) 등 업계에서 인정하는 인증 및 SOC 2 감사 보고서 등과 같은 감사 자료를 갖춘 안전하고 내구성 있는 기술 플랫폼이다. 당사의 서비스와 데이터 센터는 여러 계층의 운영 및 물리적 보안을 갖추고 있어 데이터의 무결성과 안전을 보장한다. (보안 굳)





    PART 2

    AWS Lambda



    이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스

    1# AWS Lambda란?

    • 서버를 프로비저닝 하거나 관리할 필요 없이 코드를 실행
    • 모든 유형의 어플리케이션이나 밷엔드 서비스에 대한 코드를 별도의 관리 없이 실행 가능
    • 코드를 업로드하면 Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 부분을 처리함
    • 다른 AWS 서비스에서 코드를 자동으로 트리거하도록 설정하거나 웹 또는 모바일 앱에서 직접 코드를 호출할 수 있음

    [프로비저닝?]
    사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말합니다. 서버 자원 프로비저닝, OS 프로비저닝, 소프트웨어 프로비저닝, 스토리지 프로비저닝, 계정 프로비저닝 등이 있고, 수동으로 처리하는 '수동 프로비저닝'과 자동화 툴을 이용해 처리하는 '자동 프로비저닝'이 있습니다.


    2# Lambda의 장점

    • 인프라에 대한 걱정 없이 코드 실행 가능 -> NoOps 실현
    • 트리거를 이용해 어플리케이션을 자동으로 확장/축소 가능
    • 코드가 병렬로 실행되고 각 트리거는 개별적으로 처리되어 정확히 워크로드 규모에 맞게 조정됨.
    • 100ms 단위로 코드가 실행되는 시간 및 코드가 트리거되는 횟수를 측정하여 요금을 부과하고, 코드가 실행되지 않을 때는 요금이 부과되지 않음

    [NoOps]

    운영자가 없음

    [Devops]

    개발(Development)과 운영(Operations)의 합성어로 시스템 개발과 운영을 병행 및 협업하는 방식


    3# Lambda 사용 사례

    • 실시간 파일 처리 : Amazon S3를 사용하여 업로드하는 즉시 데이터를 처리하도록 AWS Lambda를 트리거할 수 있음. Lambda를 사용하여 실시간으로 이미지를 썸네일하고, 동영상을 트랜스코딩하고, 파일을 인덱싱하고, 로그를 처리하고, 콘텐츠를 검증하고, 데이터를 수집 및 필터링할 수 있음
    • 실시간 스트림 처리 : AWS Lambda 및 Amazon Kinesis를 사용하여 어플리케이션 활동 추적, 트랜잭션 주문 처리, 클릭 스트림 분석, 데이터 정리, 지표 생성, 로그 필터링, 인덱싱, 소셜 미디어 분석, IoT 디바이스 데이터 텔레메트리 및 측정을 위한 실시간 스트리밍 데이터를 처리할 수 있음
    • IoT 백엔드 : AWS Lambda및 Amazon kinesis를 사용하여 사물 인터넷(IoT)디바이스 데이터 텔레메트리 및 분석을 위한 백엔드를 구축할 수 있음 
    • 모바일 백엔드 : AWS Lambda 및 Amazon API Gateway를 사용하여 API 요청을 인증 및 처리하도록 백엔드를 구축할 수 있음.
    • 웹 어플리케이션 : AWS Lambda를 다른 AWS서비스와 결합하면, 확장성, 백업 또는 여러 데이터 센터 중복에 필요한 별도의 관리 작업 없이 개발자가 자동으로 확장 및 축소되고 여러 데이터 센터에 걸쳐 가용성이 높은 구성에서 실행되는 강력한 웹 어플리케이션을 구축할 수 있음.


    4# Cold Start

    Cold start : 최초 실행의 경우. 시스템에서 캐시된 데이터가 없는 상태로 시작  

    Warm start : 이미 한번 이상 실행한 뒤로 데이터가 메모리에 일부 캐시된 상태로 시작


    • 람다에서의 Cold Start
    1. 람다를 처음 호출하면 Cold Start를 하게 됨 => 이 경우 초기 지연시간(10초 정도)이 발생
    2. 이후 Warm 상태를 유지함 => 지연시간이 발생하지 않음
    3. 그러다 약 5분여 이상 호출되지 않는다면 Cold상태로 바뀜 => 람다 호출 시 지연시간 발생
    • Cold Start를 해결하는 방법

    - 람다를 5분마다 실행

    => CloudWatch를 통해 람다를 5분마다 한번씩 지속적으로 호출하거나 Route53에서 Health Check를 람다 함수 API GateWay Endpoint로 설정해둘 수 있다.



    PART 3

    API Gateway 

    • 필요성 : 마이크로서비스 아키텍쳐(하나의 큰 어플리케이션을 여러 개의 작은 어플리케이션으로 나누어서 개발)의 경우 한 서비스에 한개 이상의 서버가 존재하기 대문에 이 서비스를 사용하는 클라이언트 입장에서는 다수의 엔드포인트가 생기게 되며, 엔드포인트의 변경이 일어났을때 관리하기 힘듦
    • 서버 시스템의 아키텍처를 내부로 숨기고 외부의 요청에 대한 응답만을 적절한 형태로 응답
    • API Management Console에서 클릭 몇 번으로 어플리케이션이 백엔드 서비스의 데이터, 비지니스 로직 또는 기능에 액세스할 수 있도록 해주는 관문 역할을 하는 REST 및 WebSocket API를 생성할 수 있다.
    • API 게이트웨이는 트래픽 관리, 권한 부여 및 액세스 제어, 모니터링 및 API 버전 관리 등 최대 수십만 개의 동시 API 호출을 수신 및 처리하는 데 관계된 모든 작업을 처리

    1# API Gateway의 장점

    • 클라이언트의 요청을 일괄적으로 처리
    • 전체 시스템의 부하를 분산시키는 로드 밸런서의 역할
    • 동일한 요청에 대한 불필요한 반복작업을 줄일 수 있는 캐싱
    • 시스템상을 오고가는 요청과 응답에 대한 모니터링
    • 시스템 내부에 아키텍처를 숨길 수 있음
      => 특정 서비스의 변경사항이 생기거나 서비스가 통합/분리되더라도 클라이언트는 그 사실을 인지할 필요없이 API Gateway내부의 변경사항만으로 처리가 가능


    2# API Gateway의 단점

    • 구현하고 관리해야하는 요소가 하나 더 증가
    • 성능상의 병목지점이 될 수 있음


    3# API Gateway 구현시 고려해야 할 점들

    • 비동기적이고 non-blocking I/O처리가 가능하도록 구현해야함
    • 개별 마이크로 서비스를 보내는 요청의 선후관계가 존재해야함
      ex.
       포털 사이트를 띄우고 -> 메일요청을 가져옴
    • 마이크로 서비스 아키텍처로 인해 분산된 서버의 상태와 여러가지 변수들로 인해서 일부 서비스의 장애가 발생하거나 응답속도가 지연될 가능성이 높아질때 API Gateway의 적절한 처리가 필요
      ex. 포털사이터에서 추천 카페 목록만 장애가 발생하면 추천 카페 목록만 임시페이지로 띄움
    • 기존의 결과를 캐싱하여 재활용 할 수 있도록 설계하는 것이 중요


    4# Amazon API Gateway

    • Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안할 수 있게 해주는 완전관리형 서비스

    •  API Gateway는 트래픽 관리, 권한 부여 및 액세스 제어, 모니터링, API 버전 관리를 포함하여 최대 수십만 개의 동시 API 호출 허용 및 처리에 관련된 모든 작업을 다룬다. 

    •  API Gateway는 애플리케이션이 Amazon Elastic Compute Cloud(Amazon EC2)에서 실행되는 워크로드, AWS Lambda에서 실행되는 코드, 웹 애플리케이션 또는 실시간 통신 애플리케이션 등의 백엔드 서비스에서 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있도록 “대문” 역할을 한다.

    • AWS의 다른 서비스와 연동해서 사용















    [ Reference] https://goddaehee.tistory.com/174 https://constant.kr/blog/2018/09/02/aws%EB%9E%80aws%EC%9D%98-%EC%86%8C%EA%B0%9C%EC%99%80-%EC%9E%A5%EC%A0%90-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4/ https://aws.amazon.com/ko/lambda/features/ https://brownbears.tistory.com/428

    https://blog.naver.com/ultract2/220197218670

    https://medium.com/harrythegreat/aws-lambda%EB%A5%BC-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EC%A0%84-%EC%95%8C%EC%95%98%EC%9C%BC%EB%A9%B4-%EC%A2%8B%EC%95%98%EC%9D%84%EA%B2%83%EB%93%A4-788bd3b3bdd2 https://aws.amazon.com/ko/api-gateway/ https://jodu.tistory.com/17 http://itnovice1.blogspot.com/2018/12/api-gateway.html https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/welcome.html#api-gateway-overview-aws-backbone https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/Welcome.html




    댓글