코세라의 "Introduction to Designing Data Lakes on AWS" 강의는
AWS개발자들이 생각하는 좋은 Data Lake 아키텍처를 설명하고 있다.
위 그림은 배치레이어, 스피드레이어(실시간)를 둘 다 구성할 수 있으며
키바나를 통해 집계그래프로 시각화한다.
[ Data Lake Related Store Services ]
S3
실시간이든 배치든 저장, 인덱싱, 프로세싱 등 S3가 중심이 된다.
Data Lake의 저장소로 고려해야 될 사항은 네트워크 성능, 접근시간, 용량, 비용, 보안 등
여러 요소가 있다.
AWS S3는 위와 같은 요소들을 가지면서 개발자가 환경을 구축시간을 줄여준다.
S3가 가지는 장점은 아래와 같다.
- Scalable( 확장성), no limit data ( 용량제한이 없음)
- Durable, 데이터내구성을 99% 보장한다.
- Any Type of Data, 데이터의 다형성
또한 Retrieval Timed에 따라 여러 S3의 제품을 선택하여 사용할 수 있다.
즉 자주 접근하는 데이터 일수록 더 비싼 S3를 사용해야 한다.
GLUE
S3과 함께 자주 사용되는 AWS Glue는
Serverless한 데이터처리 및 카탈로깅 서비스이며, 중앙 메타데이터 저장소이다.
도서관으로 예를 들면, 도서관은 수많은 책(Data)들에게 장르를 부여(cataloging)하여
원하고자 하는 책을 빨리 찾을 수 있게한다.
더욱이 Glue는 다양한 Data소스에서 데이터를 받아올 수 있다.
참조
S3 :
- https://aws.amazon.com/products/storage/data-lake-storage/
- https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html
Glue :
[ Data Movement ]
참조 : https://aws.amazon.com/big-data/datalakes-and-analytics/https://aws.amazon.com/big-data/datalakes-and-analytics/what-is-a-data-lake/
API GateWay
AWS API Gateway는 보안 API를 쉽게생성하며, 유지 관리를 쉽게 지원하는 서비스이다.
자체 백엔드에서 구현해도 되지만 트래픽관리, 권한 및 제어, 모니터링들을 더 용이하게 해준다.
API를 통해 이동되는 데이터들은 위의 이미지와 같이 EC2, 람다, 키네시스로 전달 할 수 있다.
API가 아니라 바로 파일로 저장되는 경우, Web Server-> Kinesis-> S3로 구성할 수 있다.
Kinesis
실시간 스트리밍 데이터를 쉽게 수집, 처리, 분석할 수 있도록 지원하는 서비스이다.
소규모든 대규모든 데이터가 도착하는대로 처리하고 분석을 즉시 할 수 있다.
데이터 유형과 목적에 따라 다양한 Kinesis 제품을 이용할 수 있다.
- Kinesis Video Streams
- Kinesis Data Streams
- Kinesis Data Firehose
참조 : https://aws.amazon.com/kinesis/
[ Data Processing ]
데이터를 이동시켰으면 데이터처리를 해야하는데
Apache Hadoop을 이용한 분산처리시스템을 이용한다.
https://aws.amazon.com/emr/details/hadoop/what-is-hadoop/
EMR
EMR은 Hadoop을 EC2에 쉽게 추가할 수 있는 환경을 만들고,
분산처리에 필요한 어플리케이션( Hbase, Hive, Spark, Phoenix 등 )들을 설치 할 수 있다.
EMR을 사용하지 않고 EC2자체에 Ambari나 CDH(클라우데라 매니저)를 설치해
Hadoop을 사용할 경우 비용적으로 이득이 있지만,
개인적인 경험으로 운영시에 EMR이 인적자원이 훨씬 덜 소모되었다.
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html
EMR을 Serverless한 아키텍처로 Glue(+Lambda)를 사용할 수도 있다.
Glue Jobs : https://docs.aws.amazon.com/glue/latest/dg/author-job.html
Lambda : https://docs.aws.amazon.com/lambda/latest/dg/welcome.html
Athena Redshift
Sql을 이용하여 작업 후 저장할 때는 athena나 redshift는 좋은 선택지가 된다
참조
Athena : https://docs.aws.amazon.com/athena/latest/ug/what-is.html
sdf