데이터는 쌓여가는데, 막상 분석을 시작하려고 하면 막막할 때가 많습니다.
데이터베이스를 구축하고, ETL 파이프라인을 설계하는 등 시작부터 거대한 장벽에 부딪히곤 하죠.
AWS의 서버리스 서비스들을 활용하면, 복잡한 인프라 관리 없이도 단 몇 분 만에 간단한 분석 플랫폼을 구축할 수 있습니다.
이번 글에서는 S3에 쌓여있는 데이터를 AWS Glue로 카탈로깅하고, AWS Athena를 통해 표준 SQL로 즉시 분석하는 흐름을 알아보겠습니다. 개발자나 데이터 분석가 누구나 쉽게 따라 할 수 있는 가이드입니다.
분석을 위한 두 핵심 서비스, Athena와 Glue
시작하기에 앞서, 오늘 사용할 두 가지 핵심 서비스에 대해 간단히 소개드리겠습니다.
AWS Athena: S3에 저장된 데이터를 표준 SQL을 사용해 간편하게 분석할 수 있는 서버리스 대화형 쿼리 서비스입니다. 별도의 서버나 데이터 웨어하우스를 설정할 필요가 없으며, 실행한 쿼리에 대해서만 비용을 지불합니다.
AWS Glue: 데이터를 분석에 용이하게 검색, 준비, 통합할 수 있는 서버리스 데이터 통합 서비스입니다. 여기서 Glue의 역할은 S3에 저장된 데이터의 구조(스키마)를 자동으로 파악하여 ‘데이터 카탈로그’라는 메타데이터 테이블을 만들어주는 것입니다. 이 테이블 정보가 있어야 Athena가 S3 데이터를 마치 일반 데이터베이스 테이블처럼 쿼리할 수 있게 됩니다.
목표는 [S3에 데이터 저장] -> [Glue 크롤러로 데이터 구조 파악 및 테이블 생성] -> [Athena에서 SQL로 쿼리] 하는 간단하지만 강력한 파이프라인을 구축하는 것입니다.
Glue를 통해 S3 데이터 크롤링하기
가장 먼저 할 일은 분석할 데이터의 구조를 Glue에게 알려주는 것입니다. ‘크롤러(Crawler)’라는 기능을 사용하면 이 과정을 자동화할 수 있습니다.
먼저 분석할 데이터 파일을 S3 버킷에 업로드해야 합니다. 예시로 아래와 같은 purchase_log.csv
파일이 있다고 가정해 보겠습니다.
purchase_log.csv
|
s3://my-bucket/purchase-logs/
)에 업로드합니다.Glue 크롤러 생성 및 실행
이제 이 데이터의 구조를 읽어 들일 크롤러를 만듭니다.
AWS Management Console에서 AWS Glue 서비스로 이동합니다.
왼쪽 탐색 메뉴에서 [Data Catalog] > [Crawlers]를 선택하고 ‘Create Crawler’ 버튼을 클릭합니다.
크롤러 속성 설정: 크롤러 이름(예:
purchase_log_crawler
)을 입력하고 다음으로 넘어갑니다.데이터 소스: ‘데이터 소스 추가’를 클릭하고, 데이터 소스로 ‘S3’를 선택합니다. ‘S3 경로’에는 위에서 데이터를 업로드한 S3 폴더 경로(
s3://my-bucket/purchase-logs/
)를 지정합니다.IAM 역할: 크롤러가 S3 버킷에 접근하고 Glue 카탈로그를 생성하려면 적절한 권한이 필요합니다. ‘IAM role’ 섹션에서 ‘Create new IAM role’을 선택하고 IAM 역할 이름을 입력하여 역할을 생성합니다.
출력 설정: 크롤러가 생성할 테이블을 담을 데이터베이스를 지정해야 합니다. ‘Add database’를 클릭하여
my_db
와 같은 이름의 새 데이터베이스를 만듭니다.검토 및 생성: 설정을 검토하고 ‘크롤러 생성’을 완료합니다.
생성된 크롤러를 선택하고 ‘크롤러 실행’ 버튼을 누르세요. 잠시 후 크롤러 실행이 완료되면, S3의 CSV 파일을 분석하여 purchase_log
라는 이름의 테이블이 my_analytics_db
데이터베이스 아래에 생성된 것을 확인할 수 있습니다.
2.2 Athena에서 SQL로 데이터 분석하기
Glue에서 만들어진 테이블을 통해, Athena에서 SQL로 데이터를 분석할 수 있게 되었습니다.
AWS Management Console에서 Athena 서비스로 이동합니다.
처음 사용하는 경우, 쿼리 결과를 저장할 S3 버킷을 설정하라는 메시지가 나타납니다. **[설정] > [관리]**로 이동하여 쿼리 결과 위치를 위한 S3 경로(예:
s3://my-bucket/athena-query-results/
)를 지정합니다.이제 쿼리 편집기가 보일 것입니다. 화면 왼쪽의 ‘데이터 원본’은
AwsDataCatalog
로, ‘데이터베이스’는 방금 Glue에서 만든my_analytics_db
를 선택합니다. 그러면 ‘테이블’ 목록에purchase_log
테이블이 나타나는 것을 볼 수 있습니다.
이제 중앙의 쿼리 창에 표준 SQL을 입력해 봅시다.
예시 SQL 1: 데이터 미리보기
먼저 데이터가 잘 로드되었는지 확인하기 위해 간단한 쿼리를 실행합니다.
SELECT * FROM "AwsDataCatalog"."my_analytics_db"."purchase_log" LIMIT 10; |
예시 SQL 2: 사용자별 총 구매 금액 분석
어떤 사용자가 가장 많은 돈을 썼는지 확인해 봅시다.
|
‘실행’ 버튼을 누르면 쿼리가 실행되고, 잠시 후 하단 ‘결과’ 창에 분석 결과가 표 형태로 나타납니다.
지금까지 우리는 단 한 대의 서버도 직접 설정하지 않고 S3, Glue, Athena를 엮어 간단하지만 강력한 분석 환경을 구축했습니다.
이 조합의 가장 큰 장점은 확장성과 효율성입니다.
데이터가 테라바이트(TB) 규모로 늘어나도 동일한 방식으로 분석할 수 있으며, 사용한 만큼만 비용을 내므로 경제적입니다.
여기에 더해 Glue 크롤러를 주기적으로 실행하도록 예약하거나, 분석된 Athena 결과를 AWS QuickSight와 같은 BI 툴에 연동하여 멋진 대시보드를 만드는 등 무궁무진한 확장이 가능합니다.