Data Engineer's Toolbox

MisCaminos·2021년 2월 13일
0
post-thumbnail

Data engineer는 data를 available, usable하게 만들어주는 system을 디자인하고 세우는 역할을 한다. 기업 (or any type of organization)에서 다루어야하는 data의 다양성과 규모가 크고 넓어질 수록 data engineer에게 요구되는 역할도 커진다. 마치 full stack developer와 같이 data engineer는 매우 넓은 영역의 technologies를 갖추어야한다.

Data Engineer의 stack에는 어떤 technologies가 포함되는지 알아보았다.

Databases

Relational(OLTP)
OLTP는 Transactional loads를 다루는 database이다.

4 major databases: Oracle, MySQL, MS SQL Server, PostgreSQL

얼마나 복잡하고 advanced된 system을 사용하든, 거의 모든 기업이 relational database를 사용한다. 보통 적어도 2개이상의 database 다룰줄 알아야한다.
현재 DB ranking을 보여주는 website <db-engines.com>

Warehouses(OLAP)
OLAP는 analyical loads, data lakes, data warehouse, data mart를 위한 database이다. OLAP는 다른 database management system을 갖고있으며, scale이 있는 data를 다룰때에는 OLTP보다는 OLAP를 사용해야한다.

Major databases: BigQuery(Google), RedShift(Amazon), Snowflake, Azure Data Warehouse(Microsoft)

대부분 기업에서 사용하는 cloud service 회사와 동일한 회사의 data warehouse를 사용한다. (AWS를 infra로 사용한다면, data warehouse로 RedShift를 사용) 추후에는 하나의 cloud service만 사용하기보다는 multi-cloud service를 사용하게 될것이다. 앞으로 data warehouse를 선택하는데에는 inter-cloud friction을 크게 우려하지 않게될 것으로 예상된다.

Others
사용 case에 따라서 알맞는 database를 선택해야한다.
Geospatial data를 다룬다면 geospatial databases: PostGIS,
time-series data를 다룬다면 InfluxDB or TimescaleDB와 같이 time-series에 특화된 database를 활용한다.
Document-oriented databses, key-value stores를 활용해서 기존 relational database와는 다르게 semi-structured 또는 unstructured data를 다룰 수 있다.

Major ones: MongoDB, InfluxDB, neo4j, Redis, Elasticsearch, CosmosDB, DynamoDB, Cloud Datastore

Cloud

Major cloud services는 pay-what-you-use basis로 작은 기업에게도 큰 금전적인 부담 없이 infrastructure을 사용할 수 있도록 service를 제공한다. 그래서 많은 기업들이 severless computing model로 이동했고 infrastructure은 compute & memory가 필요할때만 사용한다.

3 major ones: Google Cloud, Azure, AWS

Data engineer는 적어도 한개이상의 cloud provider 제공하는 data-related cloud services를 용할 수 있어야한다. 예를 들어 AWS를 사용한다면, storage를 위한 S3 & EBS를, compute & memory를 위한 EC2 & EMR을, orchestration을 위한 Glue & Step Functions & Lambda를 알아야한다.

Orchestration

cloud platform은 자신만의 orchestrator를 갖고있다. AWS의 경우 Glue, Step Function, Lambda를 함께 사용한다. Google Cloud의 경우 Cloud Composer (a fully-managed cloud version of Airflow)를 사용할 수 있다.

Major one: Airflow

ETL

예전에 ETL은 proprietary software를 사용하여 진행되었었다. 그러나 지금은 open source toolkit을 사용한다. Data integration과 ETL을 위해 fully-managed ETL solution이 제공된다. Fivetran, Panoply, Stitch와 같은 tool은 purely scheduled or triggereed SQL statement를 통해 하나의 database에서 data를 가져와서 다른 database에 insert할 수도 있다.

Major ones: SQL, Spark

ETL에서 Transformation layer 문제들을 tackle하기 위해 Fishtown Analytic's dbt라는 tool이 사용된다. dbt는 SQL-based이기 때문에 보다 쉽게 접근할 수 있다.

Infrastructure

Data engineer은 infrastructure의 operational issue들을 이해하고 해결할 수 있어야한다. 주로 database, data pipelines, data warehouses, orchestrators, storage등에 관련된 issue들이다.

Infrastructure을 제공하고 유지보수하기 위해서는 cloud platform에서부터 독립적인 Pulumi와 Terraform과 같은 tool이 사용된다. 이런 tool은 Infrastructure-as-Code(IaC)라고도 불린다.

Major ones: Terraform, Pulumi

또한, 특정 cloud platform와 연관된 tools - CloudFormation (for AWS)도 많이 사용된다.

CI/CD

Continuous integration(CI), contnuous deployment(CD) 방식을 구현한기위한 tool을 사용할 수 있어야한다. 예전에는 stored procedure또는 database server를 다루기위해 data engineer가 machine을 access하고 database에 login한 후, DDL을 execute하는 단계를 밟았지만 지금은 CI/CD가 표준방식이 되었다.

4 major ones: Jenkins, AWSCodePipeline, Google Cloud Blind, Azure DevOps

Testing

Analyses, modelin등 project의 목적에 맞게 data가 사용될 수 있도록 data를 준비하려면 testing 단계를 거쳐야한다. Testing에 소모되는 시간과 cost를 감소시키기위해 automatic testing framework을 사용해서 testing을 진행한다.

2 major ones: Pytest, JUnit

이외에도 dbt, Cucumber, Gherkin (for BDD)도 automation testing에 사용될 수 있다.

Source Control

특히 team collaboration을 위해 version control system (Git, Mercurial, Subversion)을 사용하는데에 익숙해져야한다.

use GitHub for SQL source control

참고: "How to version control a database using GitHub and SQL Source Control by Sjors Takes from red-gate.com"

Languages

data 관련 작업에 당연히 python이 많이 사용되지만, data engineering에 필요한 많은 technologies가 Java와 Scala로 형성되어 있다. Hadoop ecosystem 전체가 Java에 base되어있고, Talend(orchestrator + ETL tool)또한 Java로 만들어져있다.

그리고 data handling에 반드시 필요한 SQL을 사용할 수 있어야한다.

3 major ones: SQL, Python, Java, Scala

key concepts & terms

Medium에서 data engineer가 많이 사용하는 아이디어/용어들을 간단한 dictionary로 정리한 posting이 있다. A부터 Z까지 여기!



References:
1. What I learned from being a startup's first Data Engineer by Andre Sionek from Medium
2. Complete Data Engineer's Vocabulary by Kovid Rathee from Medium
3. The New Data Engineering Stack by Kovid Rathee from Medium

profile
Learning to code and analyze data

0개의 댓글