서버리스 아키텍처 - AWS Lambda 개요

개요



AWS Lambda 공부를 시작하려고 "AWS를 통한 서버리스 아키텍처"구매
조금 읽어 보면 아주 좋은 책이므로 책 소개와 자신의 람다 비망록을 위해 투고
Lambda에 대한 개요, 사용법, 제한, 주의사항 등 정리해 나갈 예정

소개 서적



AWS를 통한 서버리스 아키텍처
서버리스 아키텍처의 원칙 주문형 코드를 실행하기 위해 (서버가 아닌) 컴퓨팅 서비스 사용 하나의 목적으로 상태 비 저장 함수를 작성하십시오. 푸시 기반 이벤트 구동 파이프라인 설계 더 두껍고 강력한 프런트 엔드 만들기 타사 서비스 활용 서버리스의 장점과 단점 장점 서버 관리 불용 저렴한 비용 시장 투입까지의 시간 단축 구현이 간단하고 코드 양이 줄어들 수 있음 ☆ 멀티스레드를 고려할 필요가 없다 확장 가능하고 유연하며 병렬 처리에 탁월합니다. 단점 대기 시간에 엄격한 제약이있는 AP에 적합하지 않습니다. 벤더 록인 퍼블릭 클라우드가 제공할 수 있는 수준보다 높은 성능, 신뢰성이 요구되는 미션 크리티컬 서비스에 적합하지 않음 서비스 분산에 의한 원격 호출, 네트워크를 통한 오류 처리, 대기 시간 증가 OS 커스터마이징이나 그 아래 인스턴스를 조정할 수 없습니다. Lambda 특정 처리 (여러 번 실행되는 등)가 발생할 수 있음 Lambda 호출 방법 이벤트 구동형(비동기형) 푸시 모델 풀 모델 요구/응답형(동기형) 〇Lambda 함수 실행까지의 흐름(※1) ENI 만들기 컨테이너 만들기 배포 패키지 로드 배포 패키지 배포 런타임 시작 및 초기화 함수/메소드 실행 1.ENI의 작성은 VPC를 이용하는 경우만 모든 것을 실행하는 것이 콜드 스타트 ​​/ 6.만 실행하는 것이 웜 스타트 Lambda 함수 상태 콜드 상태: 함수의 코드가 로드되지 않고 초기화, 설정 코드가 지금부터 실행되는 상태 웜 상태: 한 번 이상 함수가 실행되고 함수 코드가 로드된 상태 (처리 시작 시간이 걸린다) 콜드 상태를 줄이기위한 조치함수를 웜 상태로 유지하기 위해 일정 이벤트를 사용하여 정기적으로 실행하도록 설정 초기화, 셋업 코드를 이벤트 핸들러 밖으로 낸다. 컨테이너가 웜 상태이면 코드가 실행되지 않습니다. Lambda 함수에 할당된 메모리 용량을 늘립니다. CPU 공유는 함수에 할당된 메모리 용량에 따라 결정됩니다. 코드의 크기를 가능한 한 작게 한다. 불필요한 모듈을 줄이고 가져 오기위한 requires () 호출도 줄입니다. 포함 및 초기화하는 모듈을 줄이면 부팅시 성능을 향상시킬 수 있습니다. 다른 언어도 검토해 본다. (향후 바뀔지도 모르지만) 콜드 스타트가 가장 긴 것은 Java
  • 새로운 기능 – Lambda 함수의 프로비저닝된 동시성을 사용해 봅니다.
  • htps : // 아 ws. 아마존. 코 m / jp / b ぉ gs / 네 ws / 네 wp 로즈 시오네 d
  • AWS Lambda의 Java가 느립니다?


  • Lambda 제한


  • 임시 디스크: 512MB
  • 파일 디스크립터 수 : 1024
  • 프로세스 및 스레드 수: 1024
  • 요청 당 처리 시간 : 300 초
  • 호출시 요청 본문의 페이로드 크기 (요청/응답 유형) : 6MB
  • 호출시 요청 본문의 페이로드 크기 (이벤트 구동 형) : 128KB
  • 호출시 응답 본문의 페이로드 크기 (요청/응답 유형) : 6MB

  • AWS 문서
    AWS Lambda 제한

    SDK를 통한 Lambda 함수 직접 호출 참고


  • 사용자가 SDK의 일부를 다운로드해야 함
  • Lambda 함수를 호출하는 방법을 변경하면 클라이언트/Lambda 함수가 모두 수정 될 수 있습니다
  • 악의적 인 사용자가 클라이언트 프로그램을 변경하면 Lambda 함수를 불법적으로 호출 할 수 있습니다.
  • HTTP(s)를 사용한 통일적인 REST 인터페이스가 되지 않는다

  • Amazon API Gateway와의 연동



    Lambda 프록시 통합 정보


  • Lambda 통합 프록시 사용 : 모든 요청 (쿼리 문자열, 헤더, 스테이지 변수, 경로 변수, 요청 컨텍스트, 요청 본문)을 JSON으로 변환하고 이벤트 객체로 Lambda에 전달
  • Lambda 통합 프록시 비활성화 : 통합 Request (Response) 섹션에서 매핑 템플릿을 만들어 HTTP 요청을 JSON에 매핑하는 방법을 정의해야합니다.
  • 요청 본문의 페이로드는 유효하지 않은 상태에서도 매핑됩니다.
  • 예를 들어, HTTP 헤더의 Authorization을 Lambda의 event 객체 변수 (authToken이라고 함)에 매핑하는 경우 다음과 같이 정의합니다.

  • {
        "authToken" : "$input.params('Authorization')"
    }
    

    ※$input은, API Gateway상의 변수. 자세한 내용은 아래 참조

    API Gateway 매핑 템플릿 참조
  • ☆ 통합 프록시를 사용하여 API Gateway (XML)를 Lambda (JSON)로 매핑 변환 할 수 없습니다.
  • 통합 프록시를 사용하여 XML을 그대로 RAW 데이터로 Lambda로 보내고 Lambda로 구문 분석 할 수 있습니다.
  • 이 경우 다음과 같이 매핑 정의를 수행합니다.

  • {
        "body" : $input.json('$')
    }
    

    참고 URL

    Using API Gateway to pass non-JSON data (e.g. XML) to a Lambda
  • Amazon API Gateway에서 통합 시간 초과 사용자 정의
  • 타임 아웃 값은 50 밀리 초와 29 초 사이에서 설정할 수 있습니다
  • htps : // 아 ws. 아마존. 코 m / jp / 아보 t-a ws / u ts- w / 2017/11 / ku s mize-in-g 라치 온- 치메 오 ts- ン - 아마 존 - 아피가 테와 y /


  • Lambda와 RDS의 연결 수 문제에 대해


  • 부하에 맞추어 다른 서버 자원으로 확장해 가는 서버리스의 특징으로부터 오랜? 제한된 Lambda와 RDS의 연결 수 증가 문제에 대해 AWS에서 새로운 기능이 출시되었습니다 (Amazon RDS Proxy)
  • AWS Lambda에서 Amazon RDS Proxy 사용

  • 보충



    ☆표는 자신의 견해로서 추가
    〇표는 다른 자료로부터의 참조

    참조



    ※ 1 : 모두 가르칩니다! 서버리스 앱의 안티 패턴 및 튜닝

    참고 페이지



    알아두는 것이 더 나은 Lambda 함수 호출 유형과 재시도 방법 요약

    좋은 웹페이지 즐겨찾기