Lần trước tui đã giới thiệu tui là Data Engineer, chắc nhiều người cũng tò mò Data Engineer là thế nào. Vơ vét 3 năm kinh nghiệm lăn lộn giang hồ, tui tự tin múa vài đường cho anh em biết thêm về cái nghề này.

Data Engineer là làm gì ?

Theo lý thuyết trên mạng, Data Engineer (kỹ sư dữ liệu) là người xây dựng hệ thống dùng để tổng hợp, lưu trữ, xử lý hoặc xuất dữ liệu từ các nguồn khác nhau. Những nguồn này có thể kể đến như từ website, database hoặc một api nào đó. Hệ thống xây dựng bởi Data Engineer thường phục vụ cho Data Analyst, Data Scientist, Business Intelligence và một số nhu cầu khác.

Theo tui, Data Engineer điều bắt buộc là phải biết thêm về Backend và Devops. Nhiều anh em hay nhầm lẫn Data Engineer thì phải biết Machine Learning (ML), AI này nọ nhưng thật ra hoàn toàn không cần biết mấy cái đó, trừ khi muốn làm “All-round” data như tui.

data-engineer

Làm sao trở thành Data Engineer ?

Đây là câu hỏi nhiều người đặt ra nhất, đa số gần 70% Data Engineer đều xuất phát từ Software Engineer (SWE), tui cũng là một trong số đó. Tuy nhiên khác với SWE, Data Engineer thiên về hệ thống, xử lý và pipeline hơn là lập trình ứng dụng. Tui tổng hợp kiến thức cần có để trở thành Data Engineer lại như sau:

Cơ bản bắt buộc phải biết

  • Data Modelling (mô hình hóa dữ liệu), Data Warehouse (kho dữ liệu), Data APIs (Restful API cho data) và Datalake.
  • SQL và Python, nếu Scala nữa càng tốt.
  • Spark để xây dựng hệ thống data. Tối thiểu mọi người phải hiểu được Spark vận hành như thế vào và viết được Spark Application.

Kĩ năng nâng cao để hỗ trợ lúc phỏng vấn và làm việc

  • Các công cụ liên quan đến Datalake / Data Warehouse: Presto, Hive. Ví dụ như cách thiết lập cài đặt Presto, Hive để kết nối vào Data warehouse; tối ưu hóa công cụ để có thể cho nhiều users sử dụng một lúc.
  • Devops: Docker, Kubernetes - dùng để deploy services, data application. Thật lòng chia sẻ luôn: “giờ ông nào mà không biết Docker thì bỏ nghề đi nghen” (Toidicodedao có bài full hd hẳn hoi về Docker đó, anh em bay vào tham khảo nha).
  • Hệ thống message publish - subscribe (pub-sub) phân tán như Kafka để lấy dữ diệu vào Datalake và xuất dữ liệu ra cho dễ sử dụng.
  • Machine learning: build model như thế nào? deploy model lên production như thế nào? tuning/optimise model ra sao… Biết sơ sơ đủ hiểu yêu cầu của tụi Data Scientist thôi, không nhất thiết phải vô sâu.
  • Ngoài ra còn một số tool khác như: Airflow để tạo lịch trình; Grafana để monitor (theo dõi) hệ thống; Tableau, PowerBi, Holistic… vẽ biểu đồ dựa trên data.

Biết được những điều kể trên thì xin chúc mừng anh em đã qua pass được vòng gửi xe rồi đó. Bây giờ tui giới thiệu qua về System Architect (kiến trúc hệ thống). Tùy theo vị trí tuyển dụng của từng công ty mà tui chia ra làm 2 phần chính.

  • On premise system: Hadoop, Map Reduce, HBase (full bộ Big Data) chủ yếu được sử dụng bởi tập đoàn lớn. Vì lý do bảo mật, data của họ không thể đưa lên cloud và họ tự xây dựng hệ thống máy chủ riêng biệt. Ví dụ như ngân hàng, công ty tài chính, tập đoàn lớn như Facebook, Google…
  • Các dịch vụ Cloud như AWS, GCP, Azure, Ali Cloud chủ yếu được sử dụng bởi những startup, công ty công nghệ vì khả năng linh động của nó. Có thể kể ví dụ như Uber, Grab, Shopee, Lazada…sản phẩm của họ đã và đang chạy trên Cloud.

Tuy tui chia hệ thống ra làm hai phần cho dễ hình dung, nhưng ở một số công ty nó lại phụ thuộc vào team. Ví dụ như ở AirAsia, bạn tui ở data team của bộ phận R&D (Research and Development) thì sử dụng Google Cloud. Nhưng công ty thì có hệ thống máy chủ vật lý (on premise) nên data team của bộ phận khác như tài chính thì đang sử dụng big data trên hệ thống đó.

Về công việc của team Data Engineer

Team tui chia Data Engineer ra thành 2 nhánh nhỏ hơn gọi là pipeline và platform (infrastructure). Được cái sếp cho tui cái title “all-round” engineer nên làm luôn cả 2 mảng, dưới đây là một số dự mà tui từng tham gia.

Platform (Infrastructure)

  • Scheduler System - đại loại là hệ thống tạo lịch trình (schedule) theo giờ, ngày, tháng hay năm để thực hiện một công việc nào đó. Project này đang sử dụng Airflow - công nghệ hot và mạnh mẽ nhất hiện nay. Công việc chính của tui là set up hệ thống và bảo trì Airflow để có thể chịu tải khoảng 2000+ tasks. Ngoài ra vì hệ thống hỗ trợ nhiều team khác nhau, cả tech và non-tech, nên tui phải thiết lập CI/CD sao cho mọi người dễ dàng sử dụng Airflow.
  • Data Warehouse / Datalake - xây dựng, bảo trì kho dữ liệu (Data Warehouse) hoặc “hồ dữ liệu” (Datalake). Đây có thể coi là dự án cơ bản nhất mà Data Engineer nào cũng phải làm qua nên tui sẽ không nói thêm về nó nữa.
  • Data Science Platform - là một hệ thống được sử dụng bởi Data Scientist. Thông thường với model nhỏ, data ít và không bảo mật, mọi người có thoải mái xử lý trên máy cá nhân. Nhưng vì công ty tui có rất nhiều quy định nghiêm ngặt về bảo mật và lượng data tính bằng Petabytes nên bắt buộc phải xây dựng một hệ thống riêng chỉ để xử lý việc này, đó chính là mục đích chính của Data Science Platform. Anh em hứng thú cái này thì có thể xem Kubeflow, tui thì không xài mà xây dựng toàn bộ vì tui thích.
  • Ngoài ra còn xây dựng các hệ thống khác như Spark, Kafka, CI/CD, Hive, Presto…vân vân và mây mây…

Pipeline

Pipeline thì tui làm ít hơn bên platform nhưng cũng có la liếm vào được mấy cái projects. Đa phần làm về ETL (Extract — Load — Transform).

  • ETL - Chủ yếu là yêu cầu từ team analytics. Ví dụ như một bạn nữ xinh đẹp team analytics bảo rằng bạn ấy cần dữ liệu về transaction từ tháng 11 đến tháng 12 năm 2018 để phân tích, nhưng bạn ấy lại không tìm thấy nó trong Datalake. Tui sẽ là con sen đi kiếm Data Source về, có thể bên Backend Database hoặc 3rd party API nào đó, cuối cùng đồng bộ vào Datalake để bạn ấy sử dụng.
  • Data API - dự này giống giống như application của Backend. Tui sẽ viết Spark Job lấy data từ Datalake và xử lý data theo yêu cầu. Kết quả sẽ được lưu vào database (Mysql, Postgres, Elastic Search). Cuối cùng tui viết thêm Rest API để trigger (kích hoạt) Spark Job. Như vậy khi nào cần data thì team backend chỉ việc gọi Rest API để sử dụng.
  • Streaming data - cái tên nói lên tất cả. Lấy dự liệu Real-time (thời gian thực) từ Kafka và đưa vào Datalake.

Sơ qua nhiêu đây là anh em có thể tưởng tượng được công việc của Data Engineer như thế nào rồi. Còn nhiều cái khác thú vị hơn mà tui chỉ mới có đụng vô được nhiêu đây thôi, khi nào làm cái gì mới tui sẽ update bài post này tiếp hen.

Tóm lại anh chị em nghe Data Engineer ghê gớm vậy thôi chứ làm công việc đơn giản không à. Ai có ý kiến gì về cái nghề này hay bổ sung thêm thì để lại feedback hoặc comment cho tui biết cải thiện nha. Cám ơn mọi người.

Credits: hình ảnh được lấy từ Unsplash