반응형
반응형
📌 이 글의 핵심 요약 (Key Takeaways)매일 수억 건이 발생하는 대규모 데이터 파이프라인에서 단순 건수 체크를 넘어선 '다차원 로그 정합성 모니터링 시스템(Airflow + Databricks + MySQL + Teams)'을 구축한 실무 사례입니다. 본 글에서는 특정 로그 타입 및 국가별 유실을 감지하는 세분화된 집계 로직, 알림 피로도(False Positive)를 줄이기 위한 임계치 설정 노하우, 그리고 대용량 집계 시 발생하는 비용 최적화(Cost Optimization) 전략을 집중적으로 다룹니다. 안녕하세요. 주형권입니다.최근 방대한 로그들이 여기저기에서 들어오다 보니 로그가 정상적으로 들어오는지에 대해서 고민을 많이 하게 되었습니다. 그래서 데이터 엔지니어들의 영원한 숙제인 정..
📌 이 글의 핵심 요약무슨 문제인가: 기존 팀 단위의 단편적인 모니터링 방식으로는 본부 전체 사용자가 무작위로 생성하는 수많은 Databricks 워크플로우의 성공/실패/지연 상태를 체계적으로 관리하고 대응하기 어려웠음.어떻게 해결했나: Databricks Job/Task API를 주기적으로 호출하는 자동 탐지 백엔드를 개발하고, 메타데이터 저장을 위한 RDS 구축 및 비공개 Teams 채널 연동을 아우르는 전사적 워크플로우 관측 가능성(Observability) 알림 아키텍처를 수립함.무슨 효과를 얻었나: 본부 내 누구나 워크플로우를 생성해도 별도 설정 없이 실시간 장애 알림이 자동 적용(바이브코딩 배려)되었으며, 단순 감지를 넘어 장애 원인을 신속히 진단할 수 있는 데이터 신뢰성(DRE) 기반을 마..
안녕하세요. 오랜만에 Databricks 관련 글을 올립니다. 오랜만에 쓰는 글인데 심화적인 글은 아니고 간단한 API를 이용한 내용입니다. Databricks에서는 AWS나 GCP 같은 플랫폼에서와 같이 Key 형태의 Token을 제공합니다. Token을 이용해서 여러 가지 Databricks의 모니터링을 할 때 Token을 이용해서 코드에 삽입하여 사용합니다. 제가 만든 수많은 모니터링 시스템에서 필요한 것이 Databricks의 Token입니다. 모니터링을 하려면 AWS에서는 Access key 가 필요하고 GCP에서는 key file이 필요하듯이 여기서도 Token이라는 것이 존재 합니다. Authenticate with Databricks personal access tokens (legacy..
안녕하세요. 주형권입니다.정말 오랜만에 글을 쓰는 거 같습니다. 요즘 내/외부적으로 바쁘게 살고 있어서 글을 쓸 시간이 없습니다... 그래서 한 달에 1개 업로드하기도 어렵습니다.🥺 들어가며 Databricks를 이용해서 데이터환경을 구축하고 이를 기반으로 수많은 유저들에게 오픈하여 사용하다보면 어쩔 수 없이 비용이 많이 나오게 됩니다. Databricks도 결국 사용하는 만큼 비용을 지불하기 때문에 그만큼 오래 수행이 된다면 비용을 많이 지불하게 됩니다. (AWS EC2 비용은 별도다.😥) 어쩔 수 없이 기간을 오래 잡아서 데이터를 집계하거나 어쩔 수 없이 큰 데이터를 조회하는 경우는 어쩔 수 없지만 비전공자나 데이터를 잘 사용해 본 적이 없는 사용자의 경우 파티션이나 리퀴드 클러스터링 등 사용을 ..
안녕하세요. 계속해서 회사에서 Databricks를 하다 보니 자연스럽게 Databricks에 관련된 글을 많이 쓰고 있습니다. 이외에도 다른 공부(spark 등)도 하고 있지만 본업이 우선이기에 Databricks 쪽으로 제일 많이 집중하고 있습니다. 제가 어느덧 Databricks를 접한 지 10개월이 넘어가는 시점에서 회사에 와서 처음 시작해 보는 Databricks 플랫폼 환경에서 무엇을 하였는지에 대해서 회고 겸 정리 겸 글을 작성하였습니다. 이 글은 타 회사와 환경과 비용적 측면에서 다를 수 있으므로 참고 차원에서 보시길 권해 드립니다. 제가 작성한 글이 무조건 정답은 아니며, 회사의 상황에 맞게 적용이 필요합니다. 그렇기에 꼭 본인의 회사에 적용을 하실때 환경과 상황에 맞게 각자의 판단에 ..
안녕하세요. 주형권입니다.Databricks에서는 다양한 테이블을 만들 수 있습니다. 외부(external) 테이블도 그중 한 가지입니다. 외부 테이블은 csv / json / parquet 등의 데이터를 그대로 Databricks에서 볼 수 있도록 만들어 줍니다. 그래서 Delta로 만드는 수고를 덜어줘서 굉장히 많이 쓰이는 기술입니다. ⚠️ 무엇이 문제였는가?Databricks에서 외부 테이블을 만들때 하위의 모든 폴더를 포함해서 하나의 테이블로 만들고자 할 때는 잘 안됩니다. 특정 폴더 안에 모든 파일이 있으면 모르겠지만 YYYY/MM/DD와 같이 폴더가 년/월/일로 구분이 되어 있고 이 폴더를 모두 포함해서 하나의 테이블로 만들려고 하면 정상적으로 되지 않습니다. CREATE TABLE san..
안녕하세요. 데이터엔지니어 주형권입니다.어느덧 Databricks를 맡고 운영한 지 5개월 정도가 흘렀습니다. 초반에 데이터 아키텍처와 정책을 잡고 서서히 물리적인 데이터를 운영 함에 있어서 꼭 알아야 하는 개념이 무엇일까 하다가 2가지 내용이 있어서 공부 겸 찾아보고 개념을 정리하였습니다. 위의 2개의 작업은 Databricks를 운영 하면서 필수적인 내용이므로 꼭 해줘야 하는 작업으로 보입니다. 정확히는 Optimize에 z-Ordering이 포함(?)인 것으로 옵션입니다. 하지만 할 때 같이 해주는 게 성능에 큰 영향을 미치는 것으로 보입니다. 개념과 함께 실제로 실행했을 때 알아야 하는 내용에 대해서도 공유하고자 합니다. Databricks의 테이블과 데이터 파일 처리 원리Databricks에 ..
안녕하세요. 주형권입니다.제1부 - warming-up에 이어서 두 번째 이야기입니다. 두 번째 이야기는 데이터 환경을 구성하기 위해서 하는 준비 과정을 작성하였습니다. "생각보다 그냥 하면 되는 거 아니야?"라고 생각할 수 있지만 준비할 게 정말 많습니다. 저 같은 경우 사람들을 설득시키는 과정이 굉장히 힘들었고 인식을 바꾸는 과정이 가장 어려웠던 거 같습니다. 물론 사람의 입장의 차이가 모두 있고 팀의 사정이 저마다 다르기에 우리의 일을 모두 좋게 바라볼순 없습니다. 또한 여러 가지 이해관계가 엮여 있으므로 당연히 풀어야 하는 문제입니다. 무조건 우리 쪽의 입장만 들어주고 데이터를 만들어준다면 정말 편하겠지만 상대방의 입장과 상대방의 팀의 입장이 있고 변경하기 어려운 점이 분명히 존재하므로 여러 가..
안녕하세요. 주형권입니다. 최근에 범용적인 글을 많이 쓰고 있고 경험을 공유하는 글을 많이 작성하고 있는데요. 이런 글을 많이 쓰다 보니 기존에 했었던 노하우(?)를 공유해 달라는 요청이 몇 개 있어서 제가 전에 다녔던 G사에서 구성하였던 데이터 환경을 어떻게 구성하였는지 정리해 볼까 합니다. 이미 퇴사한 회사라서 회사명을 언급하진 않겠으나 G사면 어디인지 다들 아실 거라 생각합니다. 회사에서 팀장이였는데 데이터엔지니어링팀에 저 혼자였고 1인 팀장이었습니다... 그래서 혼자서 구축하였으니 제가 했던 게 전부라고 할 수 있겠네요. 아마도 이 글은 스타트업에 혼자서 데이터 환경을 어떻게 구성해야 할지 고민인 분들에게 많은 도움이 될 것으로 보입니다. 또한 이 글은 기존의 여러 가지 글을 짜깁기 하여 쓴 글..
안녕하세요. 주형권입니다. 지난번에 링크드인에서 이야기드렸듯이 과반의 득표를 얻어서 관련하여 글을 작성하였습니다. 이 글은 이제 막 시작하는 데이터엔지니어 또는 데이터엔지니어를 꿈꾸는 학생 또는 다른 직문의 사람에게 조금이나마 도움이 되고자 하여 작성하였으며, 저의 개인적인 견해와 생각이 많이 반영되어 있으므로 "꼭 이렇게 하세요." 라는 의도는 없으니 글을 읽을 때 참고 차원에서 읽어 주시기 바랍니다. 시작하며 시작하기에 앞서 이글을 왜 작성하였는지 설명을 드리려고 합니다. 제가 처음에 일을 시작할 때는 사수와 부사수라는 개념이 일반적이었습니다. 흔히 말하는 시니어와 주니어(신입)를 한 세트로 묶어서 사수가 부사수를 교육시켜주는 역할을 하였습니다. 요즘은 많은 회사가 사수와 부사수보다는 멘토(mento..
안녕하세요. 주형권입니다. AWS의 boto3를 이용하여 데이터 레이크 운영을 위한 개발을 하던 와중에 제목과 같은 에러를 발견하고 해결 방법에 대해서 정리 하였습니다. 우선 국내 블로그 및 외국 블로그에도 정확하게 나온 곳이 없어서 도움이 될 것 같아서 빠르게 글을 작성 하였습니다. 무엇을 하려고 하였는가? 저희는 AWS 환경에서 데이터레이크를 구축하고 있는 만큼 boto3를 정말 많이 씁니다. 그렇게 하다보니 boto3의 여러가지 기능에 대해서 많이 사용하고 있는데요. 그중에 CloudTrail에 관련하여 boto3를 통해서 데이터를 가져오려고 하였습니다. trail = boto3.client('cloudtrail') boto3에서 CloudTrail을 가져오는 방법이 여러가지가 있는데, 이중에 lo..