AWS ETL 파이프라인 만들기

나의 첫 프랑스 스타트업

by Su



1.png?type=w1


회사에서 AWS 기반 데이터 엔지니어링을 하는데 기본기를 다시 다지기 위해 Udacity 의 Data Engineering 나노디그리를 수강하고 있다. 지난주에는 2번째 프로젝트인 ETL 파이프라인 구성하기를 하였다. Udacity가 조금 비싸긴 해도 온라인 MOOC 플랫폼 중에서는 가히 최고라고 말할 수 있다. 이유는, 실제 현업과 매우 유사하게 프로젝트를 할 수 있도록 환경도 구성해주고, 테크 멘토가 Udacity Knowledge 포럼에 남긴 모든 질문들에 즉각즉각 구체적인 답변도 주기 때문이다.




1.png?type=w1 이런 식으로 구체적인 피드백이 온다



토이 프로젝트는 가상의 음악 스트리밍 서비스 회사(Sparkify)의 유저 및 노래 데이터베이스를 AWS 클라우드로 옮겨 클라우드 데이터 웨어하우스를 구축하는 것이었다. 유저 활동 및 음악 데이터는 S3에 여러 개의 JSON 로그들로 저장되어 있었고, 앱 노래 JSON 메타 데이터 파일도 함께 있었다. 즉, S3에 있는 데이터를 추출해서 Redshift에 staging 하고, 최종 사용자들이 적재적소에 활용할 수 있도록 데이터 모델링을 거쳐 최종 dimensional table 들을 Redshift 에 적재하는 ETL 파이프라인을 구성하는 과제였다. 스파크나 에어플로우를 쓸 정도로 복잡한 과제는 아니었으나, 데이터 엔지니어 초보자로서는 S3, IAM, VPC, EC2, RDS 를 AWS 상에 셋업하는 과정 자체도 어려웠다. 처음에 환경 설정할 때 버벅거려서 몇 시간동안 한 거 싹 지우고 다시 했다. 다음날 다시 셋업하고, Redshift 데이터 웨어하우스 클러스터도 빌드하고, Boto3 라이브러리를 이용해서 저 과정을 IaC (Infrastructure As Code) 로 구성하는 것도 했는데 - 여기서부터 요금 폭탄...




1.png?type=w1 오마이갓



일일이 EC2, S3, Redshift cluster 설정한 뒤에 지웠을 때는 리전이 us-east-1 이었는데, boto3 라이브러리 이용해서 코드로 EC2, S3, IAM, Redshift 클러스터를 생성했을 때는 us-west-2 였다. 즉, AWS 계정에서 활성화된 리전이 4개가 있었는데, us-east-1 의 redshift 노드들만 수동으로 싹 지웠지, 정작 이 모든 user, song 데이터를 저장해놓은 us-west-2 리전의 redshift 클러스터, 노드들은 그대로 놓은 채 로그아웃을 하고 이틀동안 확인을 하지 않은 것이었다. Cost Explorer 를 보니 활성화된 노드 수가 4개이고, 총 200시간 정도 dc2.large 노드 타입을 사용했고, 이게 대부분의 요금을 차지하고 있었다. 매 시간마다 돈이 줄줄 새는데 어디에서 빠져나가는지 알 수가 없으니 미칠 노릇이었다. 구글링을 열심히 해서 결국 제대로 싹 지웠고, 요금 폭탄은 54달러에서 멈췄다.





그래도 이렇게 작은 모듈 여러개로 코드를 구성해서 큰 codebase 로 작업을 처리하는 방식, 데코레이터 쓰는 거, 객체지향 프로그래밍에 조금은 더 익숙해진 거, command line 을 이용해서 시스템 안에서 파이썬을 바라보는 거, 이런 것들을 전에는 잘 몰랐었는데 이번 기회를 통해 배울 수 있었다. 2022년 초, 파리 인턴십 회사 송별회때 데이터 엔지니어링 팀 시니어 분이 같이 술마시면서 해주셨던 조언이 와닿았다. '툴은 6개월마다 빠르게 변한다. 중요한 건 큰 맥락에서 시스템 디자인을 논리적으로 할 수 있느냐의 여부야. 그리고 나도 주니어 시절에는 굉장히 Goal-Oriented 였는데, 이제는 아내, 딸들과 보내는 시간도 소중해. 비즈니스와 테크 분야를 넘나들 수 있는 사람은 그리 많지 않아. 너의 장점은 그거야. 그런데 엔지니어라 할지라도 위로 올라갈수록 결국에는 비즈니스를 알아야 해.'








1.png?type=w1 다음날 테크 멘토분의 답변



다음 날, Udacity 테크 멘토의 답변을 읽는데, 웃음이 나왔다. 300달러 넘게 본인 돈으로 충당했으면, 나같았으면 '당장 때려쳐! 안해! 딴 길 찾아!' 했을텐데. 다들 이렇게 고군분투 하면서 저 자리까지 갔구나. 실력 뛰어난 멘토들도 다 비슷한 과정을 거쳤구나.








keyword
이전 05화또 다른 시작, 도전