어제 만든 Data Catalog는 "데이터가 어디 있고 어떻게 생겼는지"만 안다. 하지만 데이터 엔지니어링의 본질은 그 데이터를 **변환(Transform)**하는 것이다. 더러운 CSV를 깔끔한 Parquet으로, 분산된 테이블을 조인된 팩트 테이블로, 원시 로그를 집계된 지표로 바꾸는 일. 이 변환을 서버리스로 실행하는 것이 AWS Glue ETL Job이다.
Glue ETL Job은 내부적으로 Apache Spark를 돌린다. 즉 Glue는 "관리형 Spark"인 셈이다. 클러스터를 직접 띄우고 끄는 EMR과 달리, Glue는 Job을 제출하면 AWS가 Spark 환경을 자동으로 프로비저닝하고 끝나면 회수한다. 과금 단위는 **DPU(Data Processing Unit)**이며, 1 DPU = 4 vCPU + 16GB 메모리다. 실행 시간(초 단위)에 비례해 과금된다.
Spark를 써 봤다면 DataFrame이 익숙할 것이다. Glue는 여기에 한 겹을 더 씌운 DynamicFrame이라는 자료구조를 도입했다. 왜 또 다른 추상화가 필요했을까?