[세션 레포트] 데이터레이크 만드는 법, 쓰는 법, 키우는 법 #AWSSummit

2020 AWS Summit Online Japan의 세션 「데이터레이크 만드는 법, 쓰는 법, 키우는 법」의 레포트 블로그입니다.
2020.09.23

안녕하세요 클래스메소드 송영진입니다.

2020/09/08에 AWS Summit Online Japan이 개최되었습니다. 라이브 세션은 2일동안 이루어졌는데 30일까지는 온디멘드로 다시보기가 가능하게 되어있습니다. 본 이벤트는 일본어로 진행되어있으니 흥미 있으신 분들은 다음 링크에서 보실 수 있습니다.

이번 블로그에서는 라이브 세션 중에서 데이터레이크 만드는 법, 쓰는 법, 키우는 법(データレイクのつくりかた、つかいかた、そだてかた)이라는 제목의 세션에 대한 레포트입니다.

영상의 아카이브는 2020/9/30까지 한정공개로 링크에서 보실 수 있습니다. 본 포스트에서는 슬라이드를 한글로 번역해서 올렸습니다. 발표 슬라이드의 원본은 링크에서 보실 수 있습니다.

세션 정보

  • 발표자 : AWSJ AWS Glue & Lake Formation Sr. Big Data Architect 세키야마 노리타카(関山 宜孝)님
  • 개요

가속하는 비즈니스, 커져가는 데이터. 데이터의 능력을 제대로 발휘하게 하는 핵심 컨셉이 바로 데이터레이크입니다. 본 세션에서는 데이터레이크를 AWS 상에 구축해 운용하고 활용하는 방법을 첫 걸음부터 쉽게 해설합니다.「만드는 법」에서는, 데이터레이크를 수집, 축적, 가공, 분석의 4개로 나누어 구축의 포인트를 설명합니다.「키우는 법」에서는, 데이터레이크를 작은 데이터에서 시작해서, 조금씩 취급하는 데이터의 범위를 늘려, 이용 상황과 요구에 맞추어 데이터레이크를 길러 개선해 나가는 방법을 소개합니다.「쓰는 법」에서는, AWS 서비스의 사용지침, 데이터레이크의 운용 방법, 데이터레이크의 전형적인 유스케이스를 소개합니다. 데이터레이크를 지금부터 구축하기 시작하시는 분은 물론, 이미 구축한 데이터레이크를 안정적으로 운용하고 싶으신 분, 또 활용의 폭을 넓혀가고 싶으신 분에게도 추천하는 세션입니다.

레포트

데이터레이크란 무엇인가?

  • 확대되는 데이터에서 큰 가치를 생산하고 싶음

  • 전통적인 방법에는 한계가 있음
  • 데이터가 증가하고 데이터베이스의 수와 종류가 증가하면 단일 데이터베이스로 분석하기가 어려워지기 때문에 횡단분석이 필요하게 됨
  • 서로 다른 스토리지의 데이터사일로에 데이터를 보관하고 그것을 횡단하는 분석은 어려운 작업
  • 필요한 데이터가 어디 있는지 잘 모르게 됨
  • 이런 여러 사일로보다 모든 데이터를 한 곳에 모은 것이 데이터레이크의 개념
  • 모든 포맷의 데이터를 한데 모아 그것을 관리하는 중앙 카탈로그가 필요
  • 로우데이터를 그대로의 형식으로 모으고 필요에 따라 데이터를 변환 가공하여 다양한 목적에 구분하여 사용

  • 위와 같은 포인트들이 필요하게 됨

데이터레이크를 만드는 법

 

  • 데이터레이크를 만들기 위해서는 '수집', '저장', '변환', '분석'의 네 가지 단계가 필요
  • 수집 : 데이터소스인 데이터베이스나 파일 또는 센서 등에서 데이터를 수집
  • 저장 : 수집한 데이터를 데이터레이크의 스토리지에 저장
  • 변환 : 저장된 데이터를 분석하기 쉽게 가공
  • 분석 : 변환하여 준비된 데이터를 활용 분석

  • 이러한 다양한 AWS 서비스를 이용하여 위의 4단계를 적용 가능
  • 모든 서비스를 공부할 필요는 없지만 데이터의 성질이나 요건에 맞춰서 필요한 서비스를 사용 가능

수집

  • 수집 포인트는 '수집 데이터 선택', '수집 입도', '수집 빈도'의 3가지
  • 수집 데이터 선택 : 어떤 데이터 소스로부터 어떤 데이터를 수집할지
  • 수집 입도 : 얼마나 세밀하게 모을 것인지 ex) 웹 사이트의 방문한 유저의 데이터를 클릭마다 수집할지 5분의 데이터를 모아서 수집할지
  • 수집 빈도 : 어느 빈도로 모을 것인지 ex) 실시간인지 5분 간격인지

  • 로그 관련 데이터는 Cloudwatch Logs를 사용, 센서 데이터는 IoT Core를 사용하여 Kinesis를 통하여 S3에 저장
  • 애플리케이션에서 출력하는 데이터에서 파일은 오픈소스인 fluentd 등을 사용
  • 애플리케이션에서 API나 SDK를 통해서 직접 S3에 저장하는 것도 가능
  • 데이터베이스의 데이터는 Glue를 이용하여 정기적으로 저장 가능, DMS를 통하여 마이그레이션하여 저장 가능
  • SaaS 데이터는 AppFlow를 사용하여 저장

보존

  • 보존은 데이터의 내용과 그 데이터가 무엇을 나타내는지를 알려주는 메타데이터의 두 가지 관점에서 생각할 필요가 있음
  • 데이터 본체는 내구성, 가용성, 확장성이 높은 스토리지에 저장하는 것이 중요
  • 다양한 데이터 형식을 그대로 저장 가능하고 데이터 추가/갱신/삭제가 용이해야하고 필요에 따라서 데이터 롤백도 가능해야함
  • 데이터레이크에서 민감한 기밀 데이터도 다루므로 보안은 가장 중요한 관점 중 하나
  • 메타데이터에 관해서는 범용적이고 유연하게 활용할 수 있도록 데이터를 발견 및 활용하기 쉽게 정리
  • 가능한 한 자동으로 데이터 업데이트를 수행할 수 있는 시스템이 필요

  • 데이터 보관 -> S3, 메타데이터 보관 -> Glue
  • S3 라이프 사이클을 사용하여 오래된 데이터를 저렴한 스토리지로 이동
  • Glue를 사용하여 데이터에 대응하는 테이블 정의가 자동으로 데이터에서 생성됨
  • 테이블이나 컬럼에는 임의의 주석 태그를 붙일 수 있어서 설명을 붙일 수 있음
  • Athena와 EMR, RedShift등에서 이용가능
  • 일반적인 데이터도 하이브 형식에 대응
  • 암호화에 KMS, 접근 제어에는 Lake Formation을 사용

가공

  • 데이터 가공에는 퍼포먼스와 비즈니스 두 관점에서 봐야함
  • 퍼포먼스 관점
    • 파일 포맷 변환과 압축 : ex) csv/json 파일을 parquet 형식의 칼럼지향 포맷으로 변환
    • 파일 집약 : 저용량 파일 다수를 집약시켜서 중간 용량의 소수 파일로 변환
    • 데이터 배치 최적화 : 연월일 등을 바탕으로 파티셔닝
    • 오래된 데이터는 필터링해서 줄임
  • 비즈니스 관점
    • 데이터 형식 변환 : 문자열형 데이터를 수치형으로 변환
    • 날짜 형식 또는 타임존 변환 : UTC 날짜 형식을 분석에 맞는 타임존으로 변환
    • 마스킹 : 기밀 정보나 개인 정보를 보이지 않게 마스크
    • 필요 없는 데이터는 삭제

  • 데이터 사이즈나 실행 빈도 등 작업의 규모에 따라 다른 서비스를 선택하여 사용
  • 소규모면 Lambda, 중규모면 Glue의 Python Shell, 대규모면 Glue의 Spark Job
  • 특히 Spark Job은 분산 처리가 가능하고 DPU를 바꾸는 것 만으로도 확장이 가능하므로 추천

분석

  • 데이터레이크는 사용법을 당장 전부 결정하지 않아도 나중에 결정할 수 있음

데이터레이크를 쓰는 법

  • 다양한 AWS 서비스를 이용하여 데이터레이크를 이용 가능
  • BI와 가시화에서 QuickSight를 사용하면 손쉽게 대시보드를 작성가능
  • 기계학습은 특정 목적에 사용하는 인공지능(AI) 서비스와 범용적으로 사용하는 SageMaker
  • 스트림 처리에는 Kinesis Data Stream에서 실시간으로 수집한 데이터를 Glue Stream Job에서 ETL 처리하고, 그것을 분석 처리하거나 Athena 등을 사용하여 실시간으로 보고

  • 데이터레이크를 운용하려면 정상적인 상태를 정의하고 그 상태를 유지하는 것이 중요
  • 정상성의 지표로서 SLA(Service Level Agreement)와 같은 형태로 정량적으로 정의하면 좋음
  • SLA에 정의한 정상 상태에서 벗어난 것을 감시하고 복구를 반복
  • 정상성을 어떻게 정의해야 하는가?
  • 예를 들어 데이터의 신선도, 신뢰성, 비용 등으로 판단

  • 데이터 감시 방법
  • 유저가 End-to-End의 접근 패턴에 따른 데이터레이크의 동작이 정상인지를 체크
  • 실제 사용자의 접근을 기록하는 판정하는 방법
  • 웹 시스템의 외형 감시와 같은 형태로 사용자의 접근을 정기적으로 시뮬레이션하는 방법

데이터레이크를 키우는 법

  • 데이터레이크를 놔두지 말고 지속적으로 진화하는 것이 중요
  • 이용 상황을 분석하여 사용자의 피드백을 수집
  • 데이터와 분석 엔진을 늘림으로써 개선을 추진
  • 문서의 정비나 이용 정책 개선
  • 평가와 개선을 반복하여 주도적으로 개발 및 운용
  • 위와 같은 내용을 실천하기 위해서는 이용 상황을 측정하는 것이 중요
  • 서비스마다 이용 상황, 조직마다 이용 상황을 측정한다
  • 사용자로부터 조사를 하여 피드백을 수집

  • 피드백을 바탕으로 확장
  • 확장에는 데이터, 유스케이스, 규칙의 확장이 있음
  • 아마존에서는 셀프서비스로 유저의 활용을 촉진함

마지막으로

데이터를 데이터레이크에서 어떻게 다룰까에 대한 세션이었습니다. 과거에 딥러닝 연구를 할 때 사용했던 데이터도 시간이 지나감에 따라 학습에 사용하는 데이터도 달라졌었는데요, 그 때에는 데이터의 크기가 그렇게 크지 않아서 단일 스토리지에 저장해서 사용했지만 규모가 커지면 이러한 데이터레이크가 필요하지 않을까 하는 생각이 들었습니다. 아직까지는 데이터레이크가 필요한 만큼의 큼직한 데이터를 다룰 기회는 없었지만 앞으로 어떻게 될지 모르니 이러한 데이터레이크에 대한 지식을 알아두는 것도 도움이 되지 않을까 싶습니다. 특히 메타데이터를 다루는 Glue라는 서비스가 재미있는데요 이 서비스에 관해서 블로그를 써볼까 생각하고 있습니다! 읽어주셔서 감사합니다.