사내 M/L 개발자 '고강빈'님의 강의자료 입니다.
“우리의 온라인 활동에서 나오는 데이터는 그냥 사라지는 것이 아니다.
이러한 디지털 흔적들을 모으고 분석하면 매년 1조 달러 규모의 가치를 창출하는 산업이 된다.”다큐멘터리 영화, <거대한 해킹 (The Great Hack)> 중
⇒ 데이터 기반 의사결정을 주도하는 데이터 플랫폼과 관련된 모든 일
1) CS Fundamental
- 자료구조 & 알고리즘
- 수학 & 통계학
- 컴퓨터 구조
- 네트워크
- Linux (OS)
- CLI, Vim
- Shell Scripting
- Cronjobs
- 기타 개발 지식
- 터미널 사용법
- REST API
- Git Version Control
- …
2) Programming Language
- Python (떠오르는 신예)
- Java (전통의 강자)
- Scala
- Go
3) Testing
- Unit testing
- Integration testing
- Functional testing
4) Database Fundamental
- SQL
- Normalization
- ACID transaction
5) DBMS
- MySQL, PostgreSQL, MariaDB, Amazon Aurora, …
- MongoDB, Elasticsearch, Apache Casandra, Neo4j, Redis, …
6) Data warehouse & Object Storage
- Snowflake, Presto, Apache Hive, Google BigQuery, …
- AWS S3, Azure Blob Storage, Google Cloud Storage
7) Cluster computing fundamentals
- Apache Hadoop, HDFS, Managed Hadoop
- MapReduce
- Lambda & Kappa Architectures
- Amazon EMR, Google Dataproc, Azure Data Lake
8) Data Processing
- Batch
- Streaming
- Hybrid
9) Messaging
- Amazon SNS & SQS, Azure Service Bus, Google PubSub
- RabbitMQ, Apache ActiveMQ
10) Workflow scheduling
- Apache Airflow, Google Composer, Apache Oozie, Luigi
11) Monitoring pipelines
- Prometheus
- Datadog
- Sentry
- StatsD
12) Infrastructure
- Containers: Docker
- Orchestration: Kubernetes, Docker Swarm, GKE
- Provisioning: Terraform, AWS CDK
13) CI/CD
- GitHub Actions, Jenkins
14) Data Security & Privacy
로그 스토리지, 거래정보 DB, 사용자 정보 DB 등에서 추출(Extract)해서 분석하기 편한 스키마로 변환(Transform)한 후 분석 및 시각화용 DB 또는 스토리지에 적재(Load)하는 프로세스
→ 실제 서비스 데이터가 수집되는 DB ≠ ETL에 의한 분석 DB
수집 → 저장 → 처리 ⇒ ELT
“몇 년 동안 대중을 몰래 감시해온 저희로서는 수 많은 사람들이 자발적으로 자신의 거주지와 종교적 정치적 견해, 순서대로 정리한 친구 목록, 이메일 주소, 전화번호, 자신이 찍힌 수백 장의 사진, 현재 하고 있는 활동 정보를 공개하고 있다니 놀랍기 그지 없습니다. CIA로서는 꿈에 그리던 일이지요.”
크리스토퍼 사르틴스키, CIA 부국장
스트림 처리가 더 좋은가?
그럼 배치 처리?
⇒ 두 아키텍처는 상호 보완적 관계
스트림 처리의 문제점을 장기 저장소와 안정적인 배치 처리로 보완하는 것이 핵심
⇒ 카파 아키텍처의 등장으로 이어짐
→ 두 처리 방식의 결과물을 병합하기 위한 리소스 절약
→ 단일 파이프라인과 단일 뷰로 개발/운영 효율화
⇒ 분산처리, Scale-Out, Cloud Computing
“넷플릭스 서비스 역시 빠른 속도로 진화함에 따라 많은 리소스를 차지하는 새로운 기능이 다수 도입되고 데이터 사용량도 지속적으로 증가해 왔습니다. 넷플릭스의 기존 데이터 센터가 이러한 급성장을 지원하기란 매우 어려웠지요. 그러나 클라우드의 탄력성 덕분에 이제 수천 개의 가상 서버와 페타바이트급(PB) 저장 용량을 불과 몇 분 내에 추가할 수 있게 되었습니다. 이에 전 세계에 분산된 AWS 클라우드 지역을 기반으로 글로벌 인프라를 유연하게 활용하고 그 역량을 확대할 수 있게 되었으며, 언제 어디서나 더 편안하고 즐겁게 콘텐츠를 스트리밍할 수 있는 환경이 조성되었지요.”
유리 이즈라일예브스키, 넷플릭스 클라우드&플랫폼 엔지니어링 부사장