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

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

Tech

2025년 3월

Apache Airflow 2.10.0 새로운 기능 Hybrid Executor

Apache Airflow 2.10.0 버전에 새로 생긴 Hybrid Executor 기능 살펴보기
Tech 파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법 대표 이미지

Tech

2025년 7월

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

파이썬 환경에서 여러가지 라이브러리를 활용하여 구글 빅쿼리로 데이터를 전송하는 여러가지 방법
AWS Athena를 사용하여 분석 플랫폼 만들기 배너 이미지

Tech

2025년 8월

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

AWS Athena를 사용하여 SQL을 통해 간단하게 데이터를 분석할 수 있는 플랫폼을 만들기