Search

데이터 엔지니어 3개월 온보딩 회고

이직 후 어느덧 3개월이 지나 수습 기간이 끝났다.
새로운 도메인과 조직문화에 적응하고 여러 프로젝트를 진행하면서 정말 많은 것을 배웠다. 신입사원의 3개월과 경력사원의 3개월은 밀도가 많이 다른 것 같다.
이번 글에서는 3개월간의 온보딩 경험과 느낀 것들을 적어보려한다.

조직 문화

협업 경험
플랫폼 팀의 데일리 미팅, 2주 단위 스프린트 사이클, 주간 백엔드/전체 개발팀 미팅 등 정해진 확고한 루틴
Jira 기반 티켓관리
티켓번호로 브랜치 생성해 Jira와 자동연동
스토리 포인트, 설명 작성 등 티켓관리도 잘해야함
bi팀이 따로 존재해 데이터 소비자층이 명확하게 있어 장점이지만, 개발본부 외부에 존재해 약간의 사일로 있음
일하는 방식
권한 관리
AWS 권한이 모든게 열려있던 전 직장과 달리, 지금은 요청과 승인을 통해 권한 부여
확실히 안정성이 확보되지만 급하게 업무할때는 자꾸만 발목을 잡아서 조금 답답하기도
회의 문화
백엔드 챕터 회의때 다른 팀의 진행 상황을 공유하고 기술적인 토론을 나눌 수 있음
중요한 결정을 해야할때 혼자서 하는게 아니고 공유를 통해 이루어짐
재택 근무
너무 좋다
재택 근무가 잘 워킹할까? 라는 생각이 있는 편이었는데 막상 해보니까 출퇴근만 안겪어도 삶의 질이 이렇게 올라갈 수 있구나 싶다
일이 많으면 어차피 집에서도 열심히 일할 수 밖에 없다..
전직장은 수평적이고 결정권이 항상 애매한 느낌이 있었는데, 여기는 보다 수직적에 체계적인 것을 추구한다. 이전에는 책임소재가 명확치 않아 일할때 어려움을 겪었는데 이젠 오히려 너무 틀이 있어서 답답하고 느리다는 느낌이 드는게, 역시 뭐든 장점이 있으면 단점이 있기 마련이다.

기술적 적응

새로 경험한 기술/툴
Flink, S3 Sink Connector
Confluent Flink PoC에 참여하게 되면서 사용
기존 Confluent Kafka 사용하고 있었고 KsqlDB 사용해본 경험으로 덜 헤맬 수 있었음
Terraform & ECS
쿠버네티스(+ArgoCD)만 쓰다가 ECS 처음 사용
쿠버네티스 자체가 선언적으로 리소스 관리하는애고 ArgoCD로 변경된 이미지 태그 배포하는 형태였는데, 여기는 테라폼으로 ECS 및 인프라 관리하고 github action으로 ECS task definition에 새 이미지태그 넣어서 배포 자동화
OpenSearch & grafana
전 직장에 제일 미비했던게 로그나 모니터링 시스템이라고 생각. 보통 직접 pod 들어가서 로그 확인하거나 데이터독으로 보는사람만 지표 확인했음
지금은 오픈서치로 로그를 저장하고, 키바나 대시보드를 통해 서비스 로그 분석할 수 있어 로그 확인이 매우 용이
디버깅을 위해 로그를 잘 구조화해서 저장하는게 중요한것을 알게됨
그라파나에도 웬만한 인프라가 다 연결되어있어서 서비스마다 여러 지표 확인 가능
S3 + Athena 데이터 플랫폼 with 메달리온 아키텍처
단일 데이터 웨어하우스와 RDB 위주로 사용했던 전과 달리 파일 스토리지에 Parquet 파일 위주의 데이터 파이프라인이 거의 대부분
Bronze, Silver, Gold 계층을 구분해 운영하며, 데이터 플랫폼으로 각 수집/변환/저장 계층을 느슨하게 유지하는 것이 훨씬 확장성 있다고 느낌
MWAA + EMR
관리형 에어플로우 사용하는데 비용이 비싸 헤비한 작업은 EMR Spark job으로 처리
쿠버네티스 인프라 마련하고 에어플로우도 옮기는 것이 장기 목표로 이전에 헬름차트로 운영했던 경험이 도움이 되지 않을까 생각중
태블로
bi팀이 주로 사용, 기능이 많고 엄청 복잡해서 알아도 알아도 끝이 없다
모니터링
모니터링과 가시화가 잘되어있다고 느꼈는데, 기본적으로 주요 지표들을 슬랙으로 선알람 조치가 기본(서버 CPU&Memory 등 리소스, 슬로우 쿼리 등)
데이터팀은 에어플로우를 사용해 인프라 리소스 사용량 체크, 태블로 흐름 실패 알람, DMS 정합성 알람, 아테나 쿼리 통계량 같은것을 주기적으로 계산하고 슬랙 전송
문제를 빠르게 인지하고 조치를 취할 수 있으나 모든게 가시화되서 노티가 되기 때문에 살짝 부담스러울때도 있다..
서드파티 데이터 소스
커머스 도메인답게 다양한 서드파티에서 데이터를 수집한다.
Amplitude: 고객 행동 데이터
Airbridge: 광고 퍼널 분석
Braze: Push 메시지
Citrus: 광고 이벤트 (클릭, 노출, 구매여부 등)
다양한 서드파티에서 데이터를 수집해야 하는데 데이터 제공 방식이 전부 다르다보니 공식문서 파악하는 능력치가 상승했다. GPT도 최신 업데이트나 세부 내용을 보장하지 못해 공식문서를 꼼꼼히 읽지 않으면 데이터 수집이 어렵다. GPT 할루시네이션을 제일 많이 겪은게 이쪽이다.

성과

Kafka Event Pipeline 구축
CDC Log 적재와 광고 이벤트 내재화를 위해 카프카 토픽을 소비하는 새로운 파이프라인을 개발
기존의 배치 뿐이던 데이터 파이프라인 보완
광고 내재화가 꽤 중요하게 생각하는 프로젝트인데 이 부분에 기여할 수 있어서 뿌듯한 작업물
스키마 레지스트리 도입
카프카 파이프라인 작업을 하면서 겪은 스키마 불일치 문제 때문에 소비자 쪽에만 적용
코드에서 DTO로만 관리하면 코드 외부에서는 또 다시 데이터 타입을 따로 정의해줘야했는데, 중앙에서 스키마를 관리 할 수 있게 됨
Flink PoC: 스트리밍 처리 가능성을 탐색하고 PoC 결과 발표 진행 - 비용 때문에 Confluent 이전은 채택 되지 않았음..
DataHub 버전 업데이트 및 Airflow 연동
최신 SDK로 업그레이드하면서 트러블슈팅을 경험했고, OpenLineage 플러그인을 연동해 파이프라인 메타데이터를 시각화할 수 있게됨
수습 기간이지만 생각보다 많은 부분에서 실질적인 기여를 할 수 있었다. (적고 보니까 꽤 많은것 같기도?)

데이터팀의 역할 비교

전 직장과 비교했을 때 데이터팀의 역할 범위가 크게 달랐다.
이전 회사
에듀테크 도메인으로 학생이 생성하는 학습데이터를 주로 다룸
서비스 제공을 위한 api 개발, AI something 작업(챗봇 등)
데이터 분석가가 없어 종종 분석 업무나 새로운 피쳐의 기획부터 참여하는 등 매우 넓은 업무 범위
리소스 최적화보다는 새로운 피쳐 개발 + 속도 위주
현 회사
bi팀 존재 데이터팀은 엔지니어링에만 좀 더 집중
속도보다 리소스 낭비 최대한 없게 최적화 신경 써야함
내부 생성 데이터 뿐아니라 다양한 서드파티와 시스템을 연결해 데이터를 안정적으로 제공하는 것이 핵심 역할

마치며

새로운 문화와 기술을 접하며 기존에 몰랐던 것들을 엄청나게 단기간에 흡수하며 성장한 기분이다. 이직전에 새로운 문화를 경험해보고 싶다는 생각이 정말 컸는데 많이 충족이 되었다. 어느정도 주도적으로 업무를 할 수 있는 환경이어서 짧은 시간이지만 이것저것 기여 할 수 있었다. 하지만 아직 개선해야 할 것도 많이 있으니, 올해 남은 기간 동안 도메인을 더 깊게 파악하고 성과를 내야겠다.