데이터 엔지니어링 스타터 키트 - 7주차
어느새 마지막 주차가 되었다. 이번 주차에서는 Airflow를 운영하는 관점에서 필요할만한 개념들과 함께 이 스터디 이후에 무엇을 공부하면 좋을지와 앞으로 데이터 엔지니어의 커리어와 관련한 이야기를 해주셨다. 오늘은 전반적인 내용에 대해 간략하게 정리하는 느낌으로 포스팅을 해보겠다.
운영을 위한 Airflow Configuration
- Metadata 관리를 위한 Database는 Splite보다 MySQL 또는 PostgreSQL을 추천
- Default로 설정되는 Sqlite를 사용하게 되면 여러 DAG 또는 Task가 동시에 실행될 때 동시접속하기가 어려운 등의 여러 이슈가 있기 때문에 운영환경에서는 MySQL 또는 PostgreSQL을 사용할 것을 추천
- sql_alchemy_conn 옵션에서 변경
- LocalExecutor 사용
- Single Server일 경우 SequentialExecutor가 아닌 LocalExecutor로 변경하여 사용할 것을 권장
- Cluster로 사용할 경우에는 CeleryExecutor나 KubernetesExecutor를 사용할 것을 권장하나 On-prem보다 클라우드에서 제공하는 서비스를 사용하는 것이 더 좋을 수 있음
Slack 연동하기
- 데이터 파이프라인에 이슈가 생길 경우 해당 문제를 슬랙에 표시할 수 있음
- https://api.slack.com/messaging/webhooks
- 위 URL의 설명을 따라해서 Incoming Webhooks App을 생성
- 맥스님이 별도로 개발하신 모듈을 참고하여 DAG 인스턴스를 만들 때 에러 콜백으로 지정
dag_second_assignment = DAG(
dag_id = 'second_assignment_v4',
start_date = datetime(2022,5,12), # 날짜가 미래인 경우 실행이 안됨
schedule_interval = '0 2 * * *', # 적당히 조절
max_active_runs = 1,
catchup = False,
default_args = {
'retries': 1,
'retry_delay': timedelta(minutes=3),
'on_failure_callback': slack.on_failure_callback,
}
)
API & Airflow 모니터링
- https://airflow.apache.org/docs/apache-airflow/stable/security/api.html
- 위 URL을 참고하여 airflow.cfg의 api 섹션에서 auth_backend의 값을 변경
- airflow 스케줄러 재실행
- basic_auth의 ID/Password 설정
- Airflow Web UI에서 새로운 사용자 추가
- /health APi 호출
- curl -X GET --user "Monitor:MonitorUser1" http://[AirflowServer]:8080/health
- 특정 DAG를 API로 Trigger 하거나, 모든 DAG 리스트 가져오거나 모든 Variable 리스트를 가져오거나 Import 하는 등의 작업을 할 수 있음
그 밖의 기능
- Google Spreadsheet 연동하기
- Airflow 로그 파일 삭제하기
- 실제로 Scheduler 로그가 많이 쌓여서 주기적으로 삭제하는 DAG를 만들거나 백업하는 것이 중요
- Airflow 메타데이터 백업
- 메타데이터를 저장하는 데이터베이스가 Airflow와 같은 서버에 있다면 DAG 등을 이용해 주기적으로 백업을 실행할 필요가 있음
- Airflow CI/CD
- Git Pull DAG를 만들고 필요할 때마다 실행
- Github Actions 사용
- Dag Dependencies
- 앞의 DAG가 실행 후 TriggerDagOperator를 사용해 뒤의 DAG를 실행시킬 수 있음
- 또는 뒤의 DAG가 ExternalTaskSensor 를 사용해 앞의 DAG를 계속 모니터링하여 앞의 DAG가 실행한 후 뒤의 DAG가 실행되도록 할 수 있음
스터디 이후 Next Step
- 이번 스터디에서는 Data Warehouse를 기반으로 데이터 인프라를 만드는 것을 다룸
- Data Analyst와 협업하는 방법에 집중 (Summary Table & Dashboard)
- 이후 과정에서는 Data Scientist와 어떻게 협업할지에 대해 배우는 것이 필요
7주차 소감
하필 일이 바빠지는 시기였기에 원하는 만큼 복습과 과제를 수행하지는 못했지만 프로젝트를 수행하며 SQL과 Airflow를 사용하기에 스터디에서 배운 내용을 나름대로 바로바로 적용할 수 있어서 그런 측면에서는 매우 유익한 스터디였다. 한편으로는 이 스터디를 안했으면 많이 헤맸을것 같다는 아찔한 생각도 들었다.
기술적으로 Data Warehouse를 만들기 위한 SQL, Airflow와 함께 여러 관련 개념들을 정리할 수 있어서 좋았다. 그리고 현재 데이터 엔지니어로 일을 하고 있는데 사실 직무에 대한 정리가 잘 되지 않은 채로 일하고 있었다. 이번 과정을 통해 데이터 엔지니어가 무엇인지에 대해 정리해 볼 수 있었고, 기술적인 것 뿐만 아니라 커리어적으로도 여러 정리를 잘 해주셔서 앞으로의 커리어에 도움이 많이 될것 같다.
참고자료
댓글 영역