Những công nghệ cần biết để trở thành một Data Engineer

2 tháng 8, 2021 By DEVERA ACADEMY

Trong lĩnh vực Software Development, khi các công nghệ ngày càng phát triển một cách đa dạng, nó sẽ kéo theo các khái niệm mới phù hợp thể hiện được vai trò và phạm vi hiểu biết của một developer. Có thể kể đến khái niệm về FullStack Developer - người có thể xây dựng sản phẩm từ FrontEnd, BackEnd cho đến Database.

Tương tự, ngành công nghiệp dữ liệu cũng đang phát triển mạnh mẽ với sự ra đời của Data Engineer (Kỹ sư dữ liệu). Không cần phải giỏi hay có hiểu biết về một lượng lớn các kỹ thuật, công nghệ giống như Full Stack Developer, ước mơ trở thành một Data Engineer không phải là quá khó khăn.

Một Data Engineer cần biết xây dựng hệ thống để cung cấp dữ liệu, làm cho dữ liệu có thể sử dụng được, di chuyển dữ liệu từ nơi này sang nơi khác, ... Mặc dù nhiều công ty còn đòi hỏi thêm một vài kỹ năng khác, nhưng những kỹ năng về Business Intelligent chắc chắn là cần thiết.

Trong bài viết này, chúng ta sẽ cùng điểm qua những công nghệ cực kỳ quan trọng để trở thành một Data Engineer. Việc thành thạo được tất cả những gì được liệt kê dưới đây là điều không thể, quan trọng là chúng ta cần phải hiểu và sở hữu cho mình một vài kỹ năng nhất định để có thể làm tốt hơn trong lĩnh vực kỹ thuật dữ liệu. Hơn nữa, đừng bao giờ chủ quan với kỹ năng mà mình có, bởi công nghệ mới sẽ luôn xuất hiện và các công nghệ cũ cũng không ngừng chuyển dịch! 

Database

Ngày càng có nhiều loại cơ sở dữ liệu khác nhau ra đời, nhưng khi nhắc đến cơ sở dữ liệu, thường người ta sẽ nghĩ ngay đến cơ sở dữ liệu quan hệ cùng với SQL.

Relational (OLTP)

Tất cả các cơ sở dữ liệu quan hệ, dù ít hay nhiều, đều hoạt động theo cùng một cách dù việc triển khai có sự khác biệt. Vậy nên, bạn nhất định cần biết sử dụng một hoặc hai trong bốn cơ sở dữ liệu quan hệ chính này:

The Big Four — Oracle, MySQL, MS SQL Server, PostgreSQL.

Warehouse (OLAP)

Theo định nghĩa, cơ sở dữ liệu quan hệ dựa trên OLTP dành cho giao dịch. Với từng yêu cầu như việc phân tích, xây dựng data lakes, data warehouses, data mart thì sẽ phù hợp với những cơ sở dữ liệu khác nhau. Về lý thuyết, bạn có thể tạo data warehouses bằng cách sử dụng cơ sở dữ liệu OLTP, nhưng ở quy mô lớn, nó không phải là một sự lựa chọn tốt.

Data warehouses có nhiều hệ thống quản lý cơ sở dữ liệu khác nhau, trong đó phổ biến nhất là Google BigQuery, Amazon Redshift, Snowflake, Azure Data Warehouse, ... Việc lựa chọn Data warehouses  thường được mặc định cho nhà cung cấp dịch vụ đám mây mà công ty đang sử dụng. Ví dụ: Nếu cơ sở hạ tầng của một công ty nằm trên AWS, thì họ chắc chắn muốn sử dụng Amazon Redshift làm kho dữ liệu của mình để giảm bớt sự phức tạp.

The Big Four — BigQuery, Redshift, Snowflake, Azure DW

Có thể tương lai của Cloud sẽ không phải là một đám mây mà có thể sẽ là cụm đám mây (multi-cloud) và các công ty sẽ có thể lựa chọn Data warehouses của họ với bất kỳ cơ sở hạ tầng nào mà không phải lo lắng quá nhiều về xung đột giữa các đám mây.

Các kiến thức khác

Các trường hợp khác nhau sẽ đặt ra các yêu cầu về giải pháp khác nhau. Ví dụ như:

  • Dữ liệu không gian địa lý yêu cầu cơ sở dữ liệu không gian địa lý như PostGIS.

  • Dữ liệu chuỗi thời gian đôi khi yêu cầu cơ sở dữ liệu chuỗi thời gian chuyên biệt như InfluxDB hoặc TimescaleDB.

  • Các cơ sở dữ liệu hướng tài liệu (Document-oriented databases) haylưu trữ key-value cũng đã tạo dựng được chỗ đứng của riêng mình trong hệ sinh thái cơ sở dữ liệu, bằng cách cung cấp những riện ích mà cơ sở dữ liệu quan hệ không thể làm được, có thể kể đến là khả năng lưu trữ, truy xuất và phân tích dữ liệu bán cấu trúc và phi cấu trúc một cách hiệu quả.

The Big Eight — MongoDB, InfluxDB, neo4j, Redis, Elasticsearch, CosmosDB, DynamoDB, Cloud Datastore.

Cloud

Với việc tích hợp điện toán đám mây với các nhà cung cấp dịch vụ đám mây như AWS, Azure và Google Cloud, các công ty nhỏ hơn không còn phải lo lắng về CapEx (Chi phí tài sản cố định) phát sinh từ cơ sở hạ tầng nữa.

Điều này quả thật không phải tin vui cho Data engineer khi một loạt các dịch vụ của tất cả các nhà cung cấp lớn đều có sẵn, chỉ tính phí khi bạn sử dụng (pay-what-you-use). Các công ty đã chuyển dần sang mô hình điện toán không máy chủ, trong đó cơ sở hạ tầng chỉ hoạt động khi việc tính toàn và bộ nhớ là cần thiết. Lưu trữ liên tục là một dịch vụ riêng biệt.

The Big Three — Google Cloud, Azure, AWS

Nên bây giờ đối với một Data Engineer, điều quan trọng là phải biết tất cả các dịch vụ đám mây được cung cấp bởi một trong ba nhà cung cấp dịch vụ đám mây. Chúng tôi sẽ lấy ví dụ về AWS. Nếu bạn là Data Engineer  đang làm việc trên AWS, bạn nên biết về S3 & EBS (để lưu trữ), EC2 & EMR (cho máy tính và bộ nhớ), Glue & Step Functions & Lambda (cho dàn xếp) và hơn thế nữa. Điều này cũng tương tự với các nhà cung cấp đám mây khác.

Orchestration - Điều phối quy trình

Air flow là sự lựa chọn tốt trong khoảng từ hai đến ba năm trở lại đây cho các nhóm kỹ thuật. Nền tảng đám mây thường có trang bị bộ điều phối riêng, ví dụ: với AWS, chúng ta có thể sử dụng kết hợp Glue, Step Function và Lambda. Google Cloud thì cung cấp phiên bản Airflow được quản lý hoàn toàn trên đám mây có tên Cloud Composer. Azure cũng cung cấp các dịch vụ tương tự.

The Big One — Airflow

Một số công cụ điều phối, quy trình làm việc và quy trình ETL tuy cũ nhưng vẫn tốt và vẫn còn phù hợp, có thể kể đến Talend vẫn được sử dụng rộng rãi.

ETL

Sau khi xem xét thì SQL vẫn là lựa chọn tốt nhất để thực hiện ETL cho đến nay. Gần đây, nhiều công nghệ khác như Spark đã xuất hiện, cung cấp không gian lưu trữ lớn, tốc độ tính toán nhanh hơn bằng cách xử lí song song các hoạt động của chương trình với nhiều bộ vi xử lí (MPP)

Trong quá khứ, ETL đã được thực hiện chủ yếu bằng cách sử dụng một phần mềm độc quyền. Nhưng hiện nay, có nhiều bộ công cụ mã nguồn mở có sẵn trên thị trường để cộng đồng sử dụng. Ngoài ra, còn có một loạt các giải pháp ETL được quản lý đầy đủ do các công ty chuyên về tích hợp dữ liệu và ETL cung cấp, có thể kể đến như Fivetran, Panoply và Stitch. Hầu hết các công cụ này hoàn toàn là các câu lệnh SQL được lập lịch hoặc được kích hoạt để lấy dữ liệu từ một cơ sở dữ liệu và chèn nó vào một cơ sở dữ liệu khác. Điều này có thể dễ dàng đạt được bằng cách sử dụng Airflow (hoặc tương tự).

Fishtown Analytics’s dbt là một trong những công cụ chỉ tập trung vào việc giải quyết các vấn đề của lớp Transformation trong ETL. Thực tế, điểm thu hút lớn nhất của công cụ này là dbt hoàn toàn dựa trên SQL.

Infrastructure

DevOps ngày càng phát triển mạnh và được chia thành ba khái niệm riêng trong vài trở lại đây bao gồm: core DevOps, DataOps và DevSecOps. Nhờ vậy Data Engineer có thể nắm được cơ sở hạ tầng (infrastructre) bao gồm các tech stack đang sử dụng để giải quyết các vấn đề hoạt động liên quan đến cơ sở hạ tầng - database, data pipelines, data warehouses, orchestrators, storage, ...

Dành cho việc cung cấp cơ sở hạ tầng và bảo trì, có một số công cụ độc lập với nền tảng đám mây như Pulumi và Terraform có sẵn trên thị trường. Các công cụ dành riêng cho nền tảng như CloudFormation (dành cho AWS) cũng đã được sử dụng rộng rãi.

The Big Two — Terraform, Pulumi

Nếu bạn đã trót say mê vào một tương lai đầy hứa hẹn từ multi-cloud, thì bạn nên biết ít nhất một trong hai công cụ Infrastructre-as-code(IaC) nói trên. IaC đi kèm với những lợi ích riêng của nó như dễ dàng triển khai cơ sở hạ tầng bất biến, tăng tốc độ triển khai, ...

CI/CD

Cho dù triển khai cơ sở hạ tầng hay tập lệnh SQL, hoặc mã Spark, thì việc tích hợp và triển khai liên tục (CI/CD) là một tiêu chuẩn để thực hiện. Đã qua rồi cái thời khi các kỹ sư sử dụng quyền truy cập vào máy móc, đăng nhập vào cơ sở dữ liệu và thực thi DDL cho một quy trình được lưu trữ trên máy chủ cơ sở dữ liệu.

The Big Four — Jenkins, AWS CodePipeline, Google Cloud Build, Azure DevOps


Testing

Công việc của Data Engineer là cung cấp dữ liệu cho các nhà khoa học dữ liệu, nhà phân tích dữ liệu và doanh nhân. Nếu không thử nghiệm thì bất kỳ dự án nào cũng có nguy cơ thất bại thảm hại. Thử nghiệm một cách thủ công rất kém hiệu quả và thành thật mà nói, rất khó để thực hiện với quy mô lớn.

The Big Two — Pytest, JUnit

Vì vậy, cách tốt nhất là tự động hóa các cuộc thử nghiệm. Bất kỳ framework kiểm tra tự động nào cũng có sẵn để kiểm tra mã code backend cũng như các thành phần trong Kỹ thuật dữ liệu. Bạn cũng có thể sử dụng các công cụ như dbt để kiểm tra tự động hóa. Ngoài ra còn có các công cụ được sử dụng rộng rãi như Cucumber, Gherkin cho BDD đều có sẵn. Pytest, JUnit và những thứ khác cũng được sử dụng.

Source Control

Source code chính là nơi chúng ta kiểm soát mọi thứ. Các pipilines, các DDL cơ sở dữ liệu, mã điều phối, các testcase,...

Language

Nếu hỏi ngôn ngữ nào Data Engineer nên sử dụng thì Python là lựa chọn tốt nhất. Nhưng có rất nhiều công nghệ hiện nay được xây dựng trên Java & Scala. Toàn bộ hệ sinh thái Hadoop dựa trên Java. Talend - công cụ điều phối + ETL cũng được viết bằng Java.

Tuy nhiên, không phải ai cũng phải biết cả hai ngôn ngữ này. Hầu hết các công nghệ được sử dụng rộng rãi hiện nay đều hỗ trợ cho nhiều ngôn ngữ khác nhau giúp cho Data dễ dàng sử dụng hơn. Ví dụ phổ biến nhất về điều này là PySpark cho phép Data Engineer sử dụng Python để tương tác với Spark.

The Big Three — SQL, Python, Java.

Nếu có một ngôn ngữ mà các Data Engineer nên hiểu, thì đó chính là SQL. Vì nó là ngôn ngữ mà dữ liệu dùng để nói.


Data Engineer là sự kết hợp của tất cả những điều chúng ta đã nói đến trong phần này và có thể là một số kỹ năng khác nữa. Và cuối cùng, hãy nhớ rằng việc làm chủ tất cả những công nghệ này là không thể, nhưng chắc chắn chúng ta có thể hiểu và sử dụng tốt được một số công nghệ được nói ở trên, nó thực sự cần thiết ở cả hiện tại và tương lai.


Tác giả: Kovid Rathee

Dịch bởi Devera Academy