SlideShare a Scribd company logo
1 of 26
Download to read offline
Let the Air
fl
ow!
in AWS
크로키닷컴
강웅석
목차
•Airflow usage in ZIGZAG
•Managed Airflow demo
회사 소개
•지그재그 - No. 1 여성 쇼핑몰 모음앱
•2600만 다운로드
•DAU 700K+, MAU 3M+
•누적 거래액 2조+
•전직군 절찬 채용중!
지그재그 데이터 소개 (5월)
•S3 Data lake 26TB+
•전체 등록 상품 수 50M+
•단일 테이블, JSON 19GB+
•Impression log 일 250M+
•peak시 5분에 1.7M 수집
•33 DAG, 200+ daily tasks in Airflow
지그재그 데이터 소개 (11월)
•S3 Data lake 60TB+
•Impression log 일 500M+
•peak시 5분에 3M 수집
•49 DAG, 400+ daily/hourly/minutely tasks in Airflow
Airflow
•Workflow orchestration tool
•w/ dedicated job scheduler
•Started at Airbnb in 2014
•Becoming Apache Top Level Project in 2019
•Key features
•Scalable - Scale out through Celery worker
•Extensible - Custom operator
•DAG workflow
•Vertex - operator
•Edge - dependency
•Fancy UI, Dashboard
•Silver bullet for workflow management
Airflow in ZIGZAG
•정말 다양한 작업에 활용 중
•Data dump (Aurora, Redis, ES, third-party, …)
•ETL/ELT (Logs, …)
•Build data mart (KPI, key metrics, …)
•Trigger other services/APIs
•Glue partition update
•DB monitoring
Airflow infrastructures in ZIGZAG
•Airflow는 Kubernetes와 찰떡궁합
•그러나 초반엔 아무도 이런 거대한 시스템을 구축하길 원하지 않는다
Airflow infrastructures in ZIGZAG
•지그재그에서는 EC2 Host + ECS 선택
•Airflow DB를 위한 persistant volume 필요
•각 component를 각기 다른 환경으로 분리하고 싶지 않았음 (초반에는…)
•Celery worker, Redis, Flower, Scheduler, Webserver
•그러면서도 민첩하게 전체 시스템 재배포가 가능해야함
•Scale out은요?
•일단 Scale up으로 해결했지만, 필요하면 Fargate 등을 worker로 붙여도 되긴 함
Airflow infrastructures in ZIGZAG
Airflow infrastructures in ZIGZAG
Airflow infrastructures in ZIGZAG
•코드 변경시 배포는요?
•EC2 host에서 Git을 땡겨가서 task만 재배포하면 됨
•Jenkins 활용
Airflow usage example - RDB dump
Airflow usage example - Data dump
Airflow usage example - Data dump
•공통적으로 쓰는 코드는 전부 추상화하거나 operator로 재구성
•EMR, Spark, Athena
•Dependency 연결도 추상화 - 자주 쓰는 형태는 함수로
•필요한 설정값들은 코드로 알 수 있도록 - Everything as a Code
•Airflow의 재밌는 사실
•도중에 어떤 task가 죽어도, 마지막 task가 성공하면 전체 DAG를 성공으로 간주
•EMR terminate 할 때 전체 ancestor 확인하도록 변경
Airflow usage example - Triggering other API
Airflow usage example - Triggering other API
•External dependency 확인
Airflow usage example - Triggering other API
•ShortCircuitOperator
•Daily job이지만, 매 달 1일은 특별하게 trigger 해야한다면?
•반대로, 매 달 1일 빼고 다 돌고 싶다면?
Airflow usage example - Triggering other API
•다른 팀이 알 수 있도록 AWS Batch job 호출
Airflow usage example - Monitoring
•AWS DMS monitoring
•5분에 한 번씩!
Airflow usage example - Monitoring
•AWS Glue partition update
•Hourly partitioned table의 metadata update
•기본적으로 scheduling이 필요한 모든 곳에서 사용할 수 있습니다!
Airflow pros and cons
•Pros
•다 보셨죠…? 😀
•Cons
•꽤 허술한 dependency system
•정말 DAG로 모든 것을 표현하겠다는 의지가 느껴짐
•특히 inter-DAG나 external task에 대한 지원이 약함
•꽤나 거대한 시스템
•비슷한 Luigi의 경우, 딱 worker만 있고 나머지는 전부 external component를 사용하게 함
•Airflow가 사용하는 Postgres 말고 다른 control DB를 사용하고 싶다면?
•어려운 버전 업데이트
•여러 의존성때문에 업데이트가 쉽지 않다 (Postgres 버전, Redis 버전, Python library, …)
•minor update시 DB schema가 바뀌는 경우가 있어서 control DB를 날려줘야함
AWS Managed Workflows for Apache Airflow (MWAA) 🎉
AWS Managed Workflows for Apache Airflow (MWAA) 🎉
•At a glance…
•내부적으로 Kubernetes를 사용하는 것 같음
•코드, DAGs, Plugins는 S3를 참조
•생각보다 세심함…
•Airflow configuration도 console에서 업데이트 가능
•Environment node와 Worker node가 분리되어 있음
•가격이 저렴하진 않다.
•지그재그의 경우 m5.xlarge 사용 - $0.192/h, 동시에 약 16개 정도의 worker 운용 가능
•MWAA와 비교하면? (사양이 나와있지 않아 정확하진 않지만)
•Small environment: $0.49/h
•Small worker: 개당 $0.055/h
•대충 10대 쓰면, $0.55/h
•도합 $1/h 정도…
•그래도 EKS 띄워서 직접 운용하는 거랑 비교하면 “약간” 비싼 수준?
AWS Managed Workflows for Apache Airflow (MWAA) 🎉
•Let’s Airflow!
THANK YOU!

More Related Content

What's hot

AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015 AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015 Amazon Web Services Korea
 
Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017
Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017
Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017Amazon Web Services Korea
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기KTH, 케이티하이텔
 
20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기Doyoon Kim
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) Amazon Web Services Korea
 
Getting Started with BigQuery ML
Getting Started with BigQuery MLGetting Started with BigQuery ML
Getting Started with BigQuery MLDan Sullivan, Ph.D.
 
Fluentd v0.14 Plugin API Details
Fluentd v0.14 Plugin API DetailsFluentd v0.14 Plugin API Details
Fluentd v0.14 Plugin API DetailsSATOSHI TAGOMORI
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나Amazon Web Services Korea
 
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)AWSKRUG - AWS한국사용자모임
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
Enabling product personalisation using Apache Kafka, Apache Pinot and Trino w...
Enabling product personalisation using Apache Kafka, Apache Pinot and Trino w...Enabling product personalisation using Apache Kafka, Apache Pinot and Trino w...
Enabling product personalisation using Apache Kafka, Apache Pinot and Trino w...HostedbyConfluent
 
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)Amazon Web Services Korea
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐Terry Cho
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
 
Disaster Recovery of On-Premises IT Infrastructure with AWS
Disaster Recovery of On-Premises IT Infrastructure with AWSDisaster Recovery of On-Premises IT Infrastructure with AWS
Disaster Recovery of On-Premises IT Infrastructure with AWSAmazon Web Services
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안NAVER D2
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기Yungon Park
 

What's hot (20)

AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015 AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
 
Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017
Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017
Amazon SNS로 지속적 관리가 가능한 대용량 푸쉬 시스템 구축 여정 - AWS Summit Seoul 2017
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
Getting Started with BigQuery ML
Getting Started with BigQuery MLGetting Started with BigQuery ML
Getting Started with BigQuery ML
 
Fluentd v0.14 Plugin API Details
Fluentd v0.14 Plugin API DetailsFluentd v0.14 Plugin API Details
Fluentd v0.14 Plugin API Details
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
 
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Enabling product personalisation using Apache Kafka, Apache Pinot and Trino w...
Enabling product personalisation using Apache Kafka, Apache Pinot and Trino w...Enabling product personalisation using Apache Kafka, Apache Pinot and Trino w...
Enabling product personalisation using Apache Kafka, Apache Pinot and Trino w...
 
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
 
2020.02.06 우리는 왜 glue를 버렸나?
2020.02.06 우리는 왜 glue를 버렸나?2020.02.06 우리는 왜 glue를 버렸나?
2020.02.06 우리는 왜 glue를 버렸나?
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
Disaster Recovery of On-Premises IT Infrastructure with AWS
Disaster Recovery of On-Premises IT Infrastructure with AWSDisaster Recovery of On-Premises IT Infrastructure with AWS
Disaster Recovery of On-Premises IT Infrastructure with AWS
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기
 

Similar to AWSKRUG DS 2020/12 - Let the Airflow in AWS

201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나JeongHwan Kim
 
Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Youngjae Kim
 
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대CONNECT FOUNDATION
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainNAVER Engineering
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS LambdaSeungho Kim
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWSMatthew (정재화)
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Harrison Jung
 
github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기newdeal2
 
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들Woong Seok Kang
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면Byeongsu Kang
 
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Eunchong Yu
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...uEngine Solutions
 
AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3Keeyong Han
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)Brian Hong
 
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...Amazon Web Services Korea
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable FunctionsJongin Lee
 

Similar to AWSKRUG DS 2020/12 - Let the Airflow in AWS (20)

201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
 
Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리
 
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchain
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.
 
github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기
 
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
AWSKRUG DS - 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
 
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 
AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
 
KGC 2013 DevSisters
KGC 2013 DevSistersKGC 2013 DevSisters
KGC 2013 DevSisters
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
 

AWSKRUG DS 2020/12 - Let the Airflow in AWS

  • 1. Let the Air fl ow! in AWS 크로키닷컴 강웅석
  • 2. 목차 •Airflow usage in ZIGZAG •Managed Airflow demo
  • 3. 회사 소개 •지그재그 - No. 1 여성 쇼핑몰 모음앱 •2600만 다운로드 •DAU 700K+, MAU 3M+ •누적 거래액 2조+ •전직군 절찬 채용중!
  • 4. 지그재그 데이터 소개 (5월) •S3 Data lake 26TB+ •전체 등록 상품 수 50M+ •단일 테이블, JSON 19GB+ •Impression log 일 250M+ •peak시 5분에 1.7M 수집 •33 DAG, 200+ daily tasks in Airflow
  • 5. 지그재그 데이터 소개 (11월) •S3 Data lake 60TB+ •Impression log 일 500M+ •peak시 5분에 3M 수집 •49 DAG, 400+ daily/hourly/minutely tasks in Airflow
  • 6. Airflow •Workflow orchestration tool •w/ dedicated job scheduler •Started at Airbnb in 2014 •Becoming Apache Top Level Project in 2019 •Key features •Scalable - Scale out through Celery worker •Extensible - Custom operator •DAG workflow •Vertex - operator •Edge - dependency •Fancy UI, Dashboard •Silver bullet for workflow management
  • 7. Airflow in ZIGZAG •정말 다양한 작업에 활용 중 •Data dump (Aurora, Redis, ES, third-party, …) •ETL/ELT (Logs, …) •Build data mart (KPI, key metrics, …) •Trigger other services/APIs •Glue partition update •DB monitoring
  • 8. Airflow infrastructures in ZIGZAG •Airflow는 Kubernetes와 찰떡궁합 •그러나 초반엔 아무도 이런 거대한 시스템을 구축하길 원하지 않는다
  • 9. Airflow infrastructures in ZIGZAG •지그재그에서는 EC2 Host + ECS 선택 •Airflow DB를 위한 persistant volume 필요 •각 component를 각기 다른 환경으로 분리하고 싶지 않았음 (초반에는…) •Celery worker, Redis, Flower, Scheduler, Webserver •그러면서도 민첩하게 전체 시스템 재배포가 가능해야함 •Scale out은요? •일단 Scale up으로 해결했지만, 필요하면 Fargate 등을 worker로 붙여도 되긴 함
  • 12. Airflow infrastructures in ZIGZAG •코드 변경시 배포는요? •EC2 host에서 Git을 땡겨가서 task만 재배포하면 됨 •Jenkins 활용
  • 13. Airflow usage example - RDB dump
  • 14. Airflow usage example - Data dump
  • 15. Airflow usage example - Data dump •공통적으로 쓰는 코드는 전부 추상화하거나 operator로 재구성 •EMR, Spark, Athena •Dependency 연결도 추상화 - 자주 쓰는 형태는 함수로 •필요한 설정값들은 코드로 알 수 있도록 - Everything as a Code •Airflow의 재밌는 사실 •도중에 어떤 task가 죽어도, 마지막 task가 성공하면 전체 DAG를 성공으로 간주 •EMR terminate 할 때 전체 ancestor 확인하도록 변경
  • 16. Airflow usage example - Triggering other API
  • 17. Airflow usage example - Triggering other API •External dependency 확인
  • 18. Airflow usage example - Triggering other API •ShortCircuitOperator •Daily job이지만, 매 달 1일은 특별하게 trigger 해야한다면? •반대로, 매 달 1일 빼고 다 돌고 싶다면?
  • 19. Airflow usage example - Triggering other API •다른 팀이 알 수 있도록 AWS Batch job 호출
  • 20. Airflow usage example - Monitoring •AWS DMS monitoring •5분에 한 번씩!
  • 21. Airflow usage example - Monitoring •AWS Glue partition update •Hourly partitioned table의 metadata update •기본적으로 scheduling이 필요한 모든 곳에서 사용할 수 있습니다!
  • 22. Airflow pros and cons •Pros •다 보셨죠…? 😀 •Cons •꽤 허술한 dependency system •정말 DAG로 모든 것을 표현하겠다는 의지가 느껴짐 •특히 inter-DAG나 external task에 대한 지원이 약함 •꽤나 거대한 시스템 •비슷한 Luigi의 경우, 딱 worker만 있고 나머지는 전부 external component를 사용하게 함 •Airflow가 사용하는 Postgres 말고 다른 control DB를 사용하고 싶다면? •어려운 버전 업데이트 •여러 의존성때문에 업데이트가 쉽지 않다 (Postgres 버전, Redis 버전, Python library, …) •minor update시 DB schema가 바뀌는 경우가 있어서 control DB를 날려줘야함
  • 23. AWS Managed Workflows for Apache Airflow (MWAA) 🎉
  • 24. AWS Managed Workflows for Apache Airflow (MWAA) 🎉 •At a glance… •내부적으로 Kubernetes를 사용하는 것 같음 •코드, DAGs, Plugins는 S3를 참조 •생각보다 세심함… •Airflow configuration도 console에서 업데이트 가능 •Environment node와 Worker node가 분리되어 있음 •가격이 저렴하진 않다. •지그재그의 경우 m5.xlarge 사용 - $0.192/h, 동시에 약 16개 정도의 worker 운용 가능 •MWAA와 비교하면? (사양이 나와있지 않아 정확하진 않지만) •Small environment: $0.49/h •Small worker: 개당 $0.055/h •대충 10대 쓰면, $0.55/h •도합 $1/h 정도… •그래도 EKS 띄워서 직접 운용하는 거랑 비교하면 “약간” 비싼 수준?
  • 25. AWS Managed Workflows for Apache Airflow (MWAA) 🎉 •Let’s Airflow!