SlideShare a Scribd company logo
1 of 50
Download to read offline


Connecting Content and Creator to Global Audience
Connecting Content and Creator to Global Audience
PHP Backend
WP Database
Python Backend
WP Database
블로그를 위한 구조에 스트리밍 서비스 관련 모델을 담은 형태
Program
Episode
Actor
Category Program’s meta
Episode’s meta
Actor’s meta


기능 추가에 유연한 코드 (서비스별 맞춤 서비스를 제공해야 하므로)
모두가 참여할 수 있는 낮은 진입 장벽
재사용 용이, 기술 부채 방어
파이썬을 파이써닉하게
문법, 컨벤션 등 기본에 충실한 코드
의존성 낮출 수 있도록 단순한 책임 구조
Django REST Framework 의 권장 구조 활용
DRF 역시 기본에 충실한 코드
정제된 데이터 모델 정의 > 준비된 모듈, 적은 코드로 많은 기능 구현
Model(Data structure) - Serializer(Data mapping) - ViewSets(CRUD) - Router
Test Coverage 96%
안정적인 리펙토링 / 배포 가능
내부 테스트 작성 활성화를 위해 이해를 돕는 라이트닝 토크 진행
HLS(HTTP Live Streaming)
Apple에서 2009년에 내놓은 라이브 스트리밍 프로토콜
- 스트리밍 데이터를 시간 단위로 잘게 쪼개서 전송
- m3u8 파일을 이용하여 재생 파일 리스트를 전달
*.m3u8
재생할 ts 파일들의 리스트
1.ts
2.ts
3.ts
입력-변환-저장까지의 비디오 파이프라인 구축을 위한 도구
* Python의 파이프라인 구축 모듈인 Luigi 의 구조를 참고하여 구현
* PyCon.KR 2017 라이트닝 토크에서 소개된 적이 있음
비디오 관련 도메인은 로우 레벨로 갈수록 복잡하고 어려운 부분이 많아, 이
를 최대한 Python 으로 래핑하여 누구나 파이프라인 구축/유지보수에 참여할
수 있도록 함
입력-변환-저장까지의 비디오 파이프라인 구축을 위한 도구
* Python의 파이프라인 구축 모듈인 Luigi 의 구조를 참고하여 구현
* PyCon.KR 2017 라이트닝 토크에서 소개된 적이 있음
비디오 관련 도메인은 로우 레벨로 갈수록 복잡하고 어려운 부분이 많아, 이
를 최대한 Python 으로 래핑하여 누구나 파이프라인 구축/유지보수에 참여할
수 있도록 함
Job 생성 순서
Job 실행 순서
Job 실행 순서
Django REST Framework 기반의 비디오 관련 API
제공 기능
- 비디오 파이프라인 현황
- 내부 고객을 위한 영상 에셋 조회, 관리 기능 등 (Admin API)
배치 작업의 복잡한 파이프라인 구축에 도움을 주는 python module
파이프라인 개발에 필연적으로 발생하는 이슈인 의존성, 워크플로우
관리, 시각화, 실패 처리와 같은 문제를 해결하기 위해 사용
spotify/luigi
대표적인 도구로 Airflow, Luigi 가 꼽힘
규모가 크지 않은 팀에는 개발 효율성이 중요했음
직접 짜야하거나 비교적 복잡한 부분이 많은 Airflow 보다는
Luigi가 적당하다고 판단
외부 데이터 형식이 바뀜
루이지 코드에 에러가 있음
설정 문제 (무한 pending)
로그 파일이 아직 생성되지 않음
외부 데이터 형식이 바뀜
루이지 코드에 에러가 있음
설정 문제 (무한 pending)
로그 파일이 아직 생성되지 않음
Test
Output
Expected
Output
Generate test output
Validate test output with
expected output
Return result
Input
Unittest 사용
- BigQuery 데이터를 이용하는 특성상 커스터마이징하여 작성
통합 테스트 뿐 아니라 다양한 unit test 가 추가되고 있음
Unittest 사용
- BigQuery 데이터를 이용하는 특성상 커스터마이징하여 작성
통합 테스트 뿐 아니라 다양한 unit test 가 추가되고 있음








How to use Python in Video streaming service - PyCon Korea 2020
How to use Python in Video streaming service - PyCon Korea 2020
How to use Python in Video streaming service - PyCon Korea 2020

More Related Content

What's hot

[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드NAVER Engineering
 
자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능Dexter Jung
 
(00 OT) 00. ot 전체
(00 OT) 00. ot   전체(00 OT) 00. ot   전체
(00 OT) 00. ot 전체dhdbstjr98
 
[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법NAVER D2
 
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)Covenant Ko
 
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석NAVER D2
 
DzinnyPing(포트폴리오)-정재훈
DzinnyPing(포트폴리오)-정재훈DzinnyPing(포트폴리오)-정재훈
DzinnyPing(포트폴리오)-정재훈jung jaehun
 
Introduction to Golang v2
Introduction to Golang v2Introduction to Golang v2
Introduction to Golang v2Hyejong
 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework명신 김
 
Golang Restful 서버 개발기
Golang Restful 서버 개발기Golang Restful 서버 개발기
Golang Restful 서버 개발기Hyejong
 
파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)민지 김
 
Rapid Development
Rapid DevelopmentRapid Development
Rapid Development기룡 남
 
Introduction to Golang
Introduction to GolangIntroduction to Golang
Introduction to GolangHyejong
 
모두의 클라우드 딥러닝
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
모두의 클라우드 딥러닝NAVER Engineering
 
Hot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaHot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaDexter Jung
 
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XpressEngine
 

What's hot (20)

About Programmer 2021
About Programmer 2021About Programmer 2021
About Programmer 2021
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
 
자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능
 
(00 OT) 00. ot 전체
(00 OT) 00. ot   전체(00 OT) 00. ot   전체
(00 OT) 00. ot 전체
 
[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법
 
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
 
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
[2017 Incognito] Code Clone 기법을 통한 모바일 브라우저 취약점 분석
 
DzinnyPing(포트폴리오)-정재훈
DzinnyPing(포트폴리오)-정재훈DzinnyPing(포트폴리오)-정재훈
DzinnyPing(포트폴리오)-정재훈
 
20 2 강의를 마치며
20 2 강의를 마치며20 2 강의를 마치며
20 2 강의를 마치며
 
Introduction to Golang v2
Introduction to Golang v2Introduction to Golang v2
Introduction to Golang v2
 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework
 
11 1 while반복문
11 1 while반복문11 1 while반복문
11 1 while반복문
 
Golang Restful 서버 개발기
Golang Restful 서버 개발기Golang Restful 서버 개발기
Golang Restful 서버 개발기
 
파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)
 
Rapid Development
Rapid DevelopmentRapid Development
Rapid Development
 
04 1 함수
04 1 함수04 1 함수
04 1 함수
 
Introduction to Golang
Introduction to GolangIntroduction to Golang
Introduction to Golang
 
모두의 클라우드 딥러닝
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
모두의 클라우드 딥러닝
 
Hot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaHot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With Java
 
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
 

Similar to How to use Python in Video streaming service - PyCon Korea 2020

제품소개서 (Pastel editor)
제품소개서 (Pastel editor)제품소개서 (Pastel editor)
제품소개서 (Pastel editor)Kevin Hyun
 
제품소개서( Pastel Editor)
제품소개서( Pastel Editor)제품소개서( Pastel Editor)
제품소개서( Pastel Editor)Kevin Hyun
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)중선 곽
 
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablup Inc.
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기Yeonhee Kim
 
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3Ji-Woong Choi
 
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례Yousun Jeong
 
171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계우진 신
 
Optimizing The Content Pipeline
Optimizing The Content PipelineOptimizing The Content Pipeline
Optimizing The Content Pipelinecodevania
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oceuEngine Solutions
 
유엔진 프로세스 모니터링 툴킷 P M T Process Monitoring Toolkit
유엔진 프로세스 모니터링 툴킷  P M T  Process  Monitoring  Toolkit유엔진 프로세스 모니터링 툴킷  P M T  Process  Monitoring  Toolkit
유엔진 프로세스 모니터링 툴킷 P M T Process Monitoring ToolkituEngine Solutions
 
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624uEngine Solutions
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크InGuen Hwang
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개HYUN-JOO LEE
 
IBM Rational Test Workbench 소개 ( IT SYSTEM TEST TOOL)
IBM  Rational Test Workbench  소개 ( IT SYSTEM TEST TOOL)IBM  Rational Test Workbench  소개 ( IT SYSTEM TEST TOOL)
IBM Rational Test Workbench 소개 ( IT SYSTEM TEST TOOL)Shaun LEE
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1Booseol Shin
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sSeong-Bok Lee
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 

Similar to How to use Python in Video streaming service - PyCon Korea 2020 (20)

제품소개서 (Pastel editor)
제품소개서 (Pastel editor)제품소개서 (Pastel editor)
제품소개서 (Pastel editor)
 
제품소개서( Pastel Editor)
제품소개서( Pastel Editor)제품소개서( Pastel Editor)
제품소개서( Pastel Editor)
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기
 
ecdevday4
ecdevday4ecdevday4
ecdevday4
 
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
 
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
 
171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계
 
Optimizing The Content Pipeline
Optimizing The Content PipelineOptimizing The Content Pipeline
Optimizing The Content Pipeline
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
 
유엔진 프로세스 모니터링 툴킷 P M T Process Monitoring Toolkit
유엔진 프로세스 모니터링 툴킷  P M T  Process  Monitoring  Toolkit유엔진 프로세스 모니터링 툴킷  P M T  Process  Monitoring  Toolkit
유엔진 프로세스 모니터링 툴킷 P M T Process Monitoring Toolkit
 
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개
 
IBM Rational Test Workbench 소개 ( IT SYSTEM TEST TOOL)
IBM  Rational Test Workbench  소개 ( IT SYSTEM TEST TOOL)IBM  Rational Test Workbench  소개 ( IT SYSTEM TEST TOOL)
IBM Rational Test Workbench 소개 ( IT SYSTEM TEST TOOL)
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 

How to use Python in Video streaming service - PyCon Korea 2020

  • 1.
  • 2.
  • 3. Connecting Content and Creator to Global Audience
  • 4. Connecting Content and Creator to Global Audience
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. PHP Backend WP Database Python Backend WP Database
  • 15. 블로그를 위한 구조에 스트리밍 서비스 관련 모델을 담은 형태 Program Episode Actor Category Program’s meta Episode’s meta Actor’s meta
  • 16.
  • 17.
  • 18.
  • 19. 기능 추가에 유연한 코드 (서비스별 맞춤 서비스를 제공해야 하므로) 모두가 참여할 수 있는 낮은 진입 장벽 재사용 용이, 기술 부채 방어
  • 20. 파이썬을 파이써닉하게 문법, 컨벤션 등 기본에 충실한 코드 의존성 낮출 수 있도록 단순한 책임 구조
  • 21. Django REST Framework 의 권장 구조 활용 DRF 역시 기본에 충실한 코드 정제된 데이터 모델 정의 > 준비된 모듈, 적은 코드로 많은 기능 구현 Model(Data structure) - Serializer(Data mapping) - ViewSets(CRUD) - Router
  • 22. Test Coverage 96% 안정적인 리펙토링 / 배포 가능 내부 테스트 작성 활성화를 위해 이해를 돕는 라이트닝 토크 진행
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. HLS(HTTP Live Streaming) Apple에서 2009년에 내놓은 라이브 스트리밍 프로토콜 - 스트리밍 데이터를 시간 단위로 잘게 쪼개서 전송 - m3u8 파일을 이용하여 재생 파일 리스트를 전달 *.m3u8 재생할 ts 파일들의 리스트 1.ts 2.ts 3.ts
  • 29. 입력-변환-저장까지의 비디오 파이프라인 구축을 위한 도구 * Python의 파이프라인 구축 모듈인 Luigi 의 구조를 참고하여 구현 * PyCon.KR 2017 라이트닝 토크에서 소개된 적이 있음 비디오 관련 도메인은 로우 레벨로 갈수록 복잡하고 어려운 부분이 많아, 이 를 최대한 Python 으로 래핑하여 누구나 파이프라인 구축/유지보수에 참여할 수 있도록 함
  • 30.
  • 31. 입력-변환-저장까지의 비디오 파이프라인 구축을 위한 도구 * Python의 파이프라인 구축 모듈인 Luigi 의 구조를 참고하여 구현 * PyCon.KR 2017 라이트닝 토크에서 소개된 적이 있음 비디오 관련 도메인은 로우 레벨로 갈수록 복잡하고 어려운 부분이 많아, 이 를 최대한 Python 으로 래핑하여 누구나 파이프라인 구축/유지보수에 참여할 수 있도록 함
  • 32. Job 생성 순서 Job 실행 순서
  • 33.
  • 35. Django REST Framework 기반의 비디오 관련 API 제공 기능 - 비디오 파이프라인 현황 - 내부 고객을 위한 영상 에셋 조회, 관리 기능 등 (Admin API)
  • 36.
  • 37.
  • 38.
  • 39.
  • 40. 배치 작업의 복잡한 파이프라인 구축에 도움을 주는 python module 파이프라인 개발에 필연적으로 발생하는 이슈인 의존성, 워크플로우 관리, 시각화, 실패 처리와 같은 문제를 해결하기 위해 사용 spotify/luigi 대표적인 도구로 Airflow, Luigi 가 꼽힘
  • 41. 규모가 크지 않은 팀에는 개발 효율성이 중요했음 직접 짜야하거나 비교적 복잡한 부분이 많은 Airflow 보다는 Luigi가 적당하다고 판단
  • 42. 외부 데이터 형식이 바뀜 루이지 코드에 에러가 있음 설정 문제 (무한 pending) 로그 파일이 아직 생성되지 않음
  • 43. 외부 데이터 형식이 바뀜 루이지 코드에 에러가 있음 설정 문제 (무한 pending) 로그 파일이 아직 생성되지 않음
  • 44. Test Output Expected Output Generate test output Validate test output with expected output Return result Input
  • 45. Unittest 사용 - BigQuery 데이터를 이용하는 특성상 커스터마이징하여 작성 통합 테스트 뿐 아니라 다양한 unit test 가 추가되고 있음
  • 46. Unittest 사용 - BigQuery 데이터를 이용하는 특성상 커스터마이징하여 작성 통합 테스트 뿐 아니라 다양한 unit test 가 추가되고 있음