BLOG

Amazon Redshift 와 AWS 서비스 사용하여 최단시간에 데이터 웨어하우스 만들기
작성일: 2018년 2월 27일

저자인 Stephen Borg는 여러 해에 걸쳐 수많은 데이터 웨어하우스를 처음부터 개발하고 만드는 일을 해왔습니다. 최근에, Borg는 단독으로 통신 산업을 위해 데이터 웨어하우스를 만들었습니다. 이 과정에서 Amazon Redshift와 더 폭넓은 AWS데이터 관리 에코 시스템의 강력함과 유연성을 활용했습니다. 이 포스트에서는 전문가들로 구성된 대규모 팀의 도움 없이 어떻게 강력하고 확장 가능한 데이터 웨어하우스를 구축할 수 있었는지에 대해 설명할 것입니다.

 

최근 2개의 프로젝트를 수행하면서, 저는(Borg) 온프레미스 인프라를 사용하여 데이터 웨어하우스를 확장하는 과정에 어려움을 겪었습니다. 데이터가 하루에 수십 GB씩 증가하고 쿼리 성능이 저하되는 문제가 있었습니다. 하드웨어 및 소프트웨어 라이선스를 확장하려면 주요 자본 투자가 필요했으며, 유지 보수 및 기술 인력이 이를 잘 운영하고 성능을 유지하는 데에는 상당한 운영 비용이 들었습니다. 안타깝게도 데이터 증가에 따라 인프라를 확장하는 데 필요한 리소스를 확보할 수 없었고 결국 프로젝트는 폐기되었습니다. 클라우드 데이터 웨어하우징 덕분에, 인프라 리소스, 자본 비용 및 운영 비용의 보틀넥 현상이 대폭 줄어들었거나 완전히 사라졌습니다.

 

Amazon Redshift와 AWS를 통해 저는 저 혼자만의 힘으로 클라우드 데이터웨어 하우스를 사업체에 매우 신속하게 제공했습니다. 하드웨어나 소프트웨어를 주문할 필요가 없었고 더 이상 패치 및 버전 업데이트를 설치, 구성, 조정하거나 그에 맞게 조정할 필요가 없었습니다. 그 대신에, 저는 강력한 데이터 처리 파이프라인을 쉽게 설정했고, 데이터를 빠르게 수집하고 분석했습니다. 이제 데이터 웨어하우스 팀은 간소한 규모로 새로운 데이터를 가져오고 인사이트를 제공하는 데 더 많은 시간을 할애할 수 있습니다. 이 포스트에서는 AWS서비스와 제가 사용한 아키텍처를 보여 드리겠습니다.

 

데이터 피드 관리하기

저는 사업을 운영하는 데 필요한 모든 것을 제공하는 몇 가지 데이터 출처를 가지고 있습니다. 이 데이터에는 NAT의 iGaming 플랫폼, 소셜 미디어 포스트, 클릭 스트림 데이터, 마케팅 및 캠페인 성능, 고객 지원 활동이 포함됩니다.

 

다양한 데이터 피드를 처리하기 위해 Amazon ECS(AmazonEC2 Container Service)에서 실행되며 Amazon Kinesis데이터 스트림에 데이터를 제공하는 Docker를 사용하여 추상 통합 애플리케이션을 개발했습니다. 이러한 데이터 스트림은 실시간 분석에 사용할 수 있습니다. 제 시스템에서는 정보를 정리하고 집계하기 위해 AWS Lamda 기능을 통해 Kinesis의 기록이 처리됩니다. 제 시스템은 아마존 S3에서 필요한 곳에 Amazon Kinesis Data Firehose를 통해 저장할 수 있도록 연결합니다. 만약 온프레미스 아키텍처를 사용하여 동일한 작업을 수행했다고 가정해봅시다. 데이터를 저장하기 위해서는, 한 팀의 데이터 엔지니어들이 Kafka 클러스터를 유지 관리 및 모니터링하고, 데이터 스트리밍을 위한 애플리케이션을 개발하고, Hadoop 클러스터와 그 밑에 있는 인프라를 유지해야 합니다. Stream 처리 아키텍처를 사용하면 관리할 서버도 없고 교체할 Disk드라이브도 없으며 서비스 모니터링도 수행할 필요도 없습니다.

 

 

 

Kinesis 스트림 설치는 몇 번의 클릭으로 가능하며, Kinesis 파이어 호스의 경우도 마찬가지 입니다. Firehose는 Kinesis Data Stream에서 데이터를 자동으로 소비하고 N분마다 압축 데이터를 Amazon S3에 쓰도록 구성할 수 있습니다. Kinesis 데이터 스트림을 처리하려는 경우 수신되는 각 메시지에 대해 실행할 람다 기능을 설정하기도 매우 쉽습니다. 다음과 같이 AWS Lamda 관리 콘솔에서 트리거를 설정할 수 있습니다.

 

 

 

또한 Amazon CloudWatchAWS X-Ray를 사용하여 기능 실행 기간을 모니터링 합니다.

 

파트너로부터 데이터를 받는 형식과 상관 없이, 저는 직접 작성자를 사용하여 이를 JSON데이터로 Kinesis에 보낼 수 있습니다. 파이어 호스가 AmazonS3에 이 글을 쓴 후에, 저는 제가 받은 것과 거의 같은 구조이지만 압축하고, 암호화하고, 읽기에 최적화된 것을 갖게 되었습니다.

 

이 데이터는 AWS Glue에 의해 자동으로 로밍 되고 AWS Glue Data Catalog에 저장됩니다. 이는 곧 Amazon Athena를 사용하거나 Amazon Redshift Spectrum 통해 S3의 데이터를 즉시 쿼리 할 수 있다는 것을 의미합니다. 이전에 카탈로그 관리를 위해 Apache Hive에 있는 Amazon EMR과 Amazon RDS기반 메타 스토어를 사용했습니다. 이제 Hive Metastore 카탈로그를 유지를 위한 복잡한 과정을 피할 수 있습니다. Glue는 최종 사용자가 항상 생산적으로 작업할 수 있도록 고가용성과 운영 측면을 관리합니다.

 

분석을 위해 Amazon아테나 및 Amazon Redshift 작업하기
즉각적인 분석을 위해 Amazon Athena 가 대단히 유용합니다. 엔지니어들은 Athena를 사용하여 수신하는 새로운 데이터 세트를 이해하고 장기적인 쿼리 효율성을 위해 어떤 변환이 필요한지 이해합니다.

 

데이터 분석가와 데이터 과학자들을 위해, 우리는 Amazon Redshift를 선택했습니다. Redshift는 우리에게 지속적으로 아주 적합한 도구임이 입증되었습니다. 이것은 테이블의 공간과 비즈니스에 필요한 분석 유형에 관계 없이 매일 2천만개 이상의 트랜잭션을 손쉽게 처리합니다. 지연 시간이 짧고 쿼리 성능이 기대치 이상으로 충족되었습니다. 저희는 데이터를 장기적으로 보존하기 위해 Red shift spectrum 을 사용합니다. 이를 통해 Amazon Redshift의 분석 성능을 S3에 저장된 데이터로 확장할 수 있으며 데이터를 로딩할 필요가 없습니다. Redshift Spectrum 을 사용하면 원하는 곳에 원하는 형식으로 데이터를 자유롭게 저장하고 필요할 때 처리할 수 있습니다.

 

데이터를 Amazon Redshift 에 직접 로딩하려면 AWS Data Pipeline을 사용하여 데이터 워크플로우를 조정합니다. Amazon EMR 클러스터는 하루 중 필요 시에 실행될 수 있도록 쉽게 조정할 수 있습니다.  EMR클러스터는 Amazon RDS, Apache 스파크 2.0및 S3스토리지와 함께 사용됩니다. 데이터 파이프 라인 애플리케이션은 AWS Elastic Beanstalk에서 호스팅 된 Spring Restful서비스에서 ETL구성을 로드합니다. 그러면 애플리케이션은 S3에서 메모리로 데이터를 로드하고, 데이터를 집계하고 정리한 다음, Amazon Redshift에 최종 데이터 버전을 작성합니다. 그 후, 이 데이터를 분석에 사용할 수 있습니다. 또한 EMR Spark를 사용하면 다양한 사업 사용자에 대한 권고 사항과 개인화 use case를 쉽게 설정하고 사용자가 원하는 것을 제공할 수 있게 됩니다. 마지막으로, 비즈니스 사용자들은 셀프 서비스 BI를 위해 Amazon QuickSight를 사용하여 요구 사항에 맞추어서 데이터를 조각내고 자르고 시각화합니다.

 

 

 

이 아키텍처의 각 AWS서비스는 비즈니스 부서에 따라 제공하는 데 결정적인 역할을 하는 시간을 절약하는 역할을 합니다. 설정 및 사용이 간편하며 프로덕션 환경으로 사용하는 데 매우 안정적인 것으로 검증되었습니다. 구조가 준비되었을 때, 확장은 서비스 부서에 의해서 완전히 처리되거나, 또는 심플한 API호출 문제로 처리되고 결정적으로, 코드 한 줄 조차 변경할 필요가 없습니다. 스트림을 편집하면 1분 안에 Kinesis 의 샤드 (shard)를 늘릴 수도 있습니다. 람다 기능의 용량 증가는 처리를 위해 할당된 메가 바이트를 편집하여 수행할 수 있게 도우며 동시 실행능력 또한 자동으로 처리됩니다. EMR클러스터 용량은 데이터 파이프 라인의 마스터 및 slave node 유형을 변경하거나 자동 확장을 사용하여 쉽게 늘릴 수 있습니다. 마지막으로 RDS와 Amazon Redshift는 팀에서 수행하는 주요 작업 없이도 쉽게 업그레이드할 수 있습니다.

 

결국, Kinesis, Lambda, Data Pipeline, and Amazon Redshift등을 포함한 AWS서비스를 사용하면 조직의 군살을 확 빼고 더 생산적으로 만들 수 있습니다. 저는 자본 기반 시설의 비용과 지체를 제거했고, 또 늦은 밤과 주말에 지원 요청도 제거했습니다. 이제 운영 비용을 낮추면서 비즈니스에 최대한의 가치를 제공할 수 있습니다. 우리 최단 시간 내에 민첩하고 응답성이 뛰어난 데이터 웨어하우스 솔루션을 출시했으며, 이제 변화하는 비즈니스 요구 사항을 신속하게 처리하고 새로운 데이터 및 사용자 요청에 빠르게 대응할 수 있습니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/big-data/how-i-built-a-data-warehouse-using-amazon-redshift-and-aws-services-in-record-time/

 

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.