AWS의 Serverless 서비스들을 활용하여
단 하나의 서버도 없이 데이터를 수집하고 분석한다.
사용하는 AWS 서비스
- AWS Lambda
- Amazon S3
- Amazon Athena
- AWS Glue
- Amazon CloudWatch
- Amazon QuickSight
1. 0원으로 시작하는
데이터 수집 및 분석
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
1
2. 목차
1. 발표자 소개
2. Serverless
3. 사용 서비스 소개
4. Serverless Framework
5. 수집 과정
6. 분석 결과
7. References
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
2
3. ● MOVILEST, CTO
● AWSKRUG Serverless Group
● Node.js, AWS Infrastructure... ETC
● Java, Javascript, French, SQL, Kotlin…
ETC
● https://novemberde.github.io
● https://github.com/novemberde
변규현
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
3
5. 시작하기에 앞서서
서버를 운영할 때 벌어지는 상황들
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
5
6. Web API: Load Balancer + Web Server
- Load Balancer의 월 최소 비용(ALB 기준): 2만원 + 추가 비용
- Web Server의 월 최소 비용(EC2 t3.micro 기준): 약 1만원
=> 아무 사용도 하지 않을 때의 요금
- 그런데 갑자기 접속자가 폭증한다면?
=> 열심히 Web server를 늘려주고,
Load Balancer에 연결해주고,
웹서버가 문제생기는지 지속적으로 모니터링해주고………………………..
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
6
7. Crawler: Server
- Server의 월 최소 비용(EC2 t3.micro 기준): 약 1만원
=> 아무것도 하지 않을 때의 요금
- Crawler가 잘 돌고 있으려면
=> NTP Server 로 시간 잘 맞춰주고,
서버가 잘 돌아가는지 지속적으로 Health Check 해주고,
배포 자동화하려면 설정할 것도 많고,
그리고 쌓인 데이터를 분석하려면… 상상도 하기 싫습니다.
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
7
8. 그래서 일을 줄이는 방법을 찾아야 했습니다.
그리고 비용을 줄여야 했습니다.
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
8
17. 사용 서비스들!
- AWS Lambda
- Amazon S3
- AWS Glue
- Amazon Athena
- Amazon QuickSight
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
17
18. 2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현
AWS Lambda
- 커스텀 로직으로 다른 AWS 서비스 확장
- 커스텀 백엔드 서비스 구축
- 자체 코드 사용 가능
- 완전히 자동화된 관리
- 내결함성 기본 제공
- Automatic Scaling
- Amazon CloudFront 요청에 대한 응답으로 코드 실행
- 통합된 보안 모델 & 사용량에 따라 지불
https://aws.amazon.com/ko/lambda/features/
18
19. AWS Lambda
제한 사항
- 사용가능한 언어: .NET Core 1.0(C#), .NET Core 2.0(C#), .NET Core 2.1(C#/PowerShell),
Go 1.x, Java 8, Node.js 4.3, Node.js 6.10, Node.js 8.10, Python 2.7, Python 3.6
- 실행시간: 15분 이내
- 메모리: 3008MB
- 동시성: 1000
- 코드 크기: 50MB, 리전당 총 75GB
- /tmp: 512MB
- payload 크기(동기식 호출: 6MB, 이벤트/비동기식 호출: 128KB)
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://aws.amazon.com/ko/lambda/features/
19
20. AWS Lambda
128 MB 512 MB 1024 MB
월별 프리티어(초) 3,200,000 800,000 400,000
100 ms 당 요금(USD) 0.000000208 0.000000834 0.000001667
1,000,000 Invoke
200 ms
요금(Free Tier 포함)
$ 0 $ 0 $ 0
1,000,000 Invoke
200 ms
요금(Free Tier 미포함)
$ 0.416 $ 1.668 $ 3.53
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://aws.amazon.com/ko/lambda/pricing/
20
21. Amazon S3
- 따라올 수 없는 내구성, 가용성 및 확장성. 99.999999999%
- 가장 포괄적인 보안 및 규정 준수 기능
- 현재 위치에서 쿼리
- 유연한 관리
- 가장 많은 파트너, 공급업체 및 AWS 서비스에서 지원
- 간편하고 유연한 데이터 전송
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://aws.amazon.com/ko/s3/features/
21
22. AWS Glue
- 완전관리형 ETL(추출, 변환 및 로드) 서비스
- 서버리스이므로 구매, 설정 또는 관리할 인프라가 없음
- 데이터 원본을 크롤링하고, 데이터 형식을 파악하고, 스키마와 변환을 제안
- Scala, Python 및 Apache Spark 지원
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://aws.amazon.com/ko/glue/features/
22
23. Amazon Athena
- ETL 불필요
- 서버리스이므로 구매, 설정 또는 관리할 인프라가 없음
- 쿼리당 비용 지불(스캔한 데이터 용량에 따른 비용만 지불)
- Presto 기반 표준 SQL 실행(CSV, JSON, ORC, Avro, Parquet 등 데이터 형식과 호환)
- 대용량 데이터세트에서도 대화식 성능 구현
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://aws.amazon.com/ko/athena/features/
23
24. Amazon QuickSight
- 조직 내 모든 구성원에게 세션당 요금제로 제공되는 첫 번째 BI 서비스
- 데이터 시각화 도구
- 사용한 만큼만 비용 지불
- 사용량과 활동에 따라 자동으로 규모가 확장
- 다양한 데이터 소스 사용 가능
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://aws.amazon.com/ko/quicksight/features/
24
26. Serverless Framework 란?
Serverless Framework 메인에 나와있는 소개문구는 다음과 같습니다.
Serverless is your toolkit for deploying and operating serverless architectures. Focus on your application,
not your infrastructure.
위 내용을 번역한 내용은 "Serverless는 서버 없는 아키텍처를 배치하고 운영하기 위한 툴킷입니다.
인프라가 아닌 애플리케이션에 집중합니다." 입니다. 이처럼 Serverless framework는 Serverless
architecture를 운영하기 위한 툴이라고 생각하면 됩니다.
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://serverless.com/
26
28. Serverless Configuration
# serverless.yml
service: myService
provider:
name: aws
runtime: nodejs6.10
memorySize: 512 # optional, in MB, default is 1024
timeout: 10 # optional, in seconds, default is 6
versionFunctions: false # optional, default is true
functions:
hello:
handler: handler.hello # required, handler set in AWS Lambda
name: ${self:provider.stage}-lambdaName # optional, Deployed Lambda name
description: Description of what the lambda function does # optional, Description to publish to AWS
runtime: python2.7 # optional overwrite, default is provider runtime
memorySize: 512 # optional, in MB, default is 1024
timeout: 10 # optional, in seconds, default is 6
reservedConcurrency: 5 # optional, reserved concurrency limit for this function. By default, AWS uses account concurrency limit
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://serverless.com/
28
29. serverless.yml 에서 가능한 설정 정보
- S3 Bucket
- API Gateway
- IAM Role
- Lambda
- CloudWatch Event
- VPC / Subnet / NAT / Security Group
- IoT
- DynamoDB
… 거의 모든 리소스에 대해서 가능합니다.
2018.10.26 | 부산 개발자 밋업 | 0원으로 시작하는 데이터 수집 및 분석 | 변규현https://serverless.com/framework/docs/providers/aws/guide/serverless.yml/
29