마침내 apache-airflow==3.1.1 버전이 릴리즈 됐다. https://github.com/apache/airflow/releases/tag/3.1.1 3.0 출시됐을 때는 웨비나 정도만 참석했다가 나름 안정화 버전으로 3.1.1 정도 출시되면 슬슬 업그레이드 준비해 보겠다고 팀원들한테 얘기해 뒀었는데 벌써 반년이 넘게 지났다. https://www.astronomer.io/events/webinars/introducing-apache-airflow-3-0-video/ 마침 dag-factory 1.0 도 픽스가 더해져서 잘 된 듯 https://github.com/astronomer/dag-factory/releases/tag/v1.0.1 그간의 upgrade-path 를 돌아보면 1.8.2 -> 1.10.15 -> 2.4.2 -> 2.10.3 이 정도인 것 같은데 […]
data mesh
이제와서 뒷북인가 싶지만 최근 생존의 문제로 데이터 메시에 크게 관심이 생겼다. 다음 아티클들이 데이터 메시의 개념적 토대가 되는 전설의(?) 포스팅인 것 같고 https://martinfowler.com/articles/data-mesh-principles.html https://martinfowler.com/articles/data-monolith-to-mesh.html 아무래도 저자의 소속이다보니 이 패러다임을 지지하는 포스팅이 thoughtworks 에 많이 있는 것 같다. https://www.thoughtworks.com/insights/blog/data-mesh-its-not-about-tech-its-about-ownership-and-communication https://www.thoughtworks.com/insights/blog/data-engineering/data-mesh-at-glovo https://www.thoughtworks.com/insights/blog/data-engineering/data-mesh-its-not-just-about-tech-its-about-ownership-and-communication2
Iceberg 맛보기
회사에서 아이스버그를 드디어 도입하게 된다고 해서 찾아보던 중 나름 최신의 리뷰 논문이 있어서 봤는데 내용이 괜찮은 것 같다. Disruptor in Data Engineering – Comprehensive Review of Apache Iceberg "테이블 포맷"인 아이스버그의 본격 설명에 앞서 Open File Format, Open Table Format, Data Warehouse/Data Lake/Lakehouse 와 같이 배경이 되는 용어들도 한번 짚어주고 시작하는데 Catalog, Metadata, Snapshot 세 […]
One Big Table vs. Kimball vs. Relational
스타 스키마와 One Big Table 사례 찾아서 공부해보려고 스크랩만 해두고 한참 미뤄뒀었는데 마침 좋은 영상이 유투브 알고리즘으로 찾아왔다. https://youtu.be/ltQgbSs99WU Data with Zach 라는 처음 보는 채널인데 한때 Airbnb, Facebook에서 일했고 지금은 dataexpert.io 라는 온라인 코스 운영자인 네임드 데이터 엔지니어인 듯하다. https://github.com/eczachly General Enterprise Data System Architecture 아무튼 이 영상에서는 다음과 같은 데이터 레이크 기반 데이터 […]
Star Schema vs. One Big Table (OBT)
DW 데이터 모델로 유서깊은(?) 두 가지에 관련한 레딧 스레드가 있어서 스크랩 How would you choose between star schema vs one big table (OBT) data models for big data reporting without explicit enterprise data warehouse requirements? 상황에 따라, 개인에 따라 선호되는 방식이 있는 것 같은데 기회가 되면 정리해봐야겠다.
[VSCode] Remote Container 에서 파이썬 디버깅하기 (feat. Airflow)
최근에 팀 airflow 프로젝트를 컨테이너 기반으로 전환하면서 런타임에 디버깅하는 환경을 별도로 구축했어야했는데 Remote – containers 플러그인을 이용하면 운영환경에서 크게 변경없이 디버깅할 수 있어서 사용방법을 간단히 정리해본다. 이 확장을 이용하면 디버깅 용으로 별도 로컬 환경을 구축하지 않아도 컨테이너로 관리하는 서비스들을 운영 이미지 그대로 디버깅할 수 있는데, 아직 preview 버전이긴 하지만 사내에서 사용하고 있는 airflow 이미지 기준으로 […]
Airflow 2.x HA 구성 (3 node docker 환경)
airflow 2.0 에서 공식적(?)으로 HA 를 지원한다. 1.x 버전에서는 scheduler 프로세스를 동시에 여러개 구동하면 작업이 중복 실행될 수 있는 위험이 있었서 무조건 single 로 운영해야했고 이 때문에 가용성을 보장할 수 없었는데 2.x 에서부터는 row-level locking 을 이용해서 multiple scheduler 이용이 가능하도록 개선이 됐다. (대신 SKIP LOCKED 또는 NOWAIT 구문을 지원하는 mysql8.0 이상을 써야하는 제약조건이 있다.) […]
[Airflow] execution_date 이해하기
Airflow DAG는 Jinja Macro 로 구현돼 있는, 사전 정의된 값들을 가져다가 사용함으로써 좀 더 다이나믹하게 구현할 수 있다. Airflow Macros reference 그 중에서도 execution_date 를 가장 자주 사용하게 되는데 이 매크로는 DagRun, TaskInstance 가 instantiated 될 때 값이 정해지면서 특정 인스턴스에 정해진 날짜 값을 갖게 해주기 때문에 추후 재작업 등을 하는데 용이하게 쓰인다. 그런데 이 […]
[Airflow] RBAC
RBAC; Role-Based Access Control 참고: https://airflow.apache.org/docs/stable/security.html#rbac-ui-security Airflow 1.10.9 버전 이후 Web UI가 Flask-Admin에서 Flask-Appbuilder 기반으로 변경되면서 RBAC를 활성화할 수 있다. 다음과 같이 다섯개의 Role 이 정의돼 있고 이 외에도 커스텀 롤을 생성할 수 있다. Admin Op User Viewer Public 각 Role들은 아래와 같은 형태의 권한들의 집합인데 세부 권한들은 다음과 같은 형태로 정의 돼 있어서 […]
[Airflow] 1.10.10 싱글 설치
rbac 기능을 이용하면 DAG-level Access Control 이 가능하다고 한다. 새롭게 추가된 tag 기능에 더해져서 tag-level 권한 관리도 됐으면 좋았겠지만.. rbac 기능을 이용하면 기본적 제공되는 롤 뿐만 아니라 Customized role 을 통해 가능해질 사용자 권한 관리를 기대하며 최신 1.10.10 버전을 설치해본다. 기존에 LDAP 연동해서 사용하던 Airflow 시스템을 업그레이드 해서 사용할 수 있을지 확인해보기 위해 OpenLDAP 환경을 […]