AWS 기술 블로그
Amazon S3 데이터 레이크와 기계학습을 위한 Snowflake 통합 파이프라인 플랫폼 구축하기
인공지능과 기계학습 기술의 상용화로, 기업들은 대량의 데이터를 효과적으로 수집, 저장, 관리할 필요성을 점차 인식하고 있습니다. 데이터 레이크(Data Lake)는 이러한 필요성에 부응하여, 다양한 소스로부터 대규모의 데이터를 실시간으로 수집하고 저장함으로써 기업의 의사결정과 혁신을 지원합니다. 이제 데이터 레이크는 기업이 데이터 자산을 최대한 활용하고 비즈니스 가치를 창출하는 핵심 요소로 자리 잡고 있습니다.
정형, 반정형, 비정형 데이터 등 다양한 유형의 데이터 소스로부터 데이터를 데이터 레이크로 수집하는 작업에는 어려움이 있습니다. 데이터 소스의 연결 방법과 데이터 수집 방법이 다양하고, 수집된 데이터를 분석 및 AI/ML 작업에 활용할 수 있도록 데이터를 변환 및 정제하는 반복 작업이 증가합니다. 또한 데이터의 품질을 유지 및 관리하기 어렵다는 문제점도 있습니다.
많은 고객들은 데이터 수집과 활용의 과정 중에서 유사한 문제를 겪고 있습니다. 이를 해결하기 위해 다음과 같은 방법들을 활용하고 있습니다.
- 클라우드 기반의 확장 가능한 데이터 수집 및 오케스트레이션 서비스를 활용하여 유연한 데이터 파이프라인을 구성합니다. 이를 통해 다양한 데이터 소스의 데이터를 손쉽게 데이터 레이크로 수집할 수 있습니다.
- 쉽게 구성하고 활용할 수 있는 ETL(추출, 변환, 로드) 서비스를 사용하여 반복적인 데이터 변환 작업을 자동화하고 효율성을 높입니다. 이렇게 가공된 데이터는 분석 및 AI/ML 용도로 바로 활용할 수 있습니다.
- 관리형 서비스를 활용하여 데이터 웨어하우스(Data Warehouse)를 구성하고 운영 및 확장할 수 있습니다. 이를 통해 대규모 데이터 처리 및 분석이 가능해지며, 데이터 사일로를 제거하고 데이터의 품질을 보장할 수 있습니다.
- 최종적으로 데이터 마트(Data Mart)를 클라우드 기반의 관계형 데이터베이스 서비스를 통해 제공함으로써, 사용자들의 다양한 데이터 요구 사항을 빠르고 정확하게 만족할 수 있습니다.
이 블로그에서는 실제 고객사에서 AWS의 다양한 데이터 관련 서비스와 Snowflake를 활용하여 어떻게 데이터를 분석하고 AI/ML에 활용하고 있는지 사례를 살펴보겠습니다.
솔루션 개요
- 여러 데이터 소스의 데이터를 쉽게 검색, 준비, 이동, 통합할 수 있도록 지원하며, ETL 작업을 자동화하고 관리하는 서버리스 데이터 통합 서비스인 AWS Glue와 오케스트레이션 서비스인 Amazon Managed Workflows for Apache Airflow(MWAA)를 활용하여 유연한 데이터 파이프라인을 구성하여 다양한 데이터 소스의 데이터를 데이터 레이크(S3)로 수집하는 것을 용이하게 합니다.
- 수집된 원본(Raw) 데이터를 AWS Glue와 Snowflake를 사용하여 반복적인 ETL 작업을 자동화하여 원천 데이터를 사용 가능한 가공된 데이터로 변환합니다. 이렇게 가공된 데이터는 분석 및 AI/ML 용도로 바로 활용할 수 있습니다.
- Snowflake는 클라우드 기반 데이터 웨어하우스로 방대한 규모의 데이터에 대해 다중 클러스터 컴퓨팅을 제공하여, 데이터 사일로를 제거하고, 데이터 볼륨 및 워크로드에 관계없이 대규모 데이터 처리 및 분석을 가능하게 합니다. 이를 통해 제공되는 데이터의 품질을 보장할 수 있습니다.
- 최종적으로 데이터 마트는 관계형 데이터베이스를 클라우드에서 쉽게 설정, 운영 및 확장할 수 있게 해주는 Amazon RDS를 통해 제공되며, 이를 통해 사용자들의 데이터 요구를 충족시킬 수 있습니다. 그리고 데이터 마트는 Amazon QuickSight나 Tableau 등을 통해 BI로 활용될 수 있습니다.
단계 요약
고객 사는 아래와 같은 단계로 데이터 파이프라인을 구성하였습니다.
- 데이터 레이크 구축
- AWS Glue를 활용한 S3 데이터 레이크로의 데이터 수집
- MWAA를 활용한 데이터 워크플로 생성 및 관리
- 데이터 전처리 및 활용
- AWS Glue와 Snowflake를 활용한 데이터 전처리
- Amazon Athena와 Amazon SageMaker를 활용한 AI/ML 플랫폼 구성
- Amazon API Gateway와 AWS Lambda를 활용한 데이터 마트 활용 및 시각화
사전 준비사항
- 데이터 수집을 위한 원천 데이터와 AWS VPC 간 네트워크를 연결하고 점검합니다.
- 원천 데이터 수집을 위해 DB 접속 정보를 AWS Secrets Manager에 등록하여 사용을 준비합니다.
- 각 서비스에서 활용하는 AWS IAM 역할을 생성합니다.
1. 데이터 레이크 구축
데이터 레이크를 통해 다양한 데이터 소스의 데이터를 하나의 중앙화된 저장소로 저장하고, 이를 활용한 통합 데이터 분석이 가능해집니다. 이 단계에서는 데이터 소스들의 원천 데이터를 S3 데이터 레이크 저장소로 수집하는 과정을 구성합니다.
단계 1 : AWS Glue를 활용한 S3 데이터 레이크로의 데이터 수집
고객 환경에서 생성되는 다양한 데이터 소스를 통합적으로 분석하기 위해 Amazon S3를 중앙화된 저장소로 활용하여 데이터를 통합 저장합니다. 이 중앙화된 저장소는 데이터 레이크라고 불리며, 데이터 레이크에 저장된 데이터를 기반으로 다양한 분석 작업을 수행할 수 있도록 지원합니다. Amazon S3는 뛰어난 확장성과 내구성을 갖춘 객체 스토리지로, 데이터 레이크의 핵심 저장소 역할을 담당합니다. 또한, AWS Glue는 서버리스 데이터 통합 서비스로서 데이터를 추출(Extract), 변환(Transform), 적재(Load)하는 ETL 작업을 효율적으로 수행할 수 있도록 돕습니다.
AWS Glue 서비스를 활용하여 원천 데이터 소스와 연결하고, 메타데이터를 수집합니다. AWS Glue 크롤러(Crawler)가 실행되면 데이터 소스를 자동으로 스캔하여 메타데이터를 추출하고, 이를 AWS Glue 데이터 카탈로그(Data Catalog)에 메타데이터 테이블로 저장합니다. 수집한 메타데이터를 활용하여 AWS Glue 작업을 생성 및 호출하여 원천 데이터를 가져옵니다. AWS Glue 작업은Python 코드를 직접 작성하여 사용하거나, AWS Glue 스튜디오의 GUI를 활용하여Python 코드 작성을 최소화할 수 있습니다.
단계 2 : Apache Airflow 를 활용한 데이터 워크플로 생성 및 관리
많은 수의 데이터 파이프라인을 모니터링할 때, Apache Airflow를 활용하여 편리하게 워크플로를 제어하고 모니터링할 수 있습니다. Amazon Managed Workflows for Apache Airflow(MWAA) 는 Apache Airflow를 기반으로 하는 완전 관리형 서비스로, AWS 클라우드에서 워크플로우를 쉽게 구축하고 운영할 수 있게 해줍니다.
Amazon MWAA 시작하기 가이드를 따라 MWAA 환경을 생성합니다. 이 과정에서 Apache Airflow에서 사용할 Directed Acyclic Graphs(DAG)와 매개변수 등의 파일을 저장할 S3 버킷과 MWAA가 동작하는 동안 AWS 서비스에 접근할 수 있도록 허용하는 실행 역할(IAM 역할) 등을 구성하여 MWAA 환경을 생성합니다.
MWAA 환경 생성 후, Python으로 작성된 DAG 파일을 지정된 S3 위치에 업로드하면 워크플로 생성이 가능합니다. Airflow는 Amazon provider 패키지에 포함된 오퍼레이터를 통해 AWS Glue를 비롯한 다양한 AWS 서비스에 접근하는 워크플로를 자동화하고 관리할 수 있습니다.
아래와 같은 순서로 AWS Glue를 통해 구성한 파이프라인 워크플로를 생성하고 모니터링합니다.
- 스케줄 메타데이터를 생성합니다.DAG 하나에 한가지 스케줄을 등록하고 여러 DAG의 스케줄을 관리하기 위해 CSV 포맷의 스케줄 메타데이터를 생성하여 DAG 스케줄을 통합 관리합니다. 해당 스케줄 메타데이터 CSV 파일은 S3에 업로드하여 DAG를 통해 활용할 수 있도록 구성하였습니다.
column1 column2 column3 column4 column5 1 SYSTEM
DB_NAME
SCHEDULE_GROUP
DAG_START_DATE
DAG_SCHEDULE
2 test
postgres
catalog_daily
202212190000
00 17 * * *
- 데이터 수집 메타데이터를 생성합니다.AWS Glue로 구성된 파이프라인에는 인자를 전달하여 동작합니다. 해당 인자는 Airflow에서 전달하여 동작하도록 합니다. 해당 인자를 전달하기 위해 데이터 수집 메타데이터를 생성하고 스케줄 메타데이터와 같이 CSV 포맷으로 S3에 업로드하여 사용합니다.
- DAG 작성생성한 메타데이터를 활용하여 DAG를 생성합니다.
생성한 DAG는 소스 코드 수정없이 메타데이터 관리를 통해 스케줄을 변경하고 수집 데이터를 추가 및 제거할 수 있습니다.
- MWAA 환경 생성Amazon MWAA 관리 콘솔을 통해서 다음과 같이 MWAA 환경을 생성합니다. 자세한 생성 방법은 Amazon MWAA 시작하기를 참조하세요.
세부 정보 지정
고급 설정 구성
생성된 MWAA 환경
Airflow UI, 출처: https://airflow.apache.org/docs/apache-airflow/stable/ui.html
데이터 전처리 및 활용
앞 단계에서 구축한 데이터 파이프라인을 통해서 다양한 데이터 소스들의 데이터가 데이터 레이크에 원본 형태로 저장되어 있습니다. 이 원천 데이터를 분석에 활용하기 위해서는 적절한 전처리 과정이 필요합니다. 이 단계에서는 데이터 전처리 워크플로를 구성합니다.
단계 1: AWS Glue와 Snowflake를 활용한 데이터 전처리
AWS Glue를 활용한 데이터 전처리
AWS Glue의 스튜디오 기능을 통해 데이터 전처리 작업을 생성할 수 있습니다. 또한, 직접 쿼리를 작성하여 작업을 만들 수도 있습니다. 사례에서는 많은 양의 다양한 데이터 전처리 작업을 생성하고 관리하기 위해 AWS Athena를 통해 쿼리를 작성하고 많은 데이터 전처리 쿼리를 하나의 AWS Glue 작업에 인자로 전달하여 전처리를 진행하는 방식으로 진행하였습니다.
Snowflake를 활용한 데이터 전처리
Snowflake에서 제공하는 외부 테이블(External Table) 기능과 저장 프로시저(Stored Procedure)를 통해 데이터 전처리를 진행하였습니다.
- 먼저 AWS Marketplace에서 Snowflake Connector를 구독합니다.
- AWS Glue 작업을 생성합니다. 기본 적재는 Delete-Insert 방식으로 구현하였습니다. 대용량 데이터 처리를 위해 날짜 인자를 전달하여 부분 일자 단위로 작업을 수행하고 파티션을 나누어 작업이 가능하도록 구성하였습니다. 다양한 전처리 작업을 수행하기 위해 전처리 쿼리를 따로 보관하고 해당 SQL을 전달 받아 작업이 수행됩니다.
- AWS Athena를 통해 데이터 전처리 쿼리를 생성합니다.생성한 쿼리는 S3에 저장하여 AWS Glue 작업에서 호출하여 사용할 수 있도록 합니다. 이후 쿼리만 생성하여 추가하면 손쉽게 새로운 데이터 전처리 과정을 추가할 수 있습니다.
- S3 데이터를 Snowflake 외부 테이블로 생성합니다.
- 외부 테이블 데이터를 전처리하여 데이터 마트 스키마로 삽입하는 프로시저를 생성합니다.
- Airflow 배치 작업 스케줄을 생성하여 주기적으로 프로시저를 호출합니다.
단계 2: AWS Athena와 Amazon SageMaker를 활용한 AI/ML 플랫폼 구성
플랫폼의 접근 권한 제어를 위해 AWS IAM Identity Center를 활용하였습니다. IAM Identity Center를 구성한 후 해당 권한 체계를 SageMaker Studio에 반영하였습니다.
플랫폼 구성을 진행하는 개발자의 관점과 플랫폼을 사용하게 되는 사용자의 관점에서의 워크플로는 아래와 같습니다.
플랫폼을 구성하는 개발자 관점에서의 아키텍처
- IAM Identity Center를 활성화한 후 그룹에 SageMaker 관련 권한을 부여합니다.
- Amazon SageMaker Studio 도메인을 생성하는 과정에서나 생성한 후 IAM Identity Center에서 생성한 그룹을 통해 사용자 프로필을 연결합니다.
- Dockerfile을 사용하여 커스텀 컨테이너 이미지를 생성하고 Amazon Elastic Container Registry (Amazon ECR)의 프라이빗 레지스트리에 이미지를 저장합니다.
- SageMaker Studio JupyterLab과 SageMaker에서 사용하기 위해 ECR에 저장된 컨테이너 이미지를 SageMaker에 등록한 후 SageMaker Studio에 연결합니다.
플랫폼을 사용하는 사용자 관점의 아키텍처
- 사용자는 IAM Identity Center에서 제공하는 AWS 액세스 포털에서 로그인을 진행합니다.
- 사용자는 SageMaker Studio에서 플랫폼 개발자가 생성한 커스텀 컨테이너 이미지나 SageMaker에서 기본으로 제공하는 커널 이미지를 사용하여 JupyterLab에 연결하여 분석, 모델생성, 학습, 배포를 진행할 수 있습니다.
- S3에서 데이터를 읽은 후 SageMaker에서 실행한 분석 결과나 모델 아티팩트 등의 결과를 S3에 저장하고 검색할 수 있습니다.
단계 3: AWS Lambda와 Amazon API Gateway를 활용한 데이터 마트 활용 및 시각화
데이터 기반의 전략적 의사결정을 지원하기 위한 시각화 대시보드 제작을 위해 데이터 마트를 구축하고, 해당 데이터 마트 기반으로 시각화 대시보드를 제작하였습니다. 이때 AWS Lambda와 Amazon API Gateway를 사용하여 웹에서도 데이터 마트 분석과 해당 분석 결과를 시각화 솔루션과 연동하여 대시보드를 제작할 수 있습니다.
AWS Lambda를 사용하여 데이터를 처리하고 가공하는 일련의 작업들을 자동화하고, 이를 통해 정형 및 비정형 데이터를 효과적으로 처리하고, 데이터의 분석을 진행하였습니다.
API Gateway는 AWS Lambda와 고객의 웹 서비스 간의 연결을 원활하게 하는 역할을 합니다. 이를 통해 웹 인터페이스를 구축하여 데이터를 사용자에게 명확하게 전달할 수 있습니다.
웹 서비스에서 데이터 마트의 분석과 해당 분석 결과의 시각화를 개발자와 사용자 관점으로 아래의 절차를 걸쳐 진행됩니다.
웹 인터페이스를 구축하는 개발자 관점의 아키텍처
- 웹 인터페이스 구성을 할 수 있는 권한이 있는 계정으로 로그인합니다.
- AWS Lambda에서 함수를 생성한 후 함수 내부 로직에서 데이터 조회를 하려는 데이터 마트에 연결을 하고 데이터를 쿼리 후 분석하는 로직을 개발합니다.
- 데이터 마트에서 가져온 데이터를 기반으로 데이터 가공을 합니다.
- AWS Lambda 함수 생성이 완료되었으면 API Gateway를 구성합니다.
- 생성한 API에서 통합 연결을 선택하여 생성한 AWS Lambda 함수를 연결합니다.
웹 인터페이스를 사용하는 사용자 관점 아키텍처
- 사용자는 API Gateway를 통해 제공되는 API를 호출합니다.
- API Gateway가 API에 연결된 AWS Lambda 함수를 호출합니다.
- AWS Lambda 함수는 데이터 마트에서 가져온 데이터를 분석합니다.
- 분석이 완료된 데이터를 API Gateway로 반환합니다.
- API Gateway는 Lambda 함수에서 반환한 데이터를 사용자에게 반환합니다.
결론
파이프라인 플랫폼 구축을 위해서는 작업 도중 발생하는 다양한 문제들에 대해 많은 고민이 필요합니다. 이를 해결하기 위해 다양한 전략과 서비스에 대한 논의가 이뤄졌습니다. 위와 같은 문제의 방향성 수립에 도움이 될 수 있도록 AWS의 체계적이고 다양한 서비스를 사용하게 되었습니다. 이를 통해 AWS Glue와 Snowflake를 사용하여 데이터 적재 및 변환, Amazon MWAA서비스를 이용한 워크플로우 구축, Amazon SageMaker를 활용한 AI/ML작업에서의 데이터 활용할 수 있었습니다. 또한 데이터 분석 진행 후 Amazon API Gateway와 AWS Lambda를 사용하여 시각화까지 진행되는 파이프라인 플랫폼을 구축하게 되었습니다. 이와 같은 시스템 구축을 통해 데이터 관리를 편리하게 작업할 수 있을 뿐 아니라 유지보수에 대한 부담을 줄이고 효율적으로 운영할 수 있게 되었습니다.
추가적으로 데이터 레이크에 대한 정보는 AWS 기반 데이터 레이크, AWS에서의 Snowflake에 대한 자료를 참고하시면 도움이 될 것 같습니다.