728x90

오케스트레이션이란?
 
여러개의 컴퓨터시스템, 애플리케이션 또는 서비스를 조율하고 관리하는것 
복잡한 Task와 workflow를 쉽게 관리 할수 있도록 도와주는 역할

데이터 파이프라인 예)
구축해주면 한가지 job만 하느것이 아니라 여러가지의 job을 해결해준다. 
 
 

워크플로 관리 도구의 필요성
 

  •  스크립트의 한계
  •  워크플로가 복잡
  • Task의 의존 관계가 복잡
  • 실패 시 처리 어려움(결과를 매번 확인해야하며 실패하면 처음부터 다시해야한다.)

 
워크플로 관리도구 기능

  • 스케쥴링
  • Takst 의존관계 정의
  • 실행 결과 알림 및 보관
  • 실패시 재실행

DAG(Directed Acyclic Graph)
방향성(Directed)
간선에 방향이 존재
(그래프에서 노드와 간선으로 이루어져있다.)
비순환(Acyclic)
사이클이 존재하지 않음
 그래프의 한 정점에서 시작하여 다시 시작정점으로 이어지는 간선이 존재하지 않음
 
DAG의 대표적인 예로
게임에서 사용하는 스킬트리입니다. 
특정 스킬을 활성화 하기 위해서는 해당 스킬부터 차근차근 찍어줘야 사용할수잇다.
 

 
 
실제 task들의 의존관계이다. 
DAG의 의한 데이터 구조라고 표현이 되고 task의 의존관계를 dag으로 표현한다. 
 

 
airflow 에서 사용하는 워크플로 

Apach Oozie 도 있는데 Oozie에서만 제공하는 기능만 사용할수 있고, airflow 와 같이 추가적으로 해결을 못하고 코드가 길어지는 단점이 있지만
워크플로워를 누구나 다 동일하게 작성해서 협업이나 유지보수에서는 좋은 장점이다. 
 
실행 결과 알림 및 보관 

복구

실패 시 복구 방법

  • 재시도 -  일시적인 문제를 대응하기에는 좋은것이다. (재시도 횟수가 너무 많으면 task의 오류를 늦게 발견하게 된다.)2~3 회 정도 하는것을 추천하고 아니면 해당 task의 문제를 해결해야한다. 
  • backfill - 일정기간동안 워크플로우를 재실행하는것이다. 한번에 많은\이터를 처리할수 있다.

 

오픈소스 워크플로 관리 도구 비교 

 

 

728x90
복사했습니다!