[AWS] 데이터 AI 플랫폼 API연동 및 분석

데이터 분석을 통한 비지니스 인사이트를 발견하고자 하는 시장환경을 반영하듯 통합 데이터를 제공하는 유,무료 데이터 플랫폼 사이트가  증가하고 있는 추세입니다.  상업적으로 판매되는 AI 기반 데이터 플랫폼에서 제공하는 데이터를  API방식으로 연동하여  AWS 내의 데이터 웨어하우스를 통한 분석환경을 제공하고, BI 툴로 시각화하여 제공하는 데이터파이프라인 구축에 대한 POC를 진행하였고 그 과정을 정리하였습니다.

1. 데이터 연동방식

아키텍처를 구성하기 이전에 데이터 연동 방식의 특성을 우선 파악하였습니다.

  • 요청방식 : RestAPI로 Get 메소드 방식이며, 모든 Api가 Uri와 파라메터만 달라지는 동일한 호출방식입니다.
  • 요청타입 : API가 두가지 타입으로 제공되었습니다.  Bulk Api, V1.3 API (Not Bulk Api)
  • 응답방식 :  Bulk Api는 응답으로 csv.gz 압축파일로 V1.3 API는 Json 타입의 반정형 데이터로 응답이 옵니다.
  • 고려사항 첫 번째 :  Bulk Data Api 대용량 파일 압축 해제 후 용량은 가장 큰 파일은 2천만개의 레코드를 초과, gzip 압축시 1500MB크기, 압축 해제 후 3700MB 크기에 도달 가능하다고 안내되어 있습니다.
  • 고려사항 두 번째 :  Bulk Data Api 한가지 종류의 데이터 연동을 위해서 최대 13개의 Bulk 파일들(데이터파일 1개, 메타데이터 파일 12개)을 다운로드 할 수 있어야 합니다. 
  • 고려사항 세번째 :  API 호출횟수 제한이 따르는 청구 계약이 되어있었습니다.

URI : URI는 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미합니다. 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스입니다.

URL : URL은 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약입니다. URI의 서브셋입니다.

URI는 식별하고, URL은 위치를 가리킵니다.

 

API 연동시에 세가지 고려사항에 대해 확장성 있는 서비스를 도입해야 한다고 판단하였습니다.

2. Architecture

데이터 처리 파이프라인은 수집, 적재, 처리, 분석, 시각화 이 단계들이 필요합니다.  수집 이외의 단계들에 대해서는 사용할 AWS 서비스들을 결정하기 수월하였으나, Api 연동을 위한 수집시 사용할 서비스들을 결정하는데에 여러방안으로 고려해보는 시간이 필요했습니다.

결과적으로 EC2 에 파이썬스크립트를 크론으로 스케줄링한 방식으로 구성하기로 합니다.  컴퓨팅환경을 관리해야 한다는 리소스가 발생하지만,  이전부터 많은 배치 프로그램 환경에서 사용하던 방식이라,  접근이 쉽고 확장성 있는 방식이라 판단하였습니다. 

아키텍처를 구성하는데에는 기술적으로 탁월한 서비스를 도입하는 것도 좋지만, 유지보수를 담당할 인력의 접근성을 고려하여 결정하는 것 또한 중요하다고 생각하였습니다.

그 외 고려해 본 서비스에는 Lambda와 AWS Batch가 있습니다.  처음 요구사항은 Lambda를 통한 API 연동으로 들어왔으나 연동 API 특징 상 Bulk데이터를 위한 Cpu, Memory, 디스크 공간이 필요하다는 점으로 인한 한계가 있어 채택하지 않았으며,  이번 아키텍처를 추후 AWS Batch 서비스를 이용해서 고도화 해보는것도 좋을 거 같습니다. 

  • Lambda  – 리소스 제한사항이 있습니다. 15분 제한시간이 있으며, 내부적으로 컴퓨팅 리소스를 할당하여 동작합니다. 제한된 스토리지 용량(512MB ~ 10240MB), 메모리용량(128MB~10240M), 이에 비례한 CPU용량과 기타 리소스가 할당됩니다. 따라서 컴퓨팅 환경을 커스터마이징하기 어렵습니다.
  • AWS Batch – 컴퓨팅 환경을 설정가능(CPU, Memory )합니다. 컨테이너 클러스터 기반의 컴퓨팅 환경에서 서비스가 가능합니다. 다만 Docker 기반의 이해도가 요구됩니다.

3. 서비스들 역할

* 위 아키텍처를 구성하면서 진행한 각 서비스들의 구현과정 및 이슈들을 아래 핸즈온들로 정리하였습니다. 일부내용은 해당 API만의 의존성을 갖고 구성된점 양해부탁드립니다.

[Hands On]

[VPC] 퍼블릭 연결 구성
[CodePipeline] CI/CD
[EC2] 배치 스크립트 구성
[Glue] Crawler, ETL
[Athena] 데이터분석
[QuickSight] BI 시각화 구성