89
AWS Lambda 와 와와 와와와와 와와와 와와와

Aws lambda 와 함께 서버리스 서비스 만들기

Embed Size (px)

Citation preview

Page 1: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda 와 함께서버리스 서비스 만들기

Page 2: Aws lambda 와 함께 서버리스 서비스 만들기

1_ 발표자 소개

2_ 마이크로 서비스 아키텍처

3_ 서버리스 아키텍쳐

4_ AWS - Lambda5_ AWS - API Gateway6_ 실습해보기 ( 카 X 오톡 봇 만들기 )+_ 서비스에서의 적용과 경험담

목차

Page 3: Aws lambda 와 함께 서버리스 서비스 만들기

발표자 소개

Name_ 성준영

School_ 경희대학교 컴퓨터공학과 3 학년

재학

Circles_ T.G.WinGCompany_ 노마드스타 서버개발 인턴

Contact_ [email protected]

Page 4: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

1

Page 5: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

모놀리식 아키텍쳐

이미지 출처 : https://martinfowler.com/articles/microservices.html

모놀리식 아키텍쳐

하나의 서비스에 하나의 프로젝트 단위로 , 단일 디렉토리를 가지고

개발하는구조

- 쉬운 개발

- 쉬운 배포

- 쉬운 스케일 확장

Page 6: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

모놀리식 아키텍쳐

프로젝트와 팀의 규모가 커진다면 ?

Page 7: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

모놀로식 아키텍쳐의 단점

코드의 규모가 커진다 .

개발자가 알아야 할 코드의 양이 많아진다 .

이해도 어렵고 , 수정이 어려워진다 .

시간이 지날수록 코드는 난잡해지고 , 같은 일이 반복된다 .

Page 8: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

란 무엇일까요 ?

작은 서비스의 결합을 통해 하나의 응용 프로그램을 개발하는 방법

# 작은블록단위 # 비결합성 # 작은 작업 # 모듈식 접근

Micro Service Architecture (MSA)

이미지 출처 : https://martinfowler.com/articles/microservices.html

Page 9: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

란 무엇일까요 ?

이미지 출처 : https://martinfowler.com/articles/microservices.html

Page 10: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

란 무엇일까요 ?

이미지 출처 : https://martinfowler.com/articles/microservices.html

기능 단위 혹은 컴포넌트 단위로 팀을 나누어 개발 ,필요에 따라 DB 분리 / 역량에 따라 언어 분리

Page 11: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

간단한 예시

이미지 출처 : https://martinfowler.com/articles/microservices.html

유저 회원가입

Node.js / mongodb상품정보 관련

PHP / MySQL

Page 12: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

의 장점

개발자가 관리하는 코드의 스코프가 명확해짐

소프트웨어의 복잡성을 제어

개별 팀에서의 개발과 배포

각 마이크로 서비스별로 독립적인 개발과 배포가 가능

요구사항에 최적화된 DB 의 선택이 가능

개발속도 증가

Page 13: Aws lambda 와 함께 서버리스 서비스 만들기

마이크로 서비스 아키텍쳐

단점도 존재합니다 .

운영의 어려움

인터페이스의 불일치

코드 중복

테스트의 까다로움

Page 14: Aws lambda 와 함께 서버리스 서비스 만들기

서버리스 아키텍쳐

2

Page 15: Aws lambda 와 함께 서버리스 서비스 만들기

서버리스 아키텍쳐

Adrian cockcroft ( AWS Vice President ) 의 트윗

만약 당신의 PaaS 가 20ms 이내에 인스턴스를 실행시켜서 0.5 초 동안 원하는 기능을 실행시킬 수 있다면 , 그땐 그걸 서버리스라고 부르세요 .

란 무엇일까요 ?

Page 16: Aws lambda 와 함께 서버리스 서비스 만들기

서버리스 아키텍쳐

FaaS 란

Function as a ServiceFunction as a Service (FaaS) is a category of cloud computing services that provides a platform allowing cus-tomers to develop, run, and manage application functionalities without the complexity of building and main-

taining the infrastructure typically associated with developing and launching an app- wikipedia

Page 17: Aws lambda 와 함께 서버리스 서비스 만들기

서버리스 아키텍쳐

FaaSScale 에 신경쓰지 않는다 .

사용자는 동작하는 CODE 만 작성할 뿐

Page 18: Aws lambda 와 함께 서버리스 서비스 만들기

서버리스 아키텍쳐

그래서 .. 서버리스는 ?

서버단 로직을 관리하기 위해

써드파티 어플리케이션 혹은 클라우드에 의존하는 서비스

서버단 로직을 짜되 , 이벤트 기반으로 한번 쓰고 버리는 , 써드파티 어플리케이션 혹은 클라우드에 의해 관리되는 서비스

Page 19: Aws lambda 와 함께 서버리스 서비스 만들기

서버리스 아키텍쳐

그래서 .. 서버리스는 ?

서버단 로직을 관리하기 위해

써드파티 어플리케이션 혹은 클라우드에 의존하는 서비스

서버단 로직을 짜되 , 이벤트 기반으로 한번 쓰고 버리는 , 써드파티 어플리케이션 혹은 클라우드에 의해 관리되는 서비스

Page 20: Aws lambda 와 함께 서버리스 서비스 만들기

서버리스 아키텍쳐

FaaS 의 대표적인 서비스

MicrosoftAzure Functions

Amazon Web ServiceLambda

Page 21: Aws lambda 와 함께 서버리스 서비스 만들기

서버리스 아키텍쳐

Amazon Web ServiceLambda

오늘의 주인공 !

Page 22: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda3

Page 23: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

AWS Lambda 는 이벤트에 응답하여 코드를 실행하고

자동으로 기본 컴퓨팅 리소스를 관리하는 서버 없는 컴퓨팅 서비스입니다 .

- AWS Lambda 제품 세부설명 중

Page 24: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

Lambda 의 특징

완전 자동화된 관리

OS 없데이트

스케일 업 / 스케일 아웃 불필요 – 자동 확장

자동 로깅 및 모니터링

Page 25: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

Lambda 의 특징

자체 코드 사용가능

Java / Node.js / C# / Python 코드 지원

향후 다른 언어도 업데이트 예정

Page 26: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

Lambda 의 특징

사용량에 따른 지불

코드 실행에 필요한 컴퓨팅 시간 및 서비스 요청량에 따라 비용 지불

+ Free Tier

Page 27: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

AWS 서비스와의 접착성

S3AWS 에서 제공하는 Storage Service 입니다 .

이미지 서버 등으로 활용이 가능합니다 .

Page 28: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

AWS 서비스와의 접착성

S3 에 원본 이미지가 업로드 되는 순간 Lambda 가 호출되어

이미지를 압축하고 다시 저장합니다 .

S3 Lambda

Page 29: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

AWS 서비스와의 접착성

DynamodbAWS 에서 제공하는 noSql Database 서비스

아마존 인프라 내에서 트래픽 / 데이터에 따라 자동 분산하며 , 빠른 성능을 자랑합니다 .

Page 30: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

AWS 서비스와의 접착성

DynamoDB 의 데이터가 수정되는 순간을 트리거로 받아

수정 내역을 DynamoDB 에 기록합니다 .

LambdaDynamodb

Page 31: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

한계

운영의 어려움

인터페이스의 불일치

코드 중복

테스트의 까다로움

Page 32: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

한계

운영의 어려움

인터페이스의 불일치

코드 중복

테스트의 까다로움

Same withMicro Service

Page 33: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

node.js 와 Lambda

Page 34: Aws lambda 와 함께 서버리스 서비스 만들기

AWS Lambda

node.js 와 Lambda

npm 의 모든 패키지 사용 가능 ( 압축해서 업로드 )Lambda 관련 라이브러리가 가장 활성화

( local-lambda, serverless framwork, Apex..)

Page 35: Aws lambda 와 함께 서버리스 서비스 만들기

AWS API Gateway3

Page 36: Aws lambda 와 함께 서버리스 서비스 만들기

AWS API Gateway

이미지 출처 : https://martinfowler.com/articles/microservices.html

API Gateway 란 ?

That’s It!API 서버 앞단에서 모든 API 서버들의 엔드포인트를

단일화하여 묶어주고 API 에 대한

인증과 인가 기능에서 부터

메세지에 따라서 여러 서버로 라우팅 하는

고급기능 까지 많은 기능을 담당할 수 있다 .

- 조대협 님의 블로그 중

Page 37: Aws lambda 와 함께 서버리스 서비스 만들기

AWS API Gateway

Lambda Function 을 세상밖으로

Page 38: Aws lambda 와 함께 서버리스 서비스 만들기

AWS API Gateway

Lambda Function 을 세상밖으로

API–Gateway 를 통해 Lambda Function 은

URL 을 가지게 되고 ,서버에 올려진 일반 API 같이

사용 가능하게 됩니다 .

Page 39: Aws lambda 와 함께 서버리스 서비스 만들기

AWS API Gateway

Lambda function 들을 하나로

API Gateway 를 통해

여러 개의 lambda function 을

URL 로 묶어줍니다 .

Lambda functions- add_pet- get_pet_categories- get_pet_traits- get_pet

Page 40: Aws lambda 와 함께 서버리스 서비스 만들기

AWS API Gateway

인증과 인가 기능

Page 41: Aws lambda 와 함께 서버리스 서비스 만들기

AWS API Gateway

인증과 인가 기능

API Gateway 를 통해

API Key 를 헤더로 보내준

클라이언트에 한해서만

Lambda function 을 실행합니다 .

Page 42: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

4

Page 43: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

AWS Lambda + API Gateway 로

카카 X 톡 봇을 만들어봅시다 !

라인아 미안해 ......

Page 44: Aws lambda 와 함께 서버리스 서비스 만들기

Caution

최대한 많은 내용을 담았지만 , 프레젠테이션의 내용만으로는 실습을

완벽하게 진행하실 수 없습니다 . 진행에 어려움을 겪거나 , 궁금하신

점에 대해서는 메일로 연락주세요 :D 발표에서 모든 내용을 설명드릴

예정이며 차후에 블로그에 step by step 으로 게시하도록

하겠습니다 .

Page 45: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

AWS 계정 만들기

My Billing Dashboard 확인

Page 46: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

프리티어라면 ..

Page 47: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

프리티어라면 ..

+ AWS Educate (40$ ~ 100$)충분히 무료로 실습이 가능합니다 .

Page 48: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

프리티어가 아니라면 ..

Lambda 과금정책https://aws.amazon.com/ko/lambda/pricing/메모리와 Timeout 에 따라 , 사용 횟수만큼 과금

Page 49: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

프리티어가 아니라면 ..

함수에 128MB 메모리를 할당하고 한 달에 3천만 회를 실행하고

매번 200ms 동안 실행

5.83 USD / per month라면 4봉지 ..?

Page 50: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

첫번째 API 만들기

가장 간단한 예제부터 만들어 봅시다 !

Home Keyboard API사용자가 최초로 채팅방에 들어올 때 표시될 자동응답 명령어 목록을 알려주는 API

Page 51: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

카카 X 톡 옐로 아이디 만들기

참고 ) API 문서

https://github.com/plusfriend/auto_reply/blob/master/README.md

https://yellowid.kakao.com/

Page 52: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

첫번째 API 만들기

Page 53: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

Lambda Function 만들기

Page 54: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

Lambda Function 만들기

Select blueprint : 미리 정의된 Lambda function 을 사용할 수 있습니다 .Configure triggers : S3, dynamoDB 등을 트리거로 받도록 설정합니다 .Configure function : Lambda funtion 을 설정합니다 .

Page 55: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

Lambda Function 만들기

함수명과 설명 , 사용 언어 선택하기

Page 56: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

Lambda Function 만들기

Default 로 만들어져 있는 microservice_permission 을 선택

Page 57: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

Lambda Function 만들기

https://gist.github.com/sungjunyoung/53cc873c006145585c245ef2969d1804

Page 58: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

API Gateway 만들기

Page 59: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

API Gateway API 만들기

Page 60: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

API Gateway Resource 만들기

Page 61: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

API Gateway Resource 만들기

Page 62: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

API Gateway 만들기

카 X 오에서 알려준 대로 리소스를 만들어줍니다 .Specification• Method : GET • URL : http(s)://:your_server_url/keyboard• Content-Type : application/json; charset=utf-8

Page 63: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

API Gateway Method 만들기

Page 64: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

API Gateway Method 만들기

카 X 오에서 알려준 대로 메서드를 만들어줍니다 .Specification• Method : GET • URL : http(s)://:your_server_url/keyboard• Content-Type : application/json; charset=utf-8

Page 65: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

Lambda Function 과 연결된 모습

Page 66: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

API Gateway 를 세상밖으로 !

Page 67: Aws lambda 와 함께 서버리스 서비스 만들기

실습해보기

여러분만의 봇을 만들어 보세요

Page 68: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

+

Page 69: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

기존 서비스의 Server 인프라

EC2 S3 RDS

AWS 서버 이전기 : http://www.slideshare.net/SungJunyoung/ss-69345868

Page 70: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

기존 서비스의 Server 인프라

EC2 S3 RDS

Server Storage Database

Page 71: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

Lambda S3 Dynamodb

마이크로 서비스 아키텍쳐로의 전환

Page 72: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

직면한 문제들

Lambda S3 Dynamodb

로컬에서의 테스트

배포 및 소스코드 관리방법

코어 함수의 모듈화

Page 73: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

로컬에서의 테스트

Page 74: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

로컬에서의 테스트

Lambda-local로컬에서 람다 함수를 테스트 가능

aws-cli 가 설치되어 있다면

S3, dynamodb 가 연동된 lambda function 테스트도 가능

Page 75: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

배포 및 소스코드 관리

APEX배포 코드 관리

Page 76: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

배포 및 소스코드 관리

APEXnode.js 스타 개발자 TJ Holowaychuk 의

(https://www.npmjs.com/~tjholowaychuk)Lambda 함수의

빌드 , 배포 , 관리를 쉽게 도와주는

Command line toolhttp://apex.run/

Page 77: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

배포 및 소스코드 관리

https://git-scm.com/

설명이 필요없죠 :D

Page 78: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

코어 함수의 모듈화

이미지 처리 모듈

SMS 코어 모듈

Page 79: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

코어 함수의 모듈화

여러 함수에서 중복적으로 쓰이는 코드들 ,모듈화 시켜서 사용할 수는 없을까 ?

Page 80: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

코어 함수의 모듈화

https://aws.amazon.com/ko/blogs/korea/new-aws-step-functions-build-distributed-applications-using-

visual-workflows/

AWS Step FunctionsAWS re:Invent 2016 에서 발표

람다 함수의 Step 을 정의할 수 있음

Page 81: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

코어 함수의 모듈화

Page 82: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

코어 함수의 모듈화

정식 출시AWS Step Functions 는 오늘 부터 US East (Northern Virginia), US East (Ohio), US West (Ore-

gon), EU (Ireland), Asia Pacific (Tokyo)  리전에서 사용 가능합니다 .

한국은요 ..? ㅠㅠ

Page 83: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

코어 함수의 모듈화

P.13 다시보는 마이크로 서비스 아키텍쳐의 단점

Page 84: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

개발 흐름

APEXMake lambda function

Local-lambdaTest lambda function

API-GatewayTest With Client

Manage lambda function Rest API documentation

Page 85: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

개발하며 느낀 최고의 장점

쉽고 , 빠르다 !

Page 86: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

개발하며 느낀 최고의 장점

기능별로 명확한 스코프를 가지는 함수들

Page 87: Aws lambda 와 함께 서버리스 서비스 만들기

서비스에서의 적용과 경험담

개발하며 느낀 최고의 장점

코드 수정 / 추가 / 삭제 후 배포시 다른 코드를 신경쓸 필요가 없음

수정

Page 88: Aws lambda 와 함께 서버리스 서비스 만들기

다음 프로젝트는 Lambda 로 ,어떠세요 ? :D

Page 89: Aws lambda 와 함께 서버리스 서비스 만들기

경청해 주셔서 감사합니다 :D