Nổi bật

Mời các bạn ghé trang blog kỹ thuật trên medium

Xin chào quý bạn đọc giả, lại một tuần nữa trôi qua, không biết các bạn đã giành thời gian cho bản thân, gia đình và bạn bè như thế nào rồi. Đến hẹn lại lên, tôi sẽ tiếp tục bài chia sẻ của mình trên blog cá nhân của mình. Tuy nhiên, lần này sẽ khác với mọi khi, tôi quyết định sẽ chuyển nhà sang medium vì một vài lý do sau.

Thứ nhất, các bài chia sẻ sắp tới chủ yếu liên quan đến kỹ thuật nên cần một platform đáp ứng được format code theo chuẩn Markdown để trình bày những đoạn code được rõ ràng hơn và medium đáp ứng được nhu cầu này.

Thứ hai, wordpress hiện đã loại bỏ tính năng này và đòi hỏi phải nâng cấp lên business plan – 31$/monthly tức 372$/yearly xấp xỉ 8.7tr VND/năm, mới cho phép cài đặt plugin code highlight vào hệ thống như vậy rất tốn chi phí.

Sau cùng, các thuật ngữ tiếng Anh ngày càng nhiều và chuyên sâu, việc dịch ra tiếng Việt tuy sẽ tốt cho các bạn đọc giả khi mới bắt đầu nhưng về lâu dài sẽ khiến bài viết luộm thuộm song ngữ xen kẽ nên tốt nhất tôi quyết định dùng tiếng Anh trong các bài viết kỹ thuật của mình.

Các bài viết chia sẻ về cảm nhận và trải nghiệm tôi vẫn sẽ tiếp tục chia sẻ ở đây. Rất mong các bạn thông cảm.

DataOps 02: Spawn up Apache Spark infrastructure by using Docker.

DataOps 01: Stream data ingestion với Redpanda

Stream data ingestion

Trong bài viết What’s Next for Data Engineering in 2023? 7 Predictions, một trong những dự báo tôi đồng tình đó là Prediction #6: Data warehouses and data lakes use cases start to blur nghĩa là ta sẽ dần hợp nhất structured data và unstructured data về cùng một chỗ.

Ắt hẳn khi xây dựng Data Platform, các bạn đã từng nghe đến mô hình Kappa ArchitectureLambda Architecture. Trong kiến trúc Lambda, ta sẽ chia batch data và stream data làm hai nhánh để lưu trữ, xử lý và truy vấn dữ liệu giúp cho việc quản lý được tách bạch nhưng workload của Data Engineer sẽ bị đội lên do phải quản lý hai hệ thống cùng lúc. Ngược lại, kiến trúc Kappa hướng đến việc hợp nhất hai nhánh batch và stream lại với nhau, sau đó dùng cơ chế federated query để có thể cùng lúc lưu trữ, xử lý cũng như truy vấn dữ liệu.

Chúng ta vẫn thường thiết kế và xây dựng theo Lambda nhiều hơn Kappa dù tư tưởng của Kappa mang lại giá trị hơn về tốc độ cũng như khả năng tích hợp các microservice in real-time. Lý do khiến mọi người e ngại khi áp dụng Kappa đó là ta cần một đội ngũ rất skillfull đứng đằng sau cơ sở hạ tầng Event Driven Hub phức tạp nhằm quản trị và đảm bảo hệ thống vận hành 24/7.

Kafka là đàn anh trong distributed event streaming platform từ trước tới nay. Kafka đã đặt ra tiêu chuẩn cho các hệ thống event streaming tương tự sau này. Đã có nhiều doanh nghiệp áp dụng thành công Kafka vào trong vận hành, từ phân tích báo cáo real-time, data migration cho tới những ứng dụng AI có khả năng tương tác tốc độ cao. Tuy nhiên, khi xây dựng Kafka từ đầu, ta cần một đội DevOps có kỹ năng chuyên môn rất vững để có thể vận hành trơn tru. Vậy có đàn em nào khác cũng có sức mạnh tương tự nhưng lại dễ tiếp cận hơn không?

Redpanda là một trong những đàn em đó. Không những dễ tiếp cận trong việc quản lý, chi phí xây dựng nền tảng thấp hơn mà nhờ đó công việc của các system admin cũng đỡ vất vả hơn. Hai tính chất chính giúp cho Redpanda cho tốc độ nhanh 10x và chi phí giảm 6x đó là nhờ loại bỏ Zookeeper thay bằng Raft algorithm, code bằng C++ nên không phải đụng đến JVM. Redpanda đã được kiểm chứng bằng thực nghiệm với 200 giờ chạy test. Đặc biệt Redpanda hoàn toàn có thể tương thích với Kafka ecosystem như Kafka connect giúp ta chuyển đổi công nghệ dễ dàng hơn.

Trong bài viết này, tôi sẽ tiến hành cài đặt Redpanda như một broker sử dụng cho việc ingesting data. Các bạn có thể sử dụng link github ở đây để tiến hành cài đặt lại: https://github.com/ongxuanhong/de01-stream-ingestion-redpanda-minio

  • Data source sẽ là MySQL giả lập dữ liệu vận hành của doanh nghiệp, cụ thể là giao dịch đặt hàng của user. Bên cạnh đó sẽ là clickstream events giả lập quá trình tương tác của user trên website ecommerce.
  • Target sink ta có thể dùng S3, GCS hay Azure Blob để làm nơi lưu trữ phân tán. Tuy nhiên, tôi muốn bài viết dễ cài đặt với đa số bạn đọc, không cần tạo tài khoản trên cloud provider nên đã quyết định dùng MinIO để thay thế.
  • Để vận chuyển dữ liệu source/sink tôi sẽ cài đặt debezium cho MySQL và Kafka connect cho MinIO.

Qua năm mới 2023, tôi cũng xin chúc các bạn sẽ gặt hái được nhiều thành công trong sự nghiệp, gia đình luôn bình an và hạnh phúc.

MLOps 01: Data testing, tại sao, cái gì và như thế nào

Tôi không thích viết test và các bạn tôi cũng thế. Tại sao mình phải double công việc lên để viết test, sai thì sửa lại nhanh thôi, đâu cần phải mất thời gian như vậy. Cho đến một ngày tôi được join vào một dự án khủng, rất nhiều module và nhiều thành viên tham gia, lúc này tôi mới hiểu tại sao mọi người cần viết test và viết test từ sớm. Tôi nhận ra đó là khoản đầu tư có giá trị giúp hạn chế được technical debt về sau. Nếu để nợ này càng nhiều, về sau team bạn sẽ mất thời gian để sửa code, dự án sẽ chậm đưa ra được các features mới hơn.

Trong các dự án về Data, viết test lại càng quan trọng, nếu không có quy trình data quality management từ lúc đọc dữ liệu thô, tiền xử lý cho đến lúc train model thì toàn bộ dữ liệu down stream sẽ bị ảnh hưởng. Lúc này, ta phải mất thời gian sửa code và chạy lại toàn bộ data pipeline từ đầu, rất painful.

Bài viết này sẽ trình bày lý do tại sao ta cần viết test, test gì trên dữ liệu, test như thế nào.

Tại sao Data Engineer giúp bạn bắt đầu sự nghiệp trong lĩnh vực Data thuận lợi hơn?

Dice 2020 Tech Jobs Report

Xin chào các bạn đọc giả, đã nhiều năm tôi không viết blog, thế giới của dữ liệu đã có nhiều bước tiến vượt bậc cả về số lượng lẫn chất lượng, đến nỗi ta còn không thể nắm bắt được hết chuyện gì đang diễn ra. Nào là Blockchain, ChatGPT, AI Art generator, Web3, Data Lakehouse, Data Mesh và hàng hà sa số open source giúp cho công việc xử lý dữ liệu ngày càng thuận lợi hơn bao giờ hết. Tôi rất mong muốn sẽ càng nhiều người được phổ cập thông tin như thế qua bài chia sẻ của mình. Nên qua năm 2023, tôi quyết định hàng tuần sẽ ra một bài blog nho nhỏ xoay quanh chuyện nghề và một bài blog hướng dẫn công nghệ mỗi tháng một lần. Hy vọng sẽ mang lại thông tin, kinh nghiệm, cũng như góc nhìn cá nhân cho các bạn đọc đang theo dõi blog tới thời điểm này.

Hiện tại, tôi có giảng dạy tại học viện AIDE thông qua hình thức online, một phần muốn “lôi kéo” nhiều bạn tham gia vào dự án hiện tại của tôi, phần khác là muốn thỏa mãn sở thích hướng dẫn, chia sẻ của mình, nhưng quan trọng vẫn là muốn giúp các bạn trẻ nhập môn và tiến nhanh hơn trong sự nghiệp của bản thân. Do đó, trong blog tuần này, tôi sẽ cung cấp một vài lý do chủ quan tại sao các bạn trẻ nên bắt đầu lĩnh vực Data với vai trò là Data Engineer.