인프런 커뮤니티 질문&답변
astro project 실무 적용 질문
작성
·
16
·
수정됨
0
안녕하세요! 강의 재밌게 수강하고 있습니다.
몇가지 질문드립니다.
수업에서 astro project를 설치하고 로컬 호스트가 아닌 scheduler 컨테이너에 접속하여 직접 dags 파일들을 수정한 이유가 있을까요?
제가 이해하기로는 로컬 호스트에서 dags, include, plugins 디렉토리는 각 컨테이너에 공유되기 때문에 로컬 호스트에 있는 코드를 수정하면 될 것 같은데, scheduler의 컨테이너에 직접 접속하여 수정한 이유가 궁금합니다.
또한, 실무에서 airflow dev 환경에서 빠르게 테스트하기 위해 컨테이너에 직접 접속하여 코드 수정 및 확인 하는 케이스가 있으신지도 궁금합니다!현재 업무에서 일부 airflow를 직접 구성해서 사용하고 있는데, 로컬에서의 테스트가 불가능(Hive 연동 등으로 인하여)하여 항상 dev 환경에 배포 후 결과를 확인하고 있습니다.
강사님께서는 airflow를 운영 및 개발 하시면서 로컬에서 테스트할 수 있는 환경(astro 등)을 구성하여 사용하고 계시는지도 궁금합니다.
답변 1
0
안녕하십니까,
잘 듣고 계시다니 저도 기분이 좋군요. 현재 실습 환경인 Container 환경을 기반으로 답변 드리겠습니다.
수업에서 astro project를 설치하고 로컬 호스트가 아닌 scheduler 컨테이너에 접속하여 직접 dags 파일들을 수정한 이유가 있을까요?
=> 잘 알고 계시다시피, 로컬 호스트(개인 PC)에서도 공유 volume/folder 구성을 통해 각 container 들이 파일 공유를 할 수 있습니다. 하지만 VSCode에서 로컬 호스트의 해당 공유 폴더에 DAG python 파일을 효율적으로 작성하려면 로컬 호스트의 별도의 파이썬 가상환경에서 airflow에서 사용된 동일한 버전의 python 인터프리터, 3rd Party 모듈, Provider 모듈등을 설치해 줘야만 합니다. 그래야 VSCode에서 제대로 된 module import, 코드 분석등의 작업을 할 수가 있습니다.
예를 들어 from airflow.sdk import DAG 를 하게 되면 로컬 호스트에서 필요한 모든 모듈을 설치하지 않는 이상, VSCode는 해당 구문을 오류로 표시하게 됩니다. 물론 로컬 호스트의 가상 환경에 현재 airflow container에 있는 python 환경과 동일하게 구성을 해주면 되지만, provider module이나 3rd party module 이 추가 될 때마다 이런 작업은 번거롭고, 중복 작업이 되기 때문에 scheduler container에 바로 vscode로 접속해서 작업을 수행합니다.
또한, 실무에서 airflow dev 환경에서 빠르게 테스트하기 위해 컨테이너에 직접 접속하여 코드 수정 및 확인 하는 케이스가 있으신지도 궁금합니다!
=> dev 환경을 컨테이너로 구성하셨으면 컨테이너에 직접 접속하여 작업을 하시는게 더 좋습니다. 그리고 그렇게 많이들 사용합니다 ^^
강사님께서는 airflow를 운영 및 개발 하시면서 로컬에서 테스트할 수 있는 환경(astro 등)을 구성하여 사용하고 계시는지도 궁금합니다.
=> 회사 보안 차원에서 아예 로컬 PC에서 Hive가 있는 Dev 서버의 접속 port 연결을 막았다면 모르겠지만, 그게 아닌 경우라면 로컬 PC Airflow에서 Dev Hive 로 충분히 연동이 가능해 보입니다. Hive 연동을 위한 Connection 만 로컬 PC Airflow에서 만들어 주면 Dev에 있는 Hive로 연동해서 테스트 하실 수 있습니다(이걸 모르셔서 질문하셨을 것 같지는 않습니다만, 원하시는 답변이 아니면 다시 글 부탁드립니다 ^^)
Dev 환경을 잘 구성해 놓은 회사일 수록(특히나 대규모의 인력을 보유한 회사), 로컬 PC에서의 개발을 완료하더라도 최종 모듈 정합성등의 테스트를 위해서 Dev 환경에서의 테스트를 필수로 요구하는 경향이 있습니다. 크게 불편함이 없다면 회사 정책대로 따라가시면 어떨까 싶습니다.
그리고 회사마다 차이는 있을 수 있는데, 요즘은 로컬/dev에서 airflow를 Container 기반으로 구성해서 많이 사용하는 것 같습니다. Astro를 사용하면 Container 구성을 편하게 할 수 있어서 더 좋은 것 같습니다. 다만 astro를 많이 사용하는지 까지는 잘 모르겠습니다.
감사합니다.





