데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Apache Airflow를 시작하는 가장 쉬운 방법, Astro CLI

      추영욱 25.03.31
      2,911 6 2
      DEVOTEE 요약
      Apache Airflow는 설치와 실행 과정이 어려운 것으로 알려져 있지만, Astronomer가 개발한 Astro CLI를 통해 이를 쉽게 할 수 있게 되었습니다. Astro CLI는 단 세 개의 명령어로 프로젝트 설정 및 실행이 가능하며, 여러 운영체제(MacOS, Windows, Linux)에서도 사용이 가능하다는 장점이 있습니다. 이 도구는 직관적인 명령어 및 다양한 템플릿을 제공하여 Airflow의 학습 및 사용을 더욱 간단하고 효율적으로 만들어 줍니다.
      DEVOTEE 추천 블로그

      Apache Airflow에 대해 자주 이야기가 나오는 것이 있습니다.

      • Airflow를 시작하기 어렵다.

      • 로컬 환경에서 세팅하기 어렵다.

      이런 이야기의 배경에는 설치부터 공식 문서에서 방대한 양의 세팅 관련 문서를 마주했던 경험과,

      실행 및 테스트를 위해 추가적인 도구(Airflow Breeze) 혹은 명령어를 추가로 학습해야 했고 그마저도 사용하기 쉬운 것과는 거리가 멀었기 때문입니다.


      image.png


      이러한 이유로 많은 사람들이 "Airflow를 어렵다"고 느낍니다.

      그런데 만약 Apache Airflow를 쉽게 설치하고, 단 몇 개의 명렁어만으로도 실행과 테스트를 할 수 있다면 어떨까요?


      Apache Airflow 생태계에 많은 기여를 해온 Astronomer은 이 문제를 해결하기 위해 Apache Airflow를 설치하는 가장 쉬운 방법, Astro CLI라는 것을 개발했습니다.

      image.png

      그리고 이를 오픈소스로 공개하여 누구나 손쉽게 Airflow를 설치하고 사용할 수 있게 되었습니다.

      이 글을 통해서 Astro CLI를 어떻게 사용할 수 있는지 알아보도록 하겠습니다.


      Astro CLI 설치

      Astro CLI는 MacOS, Window, Linux 모두 사용할 수 있습니다.

      설치는 공식 홈페이지를 참고하여 설치할 수 있습니다.

      image.png

      설치가 완료되었는지 아래의 명령어를 통해 정상적으로 설치되었는지 확인해봅시다.

      astro -h

      image.png

      Astro CLI 미리보기

      과연 얼마나 쉽게 실행이 가능하길레 이렇게 호들갑인가 싶을 것입니다.

      AstroCLI를 사용하면 단 3개의 직관적인 명령어만으로 프로젝트를 세팅하고 실행하고 중지할 수 있습니다.

      astro dev init
      astro dev start
      astro dev stop
      1. astro dev init && astro dev start

        image.png

      2. localhost:8080으로 Airflow UI 가 나오면 Username과 Password에adminadmin을 쳐서 들어갑니다.

        image.png

        image.png

      3. astro dev stop

        image.png

      한 번이라도 Airflow를 직접 세팅하느라 어려움을 겪으셨던 분이나,

      처음 공부하실 때 공식문서의 “Installation of Airflow”를 보고 벽을 느끼셨던 분들은 이것이 얼마나 감동적인 경험인지 공감하실 것입니다.


      그럼 조금 더 자세히 알아보도록 하겠습니다.


      Astro CLI 를 사용한 Airflow 프로젝트 시작하기

      프로젝트 폴더에서 astro dev init을 실행하면 프로젝트의 기본 디렉토리 구조가 생성됩니다.

      디랙토리 구조는 다음과 같습니다:

      .
      ├── .env                    # 로컬 환경 변수 설정 파일
      ├── dags                    # DAG 파일을 저장하는 디렉토리
      │   └── exampledag.py       # 간단한 예제 DAG
      ├── Dockerfile              # Astro Runtime Docker 이미지
      ├── include                 # 기타 포함할 파일을 저장하는 디렉토리
      ├── plugins                 # Airflow 플러그인 저장소
      ├── tests                   # pytest로 실행할 DAG 유닛 테스트 파일 폴더
      │   └── test_dag_example.py # 간단한 예제 테스트
      ├── airflow_settings.yaml   # Airflow connections, variables and pools 설정 파일
      ├── packages.txt            # OS 수준 패키지 목록
      └── requirements.txt        # Python 패키지 목록


      connections, variables, pools 설정하기

      Airflow의 connection, variable, pools를 설정하는 방법에는 두 가지가 있습니다.

      이 과정은 Astro CLI를 사용하지 않더라도 동일하기 때문에 이미 익숙할 수 있으므로 간단히 넘어가겠습니다.

      AirflowUI를 통한 설정

      Airflow UI에서 직접 설정할 수 있습니다. UI에서 "Admin" → "Connections/Variables/Pools"로 이동해서 설정하시면 됩니다.

      image.png

      image.png

      airflow_settings.yaml를 통해 설정

      airflow_settings.yaml 파일을 통해 아래와 같이 connections, variables, pools을 설정할 수 있습니다.

      airflow:
        connections:
          - conn_id:
            conn_type:
            conn_host:
            conn_schema:
            conn_login:
            conn_password:
            conn_port:
            conn_extra:
              example_extra_field: example-value
        pools:
          - pool_name:
            pool_slot:
            pool_description:
        variables:
          - variable_name:
            variable_value:


      환경변수 설정

      Airflow를 사용할 때, 일반적으로 airflow.cfg 파일을 사용합니다.

      하지만 Astro CLI를 사용한 프로젝트는 .env 파일에 설정된 값을 기반으로 airflow.cfg를 생성하기 떄문에 .env 파일을 사용하여 환경변수를 설정합니다.

      따라서 별도로 airflow.cfg를 수정하거나 설정할 필요가 없습니다.


      환경변수를 확인하려면 아래 명령어로 확인할 수 있습니다:

      astro dev bash --scheduler 

      image.png

      cat airflow.cfg

      image.png

      이 명령어로 생성된 airflow.cfg 파일의 내용을 확인할 수 있습니다.


      Airflow의 특정 버전으로 프로젝트 생성하기

      아무 옵션없이 astro dev init을 실행했을 때는 설치된 Astro CLI에 기본 설정된 astro runtime이 지원하는 가장 최신의 Airflow 버전으로 프로젝트가 생성이 됩니다.

      하지만 특정 버전의 Airflow로 프로젝트를 생성할 필요가 있을 때도 있습니다.


      이럴 경우를 위해, Astro CLI는 두 가지 방법으로 특정 버전의 Airflow 프로젝트를 생성할 수 있습니다.


      Astro Runtime 버전을 고정하여 프로젝트 초기화

      아래의 명령어를 통해 astro runtime 버전을 4.1.0 으로 고정하고 프로젝트를 생성해보겠습니다.

      astro dev init --runtime-version 4.1.0

      image.png

      astro runtime release note 에서 Astro Runtime 4.1.0 이 Apache Airflow 2.2.4버전을 지원하고 있는 것을 확인할 수 있습니다.

      image.png

      image.png

      실제로 Astro Runtime의 버전을 고정하여 만든 프로젝트의 Airflow 버전이 2.2.4인 것을 확인할 수 있습니다.


      Airflow 버전을 고정하여 프로젝트 초기화

      그럼 이제 단순하게 Airflow 버전을 고정하여 프로젝트 초기화를 해봅시다.

      아래의 명령어를 통해 Airflow 2.3.0으로 프로젝트를 생성해봅시다.

      astro dev init --airflow-version 2.3.0

      image.png

      image.png

      이 명령어들을 사용하여, 로컬 개발환경을 프로덕션 환경의 Airflow 버전과 맞춰줄 수 있습니다.


      Astro CLI 템플릿을 활용하여 프로젝트 시작하기

      Astro CLI는 Airflow 학습을 위한 다양한 템플릿을 제공합니다.

      astro dev init -t

      명령어를 실행하면 템플릿 목록이 나오며, 원하는 템플릿을 선택하고 Enter 키를 누르면 자동으로 구성이 됩니다.

      저는 예시로 etl을 선택하여 4를 입력하고 Enter 키를 눌러보았습니다.

      image.png

      그럼 아래와 같이 템플릿이 적용되어 디렉토리가 구성이 된 것을 확인할 수 있습니다.

      image.png

      단위 테스트

      Astro CLI를 사용하면 다음의 DAG 단위 테스트 Astro CLI 명령어를 활용하여 개발한 DAG가 정상적으로 동작하는지 빠르게 확인할 수 있습니다.

      astro dev parse
      astro dev pytest

      astro dev parse 명령은 DAG를 구문 분석하여 기본 syntax나 import 오류가 없는지, Airflow UI에서 성공적으로 렌더링할 수 있는지 간단하게 아래와 같이 확인할 수 있습니다.

      image.png

      astro dev pytest명령은 tests 디렉토리 안에 있는 모든 테스트를 진행합니다.

      아래와 같이 tests 디렉토리 안에 예시로 들어있는 test_dag_example.py 를 수행한 내용을 확인할 수 있습니다.

      image.png

      마무리하며

      이제 Airflow를 시작하는 것은 더 이상 어려운 것이 아닙니다.

      Astro CLI를 사용하면 단 몇 가지의 명령어만으로 쉽게 로컬 Airflow 개발 환경을 구축하고 실행, 테스트할 수 있습니다.


      Astro CLI를 사용하여 더욱 간편하게 Airflow를 시작해보세요 😉

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      추영욱 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기