AWS Athena를 사용하여 분석 플랫폼 만들기

AWS Athena를 사용하여 분석 플랫폼 만들기 배너 이미지

데이터는 쌓여가는데, 막상 분석을 시작하려고 하면 막막할 때가 많습니다.

데이터베이스를 구축하고, 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

order_id,user_id,product_name,price,timestamp

1001,user_a,laptop,1500,2023-10-26T10:00:00Z

1002,user_b,mouse,50,2023-10-26T10:05:00Z

1003,user_a,keyboard,100,2023-10-26T10:07:00Z

1004,user_c,monitor,400,2023-10-26T11:20:00Z

1005,user_b,webcam,80,2023-10-26T11:22:00Z

이 파일을 S3 버킷 내 특정 폴더(예: s3://my-bucket/purchase-logs/)에 업로드합니다.
 
 

Glue 크롤러 생성 및 실행

이제 이 데이터의 구조를 읽어 들일 크롤러를 만듭니다.

 

  1. AWS Management Console에서 AWS Glue 서비스로 이동합니다.

  2. 왼쪽 탐색 메뉴에서 [Data Catalog] > [Crawlers]를 선택하고 ‘Create Crawler’ 버튼을 클릭합니다.

  3. 크롤러 속성 설정: 크롤러 이름(예: purchase_log_crawler)을 입력하고 다음으로 넘어갑니다.

  4. 데이터 소스: ‘데이터 소스 추가’를 클릭하고, 데이터 소스로 ‘S3’를 선택합니다. ‘S3 경로’에는 위에서 데이터를 업로드한 S3 폴더 경로(s3://my-bucket/purchase-logs/)를 지정합니다.

  5. IAM 역할: 크롤러가 S3 버킷에 접근하고 Glue 카탈로그를 생성하려면 적절한 권한이 필요합니다. ‘IAM role’ 섹션에서 ‘Create new IAM role’을 선택하고 IAM 역할 이름을 입력하여 역할을 생성합니다.

  6. 출력 설정: 크롤러가 생성할 테이블을 담을 데이터베이스를 지정해야 합니다. ‘Add database’를 클릭하여 my_db와 같은 이름의 새 데이터베이스를 만듭니다.

  7. 검토 및 생성: 설정을 검토하고 ‘크롤러 생성’을 완료합니다.

 

생성된 크롤러를 선택하고 ‘크롤러 실행’ 버튼을 누르세요. 잠시 후 크롤러 실행이 완료되면, S3의 CSV 파일을 분석하여 purchase_log라는 이름의 테이블이 my_analytics_db 데이터베이스 아래에 생성된 것을 확인할 수 있습니다.

 

 

2.2 Athena에서 SQL로 데이터 분석하기

Glue에서 만들어진 테이블을 통해,  Athena에서 SQL로 데이터를 분석할 수 있게 되었습니다.

 

  1. AWS Management Console에서 Athena 서비스로 이동합니다.

  2. 처음 사용하는 경우, 쿼리 결과를 저장할 S3 버킷을 설정하라는 메시지가 나타납니다. **[설정] > [관리]**로 이동하여 쿼리 결과 위치를 위한 S3 경로(예: s3://my-bucket/athena-query-results/)를 지정합니다.

  3. 이제 쿼리 편집기가 보일 것입니다. 화면 왼쪽의 ‘데이터 원본’은 AwsDataCatalog로, ‘데이터베이스’는 방금 Glue에서 만든 my_analytics_db를 선택합니다. 그러면 ‘테이블’ 목록에 purchase_log 테이블이 나타나는 것을 볼 수 있습니다.

이제 중앙의 쿼리 창에 표준 SQL을 입력해 봅시다.

 

예시 SQL 1: 데이터 미리보기

먼저 데이터가 잘 로드되었는지 확인하기 위해 간단한 쿼리를 실행합니다.

 

SELECT * FROM "AwsDataCatalog"."my_analytics_db"."purchase_log" LIMIT 10;

 

예시 SQL 2: 사용자별 총 구매 금액 분석

어떤 사용자가 가장 많은 돈을 썼는지 확인해 봅시다.

 

SELECT user_id, SUM(price) AS total_spent

FROM "AwsDataCatalog"."my_analytics_db"."purchase_log"

GROUP BY user_id ORDER BY total_spent DESC;

‘실행’ 버튼을 누르면 쿼리가 실행되고, 잠시 후 하단 ‘결과’ 창에 분석 결과가 표 형태로 나타납니다.

 

 

지금까지 우리는 단 한 대의 서버도 직접 설정하지 않고 S3, Glue, Athena를 엮어 간단하지만 강력한 분석 환경을 구축했습니다.

이 조합의 가장 큰 장점은 확장성효율성입니다.

데이터가 테라바이트(TB) 규모로 늘어나도 동일한 방식으로 분석할 수 있으며, 사용한 만큼만 비용을 내므로 경제적입니다.

여기에 더해 Glue 크롤러를 주기적으로 실행하도록 예약하거나, 분석된 Athena 결과를 AWS QuickSight와 같은 BI 툴에 연동하여 멋진 대시보드를 만드는 등 무궁무진한 확장이 가능합니다.

Popular & Related Posts

Airflow Dynamic Task Mapping으로 동적 태스크 실행하기 배너 이미지

by

2025-07-29

Airflow의 Dynamic Task Mapping으로 동적 태스크 실행하기

Airflow에서 특정 태스크 개수가 동적으로 실행되어야 할때, Airflow Dynamic Task Mapping을 사용할 수 있습니다.

Tech

Apache Airflow 2.10.0 새로운 기능 Hybrid Executor 블로그 배너 이미지

by

2025-03-28

Apache Airflow 2.10.0 새로운 기능 Hybrid Executor

Apache Airflow 2.10.0 버전에 새로 생긴 Hybrid Executor 기능 살펴보기

Tech

Tech 파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법 대표 이미지

by

2025-07-29

파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법

파이썬 환경에서 여러가지 라이브러리를 활용하여 구글 빅쿼리로 데이터를 전송하는 여러가지 방법

Tech