Data Engineer làm việc gì?
Theo lý thuyết trên internet, Data Engineer (kỹ sư dữ liệu) là người xây dựng hệ thố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ư website, database hoặc API. Hệ thống này hỗ trợ Data Analyst, Data Scientist, Business Intelligence và các nhu cầu khác.
Theo tôi, Data Engineer cần biết về Backend và DevOps. Nhiều người nghĩ Data Engineer cần biết Machine Learning (ML), AI nhưng thực tế không cần, trừ khi muốn trở thành chuyên gia đa năng như tôi.
Làm thế nào để trở thành Data Engineer?
Đây là câu hỏi phổ biến nhất, khoảng 70% Data Engineer bắt đầu từ Software Engineer (SWE), tôi cũng như vậy. Tuy nhiên, Data Engineer tập trung hơn vào hệ thống, xử lý và pipeline hơn là lập trình ứng dụng. Tôi tổng hợp kiến thức cần thiết để trở thành Data Engineer như sau:
Kiến thức cần biết cơ bản
Data Modelling (mô hình hóa dữ liệu), Data Warehouse (kho dữ liệu), Data APIs (API cho dữ liệu) và Datalake.
SQL và Python, nếu có thêm Scala càng tốt.
Spark để xây dựng hệ thống dữ liệu. Mọi người ít nhất phải hiểu cách Spark hoạt động và viết ứng dụng Spark.
Kỹ năng nâng cao để hỗ trợ trong phỏng vấn và công việc
Nếu bạn hiểu những điều trên, bạn đã qua được bước đầu trong quá trình tìm việc. Tôi sẽ giới thiệu về Kiến trúc hệ thống (System Architect) và phân loại dựa trên vị trí tuyển dụng.
Hệ thống trên nền tảng vật lý: Hadoop, Map Reduce, HBase (các công nghệ Big Data) thường được sử dụng bởi các tập đoàn lớn. Họ xây dựng hệ thống riêng vì lý do bảo mật, không thể lưu trữ dữ liệu trên đám mây. Ví dụ như ngân hàng, công ty tài chính, Facebook, Google…
Dịch vụ Đám mây như AWS, GCP, Azure, Ali Cloud thường được các startup, công ty công nghệ sử dụng vì tính linh hoạt. Ví dụ như Uber, Grab, Shopee, Lazada… họ sử dụng Đám mây cho sản phẩm của mình.
Mặc dù tôi chia hệ thống thành hai phần để dễ hiểu, nhưng ở một số công ty, cách phân chia này có thể khác nhau tùy thuộc vào nhóm làm việc. Ví dụ như ở AirAsia, nhóm dữ liệu của bộ phận Nghiên cứu và Phát triển sử dụng Google Cloud. Nhưng bộ phận khác như tài chính lại sử dụng Big Data trên hệ thống vật lý (on-premise).
Về công việc của đội Data Engineer
Đội của tôi phân chia Data Engineer thành 2 nhánh: pipeline và platform (cơ sở hạ tầng). Với cái tên “all-round” được sếp giao, tôi đảm nhận cả 2 lĩnh vực, dưới đây là một số dự án mà tôi đã tham gia.
Platform (Cơ sở hạ tầng)
Hệ thống Lịch trình - làm việc với lịch trình theo giờ, ngày, tháng hay năm để thực hiện một công việc nào đó. Hiện tại, tôi đang sử dụng Airflow - công nghệ mạnh và hot nhất hiện nay. Công việc chính của tôi là cài đặt và duy trì hệ thống Airflow để xử lý được khoảng 2000+ nhiệm vụ. Bên cạnh đó, vì hệ thống hỗ trợ nhiều nhóm khác nhau, kỹ thuật và không kỹ thuật, tôi cũng phải thiết lập CI/CD để mọi người có thể sử dụng Airflow một cách dễ dàng.
Kho Dữ liệu / Hồ Dữ liệu - xây dựng, duy 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 tôi không đi sâu vào nó nữa.
Nền tảng Khoa học Dữ liệu - là hệ thống dành cho Data Scientist. Thường xuyên sử dụng cho các model nhỏ, dữ liệu ít và không yêu cầu bảo mật cao, các nhà nghiên cứu có thể tự do làm việc trên máy tính cá nhân. Tuy nhiên, do các quy định bảo mật và lượng dữ liệu lớn tương đương với Petabytes, công ty tôi phải xây dựng một hệ thống riêng để xử lý công việc này, đó là mục đích chính của Nền tảng Khoa học Dữ liệu. Nếu quan tâm, bạn có thể tìm hiểu về Kubeflow, tuy nhiên, tôi không sử dụng nó mà tự xây dựng toàn bộ vì sở thích cá nhân.
Ngoài ra, còn có 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 (Đường ống)
Về pipeline, tôi làm ít hơn so với phần cơ sở hạ tầng nhưng cũng có một số dự án nhất định. Chủ yếu làm về ETL (Extract — Load — Transform).
ETL - Chủ yếu là yêu cầu từ đội phân tích. Ví dụ như một đồng nghiệp team phân tích yêu cầu dữ liệu về giao dịch từ tháng 11 đến tháng 12 năm 2018 để phân tích, nhưng không tìm thấy trong Datalake. Tôi sẽ tìm nguồn dữ liệu từ Backend Database hoặc 3rd party API, đồng bộ vào Datalake để họ sử dụng.
Data API - giống như ứng dụng của Backend. Tôi sẽ viết Spark Job lấy dữ liệu từ Datalake và xử lý theo yêu cầu, lưu vào database (Mysql, Postgres, Elastic Search). Cuối cùng, viết Rest API để kích hoạt Spark Job. Team backend chỉ cần gọi Rest API để sử dụng dữ liệu.
Dữ liệu Real-time - lấy dữ liệu thời gian thực từ Kafka và đưa vào Datalake.
Tóm lại, đây là công việc của Data Engineer. Còn nhiều điều thú vị hơn tôi chưa trải nghiệm, khi có sẽ cập nhật thêm.
Nguồn: Cảnh | Calvin | Data Guy Story
💥Facebook: https://www.facebook.com/MyBookConfession/
💥 Website: https://MyBook/
💥 Youtube: https://www.youtube.com/channel/UCMbyNXjY1E-wAfktiVYNRyg