데이터 엔지니어의 시각: 정답이 없는 문제를 다루는 법
·
Data Engineer
본 글은 초안 작성 후 Claude를 통해 정리되었음을 밝힙니다. *데이터 엔지니어의 시각: "정답이 없는 문제"를 다루는 법데이터 엔지니어링을 하다 보면 자꾸 "정답이 없는 질문"들과 마주치게 됩니다. 스키마를 어떻게 짜야 할지, 데이터를 어떻게 나눠 처리할지, 언제 스케일 업을 하고 언제 스케일 아웃을 해야 할지... 이런 질문들에는 교과서적인 정답이 없고, 대신 "어떤 맥락에서 무엇을 하려는가"에 따라 답이 달라집니다. 최근 고민했던 주제들을 정리해봤습니다. 1. 스키마 설계에 정답은 없다 — 목적이 답을 결정한다배송 주소를 저장한다고 해봅시다. 이건 어떤 타입으로 저장해야 할까요?사실 알 수 없습니다. 가장 손쉬운 방법은 string, 즉 비정형 데이터로 저장하는 것입니다. 하지만 이렇게 하면 사..
AWS Basic / Terraform & Ansible / Lambda, EKS
·
AWS
본 자료는 2025년 11월 AWS 관련 3일간 교육받았던 내용을 정리한 것이며,노션에 정리된 자료를 옮겼음을 알려드립니다.Day 1AWS BasicAWS 소개IaaS , PaaS, SaaSInfra / Platfrom / Software as a Service각각 접근 가능한 범위가 다름. os / Data, application / data 일부클라우드의 장점 : 비용 절감 / 확장성 및 유연성 / 고가용성(HA) 및 신뢰성onPremise Cloud란..? 가상화 도구를 활용해서 Cloud 환경을 활용 ↔ public cloudAWS 주요 서비스컴퓨팅 서비스 : EC2, Lambda스토리지 서비스 : S3, EBS데이터베이스 서비스 : RDS, DynomaDB네트워킹 서비스 : VPC, CloudF..
[회고] 1년 2개월간의 정규직 생활
·
회고
어느덧 퇴사한지 3달이 지난 시점에..오늘은 2025.02.01 ~ 2026.03.31 까지 근무한 경험에 대해 회고록을 작성해볼까 한다.. 2025년은 내 인생에서 가장 바빴던 년도라고 생각한다.학교 4학년 (정규학기)와 정규직 근무를 동시에 했으니,, 정말 바빴다 ㅠㅠ 3학년때 인턴을 하던 시절 주변 선배들의 권유로 인해 몇몇 기업들에 서류를 쓰던 와중..운 좋게 SK계열사 한곳에 합격하게 되었었다..!당시 인턴을 하며 직무의 방향성이나 앞으로의 취준에 대해서도 기대하고 있었던 바가 크기에, 4학년을 온전히 집중할지 아니면 병행할지에 대해 고민이 컸다. (이전에 학점을 많이 취득해두었기에, 병행이 가능한 상황이었다.) 원하던 직무 방향성과 조금 달랐고, 또 해당 기업의 개발 문화나 조직에 대해 알고 ..
[광고 플랫폼 Lake House 만들기] 최종 개인 프로젝트 - Tickberg
·
Data Engineer
지금까지 우리는 광고 플랫폼 Lake House를 만들어 보았다. 이 과정속에서 학습한 것들을 바탕으로 개인 프로젝트인 Tickberg를 진행하고, 발표했다.발표 내용부터 피드백과 전체 과정 속 내가 느낀 점들까지 작성하며, 이 시리즈(?)를 마무리하고자 한다. Tickberg 우선 Tickberg라는 이름은 tick + berg로"tick"은 주식 시장에서 체결된 거래 1건을 의미하며 이에 Iceberg의 "berg"를 붙여 만들어 보았다. ㅎㅎ이름에서 알 수 있듯, 본 프로젝트의 목표는 한국 주식 실시간 체결 데이터를 Iceberg를 활용해 적재하는 것이었다. 또한, 짧은 기간에 진행되어야 했기에 AI를 적극 활용해 개발한 내 첫 개인 프로젝트 이기도 하다.! 개발간 주안점은 다음과 같다.운영 가시성..
[광고 플랫폼 Lake House 만들기] 7. 자동화 & BI 파이프라인
·
Data Engineer
우리가 지금까지 만들어온 파이프라인은 위와 같다.이를 운영하기 위해..이전 블로그 포스팅에서 이야기한 maintenance 묶음(compact + rewrite-position-deletes+expire)을 자동화 해보자..! Airflow 자동화우리는 Airflow를 활용할 것인데, 왜 airflow인지 먼저 생각해보도록 하자. 배치 주기로 돌려야 하는 작업들이 여러가지고, 작업간 의존성이 있는데 이게 시각적으로 잘 표현되게 해준다.추가로, task가 실패했을때 운영 가시성이 좋다. (어디서 잘못되었는지 한눈에 보임)cron에서는 의존성/재시도/관찰과 같은 부분이 떨어짐. 지금 우리가 자동화해야 할 작업들에 어떤 것들이 있고, 주기/의존성에 대해 알아보자.작업주기의존성raw -> processed ME..
[광고 플랫폼 Lake House 만들기] 6. Compaction과 테이블 관리 전략
·
Data Engineer
이전 글에서 다룬 snapshot 이나 history에 대한 정리를 하더라도, 해결되지 않는 문제가 있다..그것은 바로 Small Files 문제이다. 이게 무엇이고, 어떻게 해결할 수 있는지 알아보자. Small Files 문제만약 meta data > 실제 data 인 상황이라면 이는 분명히 잘못된 상황일 것이다.실제 raw가 들어있는 parquet 파일들을 대상으로 manifest files/list, meta data가 존재할텐데,데이터가 압도적으로 크고 메타 데이터가 얇은 인덱스 층으로 존재하는것이 올바른 상황이다.그러나 만약 데이터 파일이 아주 작은 파일로 여러개 있다면 위와 같이 잘못된 상황이 충분히 발생할 수 있다.Iceberg 뿐만 아니라 hive를 사용하더라도 수십 MB단위의 크기는 되..
[광고 플랫폼 Lake House 만들기] 5. Snapshot 관리와 Time Travel
·
Data Engineer
Iceberg snapshot으로 Time Travel (Rollback)을 수행하고,누적된 metadata와 미참조 파일을 expire/orphan cleanup으로 정리해보자.Snapshot의 양면성우리는 snapshot을 저장하여 Time Travel/ Rollback이 가능해졌다.하지만, 당연히 이에 따라 따라오는 Trade-off가 있음을 잊으면 안된다.metadata와 미참조 파일이 지속적으로 누적되기에 이에 대한 관리가 필수적이다.우리는 snapshot을 어떻게 활용할지 , 그리고 어떻게 정리할지 고민해야 한다. Snapshot & History 탐색Snapshot 메타 테이블 살펴보기snapshot 메타 테이블을 보면 committed_at, snapshot_id, operation 칼럼등..
[코드트리] 북마크로 복습하기
·
algorithm
코드트리에서는 트레일 따라서 문제들을 풀다보면 문제들을 까먹는 경우가 있는데,나중에 다시 풀어보고자 할때 찾아보기 위해 북마크 기능을 제공한다. 이전에 백준에서 문제집 기능이 있던것처럼 북마크 내에서도 폴더를 만들 수 있는데, 폴더를 구분해서 원하는 문제들을 저장해두는건 참 좋은것 같다. 이처럼 문제를 푸는 와중에도 바로 폴더를 만들고 문제를 저장할 수 있다. 각 기업별로 나오는 문제 유형이 다르기 때문에기업별로 문제 set를 구성해서 풀어보거나, 혹은 자신이 약한 카테고리의 문제들을 모아서 풀어볼 수 있을 것이다. 내가 북마크에 등록해두었던 몇몇 문제들을 한번 살펴보도록 하자. 기울어진 직사각형n = int(input())grid = [list(map(int, input().split())) f..
[코딩테스트 독학] 깃허브 연동 후 코드트리로 잔디 심기 루틴
·
algorithm
코드트리에서 문제 풀이를 진행하며, 카톡 알림톡이 오기 시작했다.사실 처음에는 귀찮다 느껴질때도 있었지만, 바쁜 일상속 잊지 않고 문제풀이를 하게 되는 습관을 만들게 되었다. PS는 꾸준히 하는게 좋지만 가끔식 우선순위가 밀려 잊혀질 때가 있는데,알림톡과 깃허브 연동을 통한 잔디 심기를 통해 동기부여가 더 되는 것 같다. 과거에는 원래 날짜별로 기록이 남기에 코드를 다시 살펴보기 어려웠다. 그러나 최근에는 우측과 같이 trail별 폴더 내에서 문제별로 바로 확인할 수 있게 저장이 되기에내 코드를 다시 읽고 싶을때 편하게 찾아갈 수 있게 되었다. 여기까지..! 코드트리의 알림톡/깃헙 연동등을 통한 습관 만들기 내용이었다.이제 이번주에 문제를 풀며 공부한것들을 기록해보자. 백트래킹이전에 내 약심으로..
[코드트리] BFS 알고리즘 약점 극복 학습 후기
·
algorithm
이전에 코드트리에서 gap check를 했을 때, bactracking과 bfs 부분이 나왔었다.오늘은 bfs 문제들을 풀어본 경험을 말해보고자 한다. 우선 코드트리에서는 기본적으로 해당 이론에 대한 설명을 먼저 보여준다. 이렇게 이론을 한 번 읽고 예제 문제부터 연습 문제, 심화문제까지 난이도별로 문제를 풀어볼 수 있어 좋다. 오늘 총 4문제를 풀었는데, 그 중 2문제에 대해서만 다루어 보도록 하겠다. K번 최대값으로 이동하기import sysinput = sys.stdin.readlinen, k = map(int, input().split())grid = [list(map(int, input().split())) for _ in range(n)]st_r, st_c = map(int, input()..