(기초) AWS - API Gateway

AWS에 대해 알아봅니다.

정민호정민호

1. API & RESTful API

API(Application Programming Interface)

1.1. RESTful API

  • API 종류들 중 하나

  • REpresentational State Transfer

  • CREATE(post), READ(get), UPDATE(put), DELETE(delete)

  • JSON 형태로 요청을 받고 해결함

    • 예) {"customer_id" : "minho_05", "category" : "car"}

2. API Gateway

2.1. 들어가기전

  • 대부분의 어플리케이션은 RESTful API 기반으로 운용

  • 매우 힘든 RESTful API 관리

    • Authentication & Authorization

    • API 요청을 모니터링 해야함

    • 더 나은 성능을 위해 API 요청 캐시 시스템 필요

2.2. API Gateway 란?

  • 뛰어난 확장성 제공 및 API를 만들고 운영하고 모니터링 가능

  • Back-end 서비스 (웹 어플리케이션 EC2)에 들어있는 데이터 접근 허용

  • Pay As You Go

(기초) AWS - Lambda

AWS에 대해 알아봅니다.

정민호정민호

1. Lambda

  • Serverless의 주축을 담당

  • Events를 통하여 Lambda를 실행시킴

  • NodeJS, Python, Java, GO 등 다양한 언어 지원

  • Lambda Function

  • Lambda → 다른 서비스 호출

1.1. Lambda 비용

  • Lambda Function이 실행될때만 돈 지불

  • 매달 1,000,000 함수 호출까지 무료

1.2. Lambda 기타

  • 최대 300초(5분) 런타임 시간 허용 (Lamda 코드 최대 5분 실행시간 제공)

  • 512MB의 일시적인 디스크 공간 제공(/tmp/)

  • 최대 50MB Deployment Package 허용(50MB가 초과될시 S3 버켓 사용)

1.3. Lambda 사용용례

  • S3 → Lambda → DB

    • S3(PutObject) → Lambda(데이터변환, 불필요한 데이터 삭제) → DB(정제된 데이터 업로드)

  • IoT → Lambda → SNS

    • IoT(Topic 속도) → Lambda(Km → Mi) → SNS(속도 게시)

정민호정민호

1. CI/CD

  • CI : Continuous Integration(지속적인 통합)

  • CD : Continuous Deployment(지속적인 배포)

1.1. CI/CD의 장점

  • 자동화 시스템(Automation) - 테스트

  • Incremental Change

1.2. CI/CD - 중앙 리포지토리(Repository)

  • Github

    • Local & Master branch

1.3. CI/CD - 배포준비 및 배포

  • 배포준비

  • 배포

2. Code Commit

  • 파일들을 보관하는 저장 장소(Repository) - Github과 매우 유사

    • 코드, 사진, 라이브러리 등등

  • 동시에 많은 사람들이 저장 장소 접근 및 업데이트 가능

  • 버전 컨트롤 기능 제공

    • 예) 언제 어떻게 누가 저장 장소 내용을 변경하였는지

3. Code Deploy

자동 배포 (Automated Deployment)

3.1. Code Deploy 장점

  • 새로운 기능들의 빠른 배포

  • 소프트웨어 & 서버 다운타임 X

  • Manual 에러 X

  • Rolling 배포

  • Blue/Green 배포

4. Code Pipeline

CI/CD 끝판왕!

4.1. Code Pipeline이 하는 일은?

  • 빌드, 테스트, 배포 과정을 관리

    • 코드 변경시 Code Pipeline은 이를 감지할 수 있음

  • 소프트웨어 및 어플리케이션 출시 자동화 가능

    • 빠르고 쉬운 디버깅을 가능케 해줌

      • 배포(Deployment) VS 출시(Release)

4.2. Code Pipeline 작동 방법

  1. Workflow 정의(Code Pipeline)

  2. 코드 저장소에서 코드 변경(Code Commit)

  3. 컴파일, 테스트, 패키지 생성(Code Build)

  4. staging 혹은 production 배포(Code Deploy)