aws lambda 와 함께 서버리스 서비스...
TRANSCRIPT
AWS Lambda 와 함께서버리스 서비스 만들기
1_ 발표자 소개
2_ 마이크로 서비스 아키텍처
3_ 서버리스 아키텍쳐
4_ AWS - Lambda5_ AWS - API Gateway6_ 실습해보기 ( 카 X 오톡 봇 만들기 )+_ 서비스에서의 적용과 경험담
목차
발표자 소개
Name_ 성준영
School_ 경희대학교 컴퓨터공학과 3 학년
재학
Circles_ T.G.WinGCompany_ 노마드스타 서버개발 인턴
Contact_ [email protected]
마이크로 서비스 아키텍쳐
1
마이크로 서비스 아키텍쳐
모놀리식 아키텍쳐
이미지 출처 : https://martinfowler.com/articles/microservices.html
모놀리식 아키텍쳐
하나의 서비스에 하나의 프로젝트 단위로 , 단일 디렉토리를 가지고
개발하는구조
- 쉬운 개발
- 쉬운 배포
- 쉬운 스케일 확장
마이크로 서비스 아키텍쳐
모놀리식 아키텍쳐
프로젝트와 팀의 규모가 커진다면 ?
마이크로 서비스 아키텍쳐
모놀로식 아키텍쳐의 단점
코드의 규모가 커진다 .
개발자가 알아야 할 코드의 양이 많아진다 .
이해도 어렵고 , 수정이 어려워진다 .
시간이 지날수록 코드는 난잡해지고 , 같은 일이 반복된다 .
마이크로 서비스 아키텍쳐
란 무엇일까요 ?
작은 서비스의 결합을 통해 하나의 응용 프로그램을 개발하는 방법
# 작은블록단위 # 비결합성 # 작은 작업 # 모듈식 접근
Micro Service Architecture (MSA)
이미지 출처 : https://martinfowler.com/articles/microservices.html
마이크로 서비스 아키텍쳐
란 무엇일까요 ?
이미지 출처 : https://martinfowler.com/articles/microservices.html
마이크로 서비스 아키텍쳐
란 무엇일까요 ?
이미지 출처 : https://martinfowler.com/articles/microservices.html
기능 단위 혹은 컴포넌트 단위로 팀을 나누어 개발 ,필요에 따라 DB 분리 / 역량에 따라 언어 분리
마이크로 서비스 아키텍쳐
간단한 예시
이미지 출처 : https://martinfowler.com/articles/microservices.html
유저 회원가입
Node.js / mongodb상품정보 관련
PHP / MySQL
마이크로 서비스 아키텍쳐
의 장점
개발자가 관리하는 코드의 스코프가 명확해짐
소프트웨어의 복잡성을 제어
개별 팀에서의 개발과 배포
각 마이크로 서비스별로 독립적인 개발과 배포가 가능
요구사항에 최적화된 DB 의 선택이 가능
개발속도 증가
마이크로 서비스 아키텍쳐
단점도 존재합니다 .
운영의 어려움
인터페이스의 불일치
코드 중복
테스트의 까다로움
서버리스 아키텍쳐
2
서버리스 아키텍쳐
Adrian cockcroft ( AWS Vice President ) 의 트윗
만약 당신의 PaaS 가 20ms 이내에 인스턴스를 실행시켜서 0.5 초 동안 원하는 기능을 실행시킬 수 있다면 , 그땐 그걸 서버리스라고 부르세요 .
란 무엇일까요 ?
서버리스 아키텍쳐
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
서버리스 아키텍쳐
FaaSScale 에 신경쓰지 않는다 .
사용자는 동작하는 CODE 만 작성할 뿐
서버리스 아키텍쳐
그래서 .. 서버리스는 ?
서버단 로직을 관리하기 위해
써드파티 어플리케이션 혹은 클라우드에 의존하는 서비스
서버단 로직을 짜되 , 이벤트 기반으로 한번 쓰고 버리는 , 써드파티 어플리케이션 혹은 클라우드에 의해 관리되는 서비스
서버리스 아키텍쳐
그래서 .. 서버리스는 ?
서버단 로직을 관리하기 위해
써드파티 어플리케이션 혹은 클라우드에 의존하는 서비스
서버단 로직을 짜되 , 이벤트 기반으로 한번 쓰고 버리는 , 써드파티 어플리케이션 혹은 클라우드에 의해 관리되는 서비스
서버리스 아키텍쳐
FaaS 의 대표적인 서비스
MicrosoftAzure Functions
Amazon Web ServiceLambda
서버리스 아키텍쳐
Amazon Web ServiceLambda
오늘의 주인공 !
AWS Lambda3
AWS Lambda
AWS Lambda 는 이벤트에 응답하여 코드를 실행하고
자동으로 기본 컴퓨팅 리소스를 관리하는 서버 없는 컴퓨팅 서비스입니다 .
- AWS Lambda 제품 세부설명 중
AWS Lambda
Lambda 의 특징
완전 자동화된 관리
OS 없데이트
스케일 업 / 스케일 아웃 불필요 – 자동 확장
자동 로깅 및 모니터링
AWS Lambda
Lambda 의 특징
자체 코드 사용가능
Java / Node.js / C# / Python 코드 지원
향후 다른 언어도 업데이트 예정
AWS Lambda
Lambda 의 특징
사용량에 따른 지불
코드 실행에 필요한 컴퓨팅 시간 및 서비스 요청량에 따라 비용 지불
+ Free Tier
AWS Lambda
AWS 서비스와의 접착성
S3AWS 에서 제공하는 Storage Service 입니다 .
이미지 서버 등으로 활용이 가능합니다 .
AWS Lambda
AWS 서비스와의 접착성
S3 에 원본 이미지가 업로드 되는 순간 Lambda 가 호출되어
이미지를 압축하고 다시 저장합니다 .
S3 Lambda
AWS Lambda
AWS 서비스와의 접착성
DynamodbAWS 에서 제공하는 noSql Database 서비스
아마존 인프라 내에서 트래픽 / 데이터에 따라 자동 분산하며 , 빠른 성능을 자랑합니다 .
AWS Lambda
AWS 서비스와의 접착성
DynamoDB 의 데이터가 수정되는 순간을 트리거로 받아
수정 내역을 DynamoDB 에 기록합니다 .
LambdaDynamodb
AWS Lambda
한계
운영의 어려움
인터페이스의 불일치
코드 중복
테스트의 까다로움
AWS Lambda
한계
운영의 어려움
인터페이스의 불일치
코드 중복
테스트의 까다로움
Same withMicro Service
AWS Lambda
node.js 와 Lambda
AWS Lambda
node.js 와 Lambda
npm 의 모든 패키지 사용 가능 ( 압축해서 업로드 )Lambda 관련 라이브러리가 가장 활성화
( local-lambda, serverless framwork, Apex..)
AWS API Gateway3
AWS API Gateway
이미지 출처 : https://martinfowler.com/articles/microservices.html
API Gateway 란 ?
That’s It!API 서버 앞단에서 모든 API 서버들의 엔드포인트를
단일화하여 묶어주고 API 에 대한
인증과 인가 기능에서 부터
메세지에 따라서 여러 서버로 라우팅 하는
고급기능 까지 많은 기능을 담당할 수 있다 .
- 조대협 님의 블로그 중
AWS API Gateway
Lambda Function 을 세상밖으로
AWS API Gateway
Lambda Function 을 세상밖으로
API–Gateway 를 통해 Lambda Function 은
URL 을 가지게 되고 ,서버에 올려진 일반 API 같이
사용 가능하게 됩니다 .
AWS API Gateway
Lambda function 들을 하나로
API Gateway 를 통해
여러 개의 lambda function 을
URL 로 묶어줍니다 .
Lambda functions- add_pet- get_pet_categories- get_pet_traits- get_pet
AWS API Gateway
인증과 인가 기능
AWS API Gateway
인증과 인가 기능
API Gateway 를 통해
API Key 를 헤더로 보내준
클라이언트에 한해서만
Lambda function 을 실행합니다 .
실습해보기
4
실습해보기
AWS Lambda + API Gateway 로
카카 X 톡 봇을 만들어봅시다 !
라인아 미안해 ......
Caution
최대한 많은 내용을 담았지만 , 프레젠테이션의 내용만으로는 실습을
완벽하게 진행하실 수 없습니다 . 진행에 어려움을 겪거나 , 궁금하신
점에 대해서는 메일로 연락주세요 :D 발표에서 모든 내용을 설명드릴
예정이며 차후에 블로그에 step by step 으로 게시하도록
하겠습니다 .
실습해보기
AWS 계정 만들기
My Billing Dashboard 확인
실습해보기
프리티어라면 ..
실습해보기
프리티어라면 ..
+ AWS Educate (40$ ~ 100$)충분히 무료로 실습이 가능합니다 .
실습해보기
프리티어가 아니라면 ..
Lambda 과금정책https://aws.amazon.com/ko/lambda/pricing/메모리와 Timeout 에 따라 , 사용 횟수만큼 과금
실습해보기
프리티어가 아니라면 ..
함수에 128MB 메모리를 할당하고 한 달에 3천만 회를 실행하고
매번 200ms 동안 실행
5.83 USD / per month라면 4봉지 ..?
실습해보기
첫번째 API 만들기
가장 간단한 예제부터 만들어 봅시다 !
Home Keyboard API사용자가 최초로 채팅방에 들어올 때 표시될 자동응답 명령어 목록을 알려주는 API
실습해보기
카카 X 톡 옐로 아이디 만들기
참고 ) API 문서
https://github.com/plusfriend/auto_reply/blob/master/README.md
https://yellowid.kakao.com/
실습해보기
첫번째 API 만들기
실습해보기
Lambda Function 만들기
실습해보기
Lambda Function 만들기
Select blueprint : 미리 정의된 Lambda function 을 사용할 수 있습니다 .Configure triggers : S3, dynamoDB 등을 트리거로 받도록 설정합니다 .Configure function : Lambda funtion 을 설정합니다 .
실습해보기
Lambda Function 만들기
함수명과 설명 , 사용 언어 선택하기
실습해보기
Lambda Function 만들기
Default 로 만들어져 있는 microservice_permission 을 선택
실습해보기
Lambda Function 만들기
https://gist.github.com/sungjunyoung/53cc873c006145585c245ef2969d1804
실습해보기
API Gateway 만들기
실습해보기
API Gateway API 만들기
실습해보기
API Gateway Resource 만들기
실습해보기
API Gateway Resource 만들기
실습해보기
API Gateway 만들기
카 X 오에서 알려준 대로 리소스를 만들어줍니다 .Specification• Method : GET • URL : http(s)://:your_server_url/keyboard• Content-Type : application/json; charset=utf-8
실습해보기
API Gateway Method 만들기
실습해보기
API Gateway Method 만들기
카 X 오에서 알려준 대로 메서드를 만들어줍니다 .Specification• Method : GET • URL : http(s)://:your_server_url/keyboard• Content-Type : application/json; charset=utf-8
실습해보기
Lambda Function 과 연결된 모습
실습해보기
API Gateway 를 세상밖으로 !
실습해보기
여러분만의 봇을 만들어 보세요
서비스에서의 적용과 경험담
+
서비스에서의 적용과 경험담
기존 서비스의 Server 인프라
EC2 S3 RDS
AWS 서버 이전기 : http://www.slideshare.net/SungJunyoung/ss-69345868
서비스에서의 적용과 경험담
기존 서비스의 Server 인프라
EC2 S3 RDS
Server Storage Database
서비스에서의 적용과 경험담
Lambda S3 Dynamodb
마이크로 서비스 아키텍쳐로의 전환
서비스에서의 적용과 경험담
직면한 문제들
Lambda S3 Dynamodb
로컬에서의 테스트
배포 및 소스코드 관리방법
코어 함수의 모듈화
서비스에서의 적용과 경험담
로컬에서의 테스트
서비스에서의 적용과 경험담
로컬에서의 테스트
Lambda-local로컬에서 람다 함수를 테스트 가능
aws-cli 가 설치되어 있다면
S3, dynamodb 가 연동된 lambda function 테스트도 가능
서비스에서의 적용과 경험담
배포 및 소스코드 관리
APEX배포 코드 관리
서비스에서의 적용과 경험담
배포 및 소스코드 관리
APEXnode.js 스타 개발자 TJ Holowaychuk 의
(https://www.npmjs.com/~tjholowaychuk)Lambda 함수의
빌드 , 배포 , 관리를 쉽게 도와주는
Command line toolhttp://apex.run/
서비스에서의 적용과 경험담
배포 및 소스코드 관리
https://git-scm.com/
설명이 필요없죠 :D
서비스에서의 적용과 경험담
코어 함수의 모듈화
이미지 처리 모듈
SMS 코어 모듈
서비스에서의 적용과 경험담
코어 함수의 모듈화
여러 함수에서 중복적으로 쓰이는 코드들 ,모듈화 시켜서 사용할 수는 없을까 ?
서비스에서의 적용과 경험담
코어 함수의 모듈화
https://aws.amazon.com/ko/blogs/korea/new-aws-step-functions-build-distributed-applications-using-
visual-workflows/
AWS Step FunctionsAWS re:Invent 2016 에서 발표
람다 함수의 Step 을 정의할 수 있음
서비스에서의 적용과 경험담
코어 함수의 모듈화
서비스에서의 적용과 경험담
코어 함수의 모듈화
정식 출시AWS Step Functions 는 오늘 부터 US East (Northern Virginia), US East (Ohio), US West (Ore-
gon), EU (Ireland), Asia Pacific (Tokyo) 리전에서 사용 가능합니다 .
한국은요 ..? ㅠㅠ
서비스에서의 적용과 경험담
코어 함수의 모듈화
P.13 다시보는 마이크로 서비스 아키텍쳐의 단점
서비스에서의 적용과 경험담
개발 흐름
APEXMake lambda function
Local-lambdaTest lambda function
API-GatewayTest With Client
Manage lambda function Rest API documentation
서비스에서의 적용과 경험담
개발하며 느낀 최고의 장점
쉽고 , 빠르다 !
서비스에서의 적용과 경험담
개발하며 느낀 최고의 장점
기능별로 명확한 스코프를 가지는 함수들
서비스에서의 적용과 경험담
개발하며 느낀 최고의 장점
코드 수정 / 추가 / 삭제 후 배포시 다른 코드를 신경쓸 필요가 없음
수정
다음 프로젝트는 Lambda 로 ,어떠세요 ? :D
경청해 주셔서 감사합니다 :D