3. Server + less
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
서버리스란 Server와 less를 합쳐서 만든 합성어로, 서버가 없다는 뜻입니다. 클라우드에서 서버리스란 직접적으로 서버를 관리하지 않는 것을 의미합니다.
4. Practical concept
on Cloud Architecture
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
클라우드를 활용한 아키텍처에서 상당히 실용적인 개념입니다. 이를 잘 활용하면 운영에 들어가는 많은 시간을 절약할 수 있습니다.
5. Common example
about serverless services
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
서버리스 서비스라고 하면 다음을 떠올릴겁니다. AWS Lambda, Azure funtions, 그리고 GCP Functions들과 같이 함수만 실행하는 서비스를 생각합니다.
하지만 서버리스 서비스는 이들 말고 다른 것들도 많이 있습니다.
6. More serverless services on AWS
Lambda, Fargate, S3, EFS, DynamoDB,
API Gateway, SNS, SQS, Kinesis, Athena … ETC
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
AWS를 살펴보면 다음과 같이 더욱 많은 서버리스 서비스를 찾을 수 있습니다. Lambda, Fargate, S3, EFS, DynamoDB, API Gateway, SNS, SQS, Kinesis, Athena
7. Serverless
means
there’s no infrastructure
to mange.
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
서버리스는 관리할 인프라가 없다는 것을 의미합니다. 클라우드를 제공하는 곳에 운영을 맡기기 때문에 사용자는 논리적으로만 API를 생성하거나 데이터를 처리하는 등 많은
것을 간편하게 제공받을 수 있습니다. 더 적은 인력으로 서비스를 운영할 수 있습니다.
8. Let’s build
a Serverless Websocket API
on AWS
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
그럼 서버리스 웹소켓 API를 AWS의 서비스를 사용해서 구축해봅시다.
9. DynamoDB as Connection Store
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
첫 번째로 DynamoDB를 연결 정보를 저장하는 데이터베이스로 사용합니다. DynamoDB는 서버리스 형태의 NoSQL 데이터 베이스입니다.
10. 2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
DynamoDB에 저장된 형식입니다. 한 줄을 DynamoDB에서 아이템이라고 지칭합니다. pk는 Partition Key, sk는 Sort Key를 의미합니다. 전체 어플리케이션 정보를 담은
APPLICATION이라는 pk가 있습니다. 또한 Connection의 정보를 담은 아이템과 메시지의 데이터를 담고 있는 아이템도 있습니다.
11. AWS Lambda as Application Layer
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
Lambda를 어플리케이션 계층으로 사용합니다. 웹소켓에 connect, disconnect, 그리고 send message와 같은 이벤트가 발생했을 때 람다에 등록한 특정 함수를 실행시킵니다.
14. API Gateway as Endpoint
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
API Gateway를 사용하면 간편하게 HTTP/REST API 및 WebSocket API를 생성할 수 있습니다.
15. API Gateway
supports
HTTP/REST API, WebSocket API
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
2018 AWS re:Invent에서 Websocket기능이 추가되었습니다. API Gateway를 사용하면 간편하게 HTTP/REST API 및 WebSocket API를 생성할 수 있습니다.
16. API Gateway WebSocket URL
wss://<UNIQUE-ID>.execute-api.<AWS-REGION>.amazonaws.com/<STAGE>/
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
19. Pricing example
- 조건: DAU 10만명, 일 평균 요청 1000개, 일 평균 연결 360분
- 요청 및 연결 시간에 따른 비용
- 요청: 10만명 * 1000개 * 30일 => 3020 USD
- 연결: 10만명 * 360분 * 30일 => 307 USD
- 합계: 3,327 USD
https://www.slideshare.net/awskr/amazon-api-gateway-lambda-websocket
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
API Gateway에 대한 비용입니다. 만일 서비스를 실제로 구축한다고 가정하면, 같이 연동하는 서비스의 비용도 고려해야 합니다.
20. How to deploy a serverless app?
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
실제로 서버리스 앱을 배포할 때는 어떻게 해야할까요?
21. Serverless Framework
vs
Serverless Application Model
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
Serverless Framework와 SAM이 있습니다.
Serverless Framework는 여러 클라우드 벤더를 지원하고 있습니다.
SAM은 AWS가 공식 지원을 하고 있습니다.
SAM Template은 CloudFormation Template과 비슷한 형식으로 작성합니다.
23. Configuration of serverless framework is more simple
https://serverless.com/framework/docs/providers/aws/guide/intro/
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
Serverless framework의 설정파일은 단어가 간결합니다. 또한 다른 클라우드 서비스와 함께 작성이 가능합니다.
24. Deploy apps with Serverless Framework
2019.04.10 | AWSKRUG Pangyo Group | Serverless Websocket 톺아보기 | Byun Kyuhyun
저는 Serverless Framework를 선택하였습니다. 이번 데모는 Serverless Framework로 배포하였습니다.