새소식

Project

LoGO 해외로고 프로젝트 - AIRFLOW 도입기

  • -

서비스 개발 배경

낮은 해외 진출률:

         한국 스타트업의 해외 진출률은 약 7%로 매우 낮으며 많은 스타트업이 자금과 인력이 부족하여 해외 진출에 어려움을 겪고 있음.

정보 부족:

        해외 진출 시 가장 큰 어려움으로 시장 정보 부족(41.1%)이 지적하고 있음, 많은 스타트업이 필요한 정보를 얻기 어려워 해외 진출을            포기하는 경우가 발생.

기술 규제 증가:

        무역기술장벽(TBT)으로 인한 무역상의 기술적 장애요소가 증가, 이를 해결하기 위한 정보가 필요.

정부의 지원:

        정부와 투자기관은 스타트업의 해외 진출을 지원하기 위해 다양한 프로그램을 제공하고 있으나, 비용적인 문제와 진입 장벽으로 실제.          로 이를 활용하는 스타트업은 소수.

 

서비스 개요

스타트업 & 중소기업의 해외진출 활성화를 위한 RAG기반 AI 어시스턴트

 

- 스타트업의 해외 진출 어려움 요소 '시장 정보부족' 문제를 해결하고 RAG 기반 정보 검색 서비스 제공

 

- 신뢰할 수 있는  정보 출처(인도 무역청, 인도 특허청, KOTRA 등) 기반의 자료를 사용하고 출처까지 조회할 수 있음으로 신뢰성 확보

 

Apache-Airflow 도입배경

Apache-Airflow란? 

초기 에어비엔비(Airfbnb) 엔지니어링 팀에서 개발한 워크플로우(e.g) ETL 파이프라인) 오픈 소스 플랫폼, 추후에 Apache 산하로 들어가게 됨으로 Apache-Airflow로 명칭이 바뀌게 됨

 

(1) Airflow Key Concept

DAG ? (Directed Acyclic Graph) - 방향이 있는 순환되지 않는 그래프

  • 워크플로우를 제어하는 기본 단위 (하나의 워크플로우 = 하나의 DAG)
  • 반복이나 순환을 허용하지 않는다.
  • DAG는 Task로 이루어져 있으며 각 task는 순환되는 구조로 연결될 수 없음

Operator? (각 테스크를 정의)

  • Action Operators
  • 기능이나 명령을 실행하는 오퍼레이터
  • 실제 연산을 수행, 데이터 추출 및 프로세싱
  • (참고) 내장 Operators는 BashOperator, PythonOperator, EmailOperator
  • 이외의 오퍼레이터는 공식 documnet 참고 (링크)

Transfer Operater

  • 하나의 시스템을 다른 시스템으로 옮김 (데이터를 Source에서 Destination으로 전송 등 )
  • 예를 들어, Presto에서 MySQL로 데이터를 전송하는데에 사용

Sensor Operators

  • 조건이 만족할 때까지 기다렸다가, 조건이 충족되면 다음 Task를 실행시킴

 

Task과 Operator는 비슷한 용어로 사용될 수 있는데, 개발자가 정의한 Task를 Operator가 실행시킨다! 라고 이해하는 편이 용이

 

- Operator가 Trigger(수동, 주기적)로 인해 실행되면 Task가 되는 형식, 이 때 실행된 Task를 Task Instance라고 함

 

(각 테스크는 binary right shift Operator에 의해서 의존성을 정의한다.)

 

(2) Airflow component

웹서버 : 웹 대시보드 UI로 스케줄러에서 분석한 Dag를 시각화하고 DAG 실행과 결과를 확인할 수 있는 인터페이스를 제공함

스케줄러 : DAG를 분석하고 현재 시점에서 Dag의 스케줄이 지난 경우 airflow worker DAG의 태스크를 예약함

Worker : 예약된 태스크를 실제로 실행시키는 것

Executor : 태스크가 어떻게 실행되는지 정의

 

 

3) Airflow 기본 동작 원리

  1. 유저가 새로운 Dag를 작성 → Dags Foolder 안에 py 파일 배치
  2. Web Server와 Scheuler가 파싱하여 읽어옴
  3. Scheduler가 Metastore를 통해 DagRun 오브젝터를 생성함
    1. DagRun은 사용자가 작성한 Dag의 인스턴스임
      DagRun Status : Running
  4. 스케줄러는 Task Instance Object를 스케줄링함
    1. Dag Run object의 인스턴스임
  5. 트리거가 상황이 맞으면 Scheduler가 Task Instance를 Executor로 보냄
  6. Exeutor는 Task Instance를 실행시킴
  7. 완료 후 → MetaStore에 완료했다고 보고함
    1. 완료된 Task Instance는 Dag Run에 업데이트됨
    2. Scheduler는 Dag 실행이 완료되었는지 Metastore를 통해 확인 후에 Dag Run의 생태를 완료로 바꿈
      DagRun Status : Completed
  8. Metastore가 Webserver에 업데이트해서 사용자도 확인
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.