Photo by Pixabay from Pexels
Thật khó tin rằng các công cụ xử lý dữ liệu và công nghệ đang phát triển nhanh như đến nhường nào. Và cùng với đó, bản chất của ngành kỹ thuật dữ liệu cũng đang thay đổi theo. Những công cụ tôi đang sử dụng bây giờ rất khác so với những thứ cách đây mười, hay thậm chí năm năm. Tuy nhiên, có những công cụ vẫn còn phù hợp cho đến ngày nay.
Tôi bắt đầu làm việc về dữ liệu từ rất lâu trước khi ngành kỹ thuật dữ liệu ra đời và khoa học dữ liệu trở thành công việc hấp dẫn nhất trong thế kỷ 21. Tôi chính thức là một kỹ sư dữ liệu lớn cách đây sáu năm, và tôi biết rõ những thách thức mà những nhà phát triển, với nền tảng phát triển dữ liệu “truyền thống” phải trải qua trong hành trình này. Tất nhiên, quá trình chuyển đổi này cũng không hề dễ dàng đối với các kỹ sữ phần mềm, nó chỉ khác với đối tượng tôi đã đề cập ở trên.
Mặc dù công nghệ liên tục thay đổi – và đó là thực tế đối với bất kỳ ai đang làm việc trong lĩnh vực công nghệ, một số kỹ năng tôi từng phải học vẫn còn phù hợp, nhưng thường bị bỏ qua bởi các nhà phát triển dữ liệu - những người vừa mới bắt đầu chuyển sang kỹ thuật dữ liệu. Đây thường là những kỹ năng mà các nhà phát triển phần mềm xem là điều hiển nhiên.
Trong bài viết này, tôi sẽ bàn về quá trình phát triển của kỹ thuật dữ liệu và những kỹ năng mà các nhà phát triển dữ liệu “truyền thống” - ngày nay, có thể cần học hỏi. (Gợi ý: không phải Hadoop).
Sự ra đời của kỹ sư dữ liệu
Các nhóm dữ liệu trước cơn sốt dữ liệu lớn bao gồm các nhà phát triển kinh doanh thông minh và ETL. Các hoạt động điển hình của các nhà phát triển BI/ETL liên quan đến việc di chuyển tập dữ liệu từ vị trí A đến vị trí B (ETL) và xây dựng các bảng điều khiển được lưu trữ trên web với dữ liệu đó (BI). Những công nghệ chuyên biệt ra đời phục vụ cho từng hoạt động, với kiến thức tập trung trong bộ phận Công nghệ thông tin. Tuy nhiên, bên cạnh đó, sự phát triển của BI và ETL không liên quan nhiều đến kỹ thuật phần mềm – ngành học đang phát triển mạnh mẽ trong đầu thế kỷ này.
Trong mười năm qua, khi lượng dữ liệu và sự quan tâm đến phân tích dữ liệu tăng lên, hàng loạt các công nghệ đã được phát minh. Trong khi một trong số chúng, thất bại, những công nghệ khác lại được áp dụng một cách rộng rãi. Điều này đã thay đổi kĩ năng cũng như cấu trúc của các nhóm dữ liệu. Khi các công nghệ BI hiện đại cho phép các nhà phân tích và kinh doanh tạo ra các bảng điều khiển cần ít sự hỗ trợ từ các nhóm Công nghệ thông tin, kỹ thuật dữ liệu đã trở thành một ngành học mới, áp dụng các nguyên tắc kỹ thuật phần mềm để phát triển ETL bằng cách sử dụng một bộ công cụ mới.
Những thách thức
Việc tạo ra một “đường ống dữ liệu” nghe có vẻ dễ dàng, nhưng ở quy mô dữ liệu lớn, điều này có nghĩa rằng phải kết hợp hàng tá các công nghệ khác nhau (hoặc thậm chí nhiều hơn). Một kỹ sư dữ liệu phải hiểu sâu về vô số công nghệ, chọn công cụ phù hợp cho công việc và viết mã bằng Scala, Java hoặc Python để tạo ra các giải pháp linh hoạt và có thể mở rộng được. Một kỹ sư dữ liệu cần phải biết dữ liệu của chính họ để có thể tạo ra các công việc hưởng lợi từ sức mạnh của xử lý phân tán. Một kỹ sư dữ liệu phải hiểu cấu trúc hạ tầng để có thể xác định được những lý do khiến công việc thất bại.
Về mặt khái niệm, những đường ống dữ liệu chính là các công việc ETL điển hình: thu thập các tập dữ liệu từ một số nguồn, đưa chúng vào kho dữ liệu tập trung, nơi sẵn phân tích và chuyển đổi dữ liệu phục vụ cho kinh doanh thông minh hoặc học máy. Tuy nhiên, các nhà phát triển ETL “truyền thống” lại không có các kỹ năng cần thiết để thực hiện các công việc này trong thế giới Dữ liệu lớn.
Ngày nay điều này có còn đúng?
Tôi đã xem xét nhiều bài báo mô tả những kỹ năng mà kỹ sư dữ liệu cần có. Hầu hết đều khuyên rằng nên học các công nghệ như Hadoop, Spark, Kafka, Hive, Hbase, Casandra, MongoDB, Oozie, Flink, Zookeeper,…
Mặc dù tôi đồng ý rằng, hiểu rõ hết những công nghệ này, không có gì là không tốt cả, nhưng tôi thấy rằng trong nhiều trường hợp ngày nay, năm 2020, chỉ cần “biết về chúng” là đủ: những trường hợp cụ thể chúng được thiết kế để giải quyết vấn đề, trường hợp nên hoặc không nên được sử dụng, và đâu là những lựa chọn thay thế. Những năm gần đây, công nghệ đám mây phát triển nhanh chóng đã phát sinh một loạt các ứng dụng và dịch vụ riêng trên điện toán đám mây. Tương tự như các công cụ BI hiện đại giúp việc phân tích dữ liệu dễ tiếp cận hơn với kinh doanh vài năm trước, ngăn xếp dữ liệu cloud-native hiện đại giúp đơn giản hóa các nhiệm vụ thu thập và chuyển đổi dữ liệu.
Tôi không nghĩ rằng các công nghệ như Apache Spark sẽ trở nên ít phổ biển hơn trong vài năm tới, bởi vì chúng rất hiệu quả cho những chuyển đổi dữ liệu phức tạp.
Tuy nhiên, tỷ lệ chấp nhận cao của các kho dữ liệu đám mây như Snowflake và Google Big Query cho thấy rằng chúng mang lại những lợi thế nhất định. Một trong số đó, chính là việc Spark yêu cầu các kỹ răng chuyên môn cao, trong khi các giải pháp ETL nằm trên cùng của nền tảng dữ liệu đám mây lại phụ thuộc nhiều vào kỹ năng SQL, ngay cả đối với dữ liệu lớn – những vai trò như vậy dễ thực hiện hơn nhiều.
Nhà phát triển dữ liệu cần có những kỹ năng gì?
Ảnh được cung cấp bởi Pixabay từ Pexels
Các nhà phát triển BI/ETL thường có hiểu biết sâu rộng về các nguyên tắc cơ bản của cơ sở dữ liệu, mô hình dữ liệu và SQL. Những kỹ năng này vẫn còn giá trị ngày nay và chủ yếu có thể chuyển giao cho một ngăn xếp dữ liệu hiện đại – tinh gọn hơn và dễ học hơn hệ sinh thái Hadoop.
Dưới đây là ba lĩnh vực tôi thường quan sát thấy các nhà phát triển dữ liệu “truyền thống” có những lỗ hỏng trong kiến thức bởi vì, trong một thời gian dài, họ không có những công cụ và cách tiếp cận của những kỹ sư phần mềm. Việc hiểu và lấp đầy những lỗ hổng đó sẽ không mất nhiều thời gian, nhưng lại có thể giúp quá trình chuyển đổi sang một bộ công cụ mới diễn ra suôn sẻ hơn nhiều.
1. Kiểm soát phiên bản (Git) và hiểu biết về đường ống CI/CD.
SQL, về bản chất là code, do đó, các nguyên tắc kỹ thuật phần mềm nên được áp dụng.
- Ai, khi nào và tại sao lại thay đổi code là 3 điều quan trọng cần phải biết.
- Code phải đi kèm với các kiểm thử có thể chạy một cách tự động.
- Code phải dễ dàng được triển khai trên các môi trường khác nhau.
Tôi là một fan hâm mộ lớn của DBT – một công cụ mã nguồn mở mang đến các phương pháp hay nhất về kỹ thuật phần mềm cho SQL và đơn giản hóa tất cả các bước này, và nhiều hơn thế nữa. Vì vậy tôi khuyên bạn hãy thử sử dụng nó một lần xem sao.
2. Hiểu biết rõ về ngăn xếp phân tích dữ liệu đám mây hiện đại
Chúng ta có xu hướng gắn bó với những công cụ mà chúng ta biết vì chúng thường giúp ta làm việc hiệu quả hơn. Tuy hiên, nhiều thách thức mà chúng ta đang đối mặt không phải là duy nhất, và ngày nay có thể được giải quyết một cách hiệu quả hơn.
Ban đầu, có thể đáng sợ khi cố gắng định hướng trong hệ sinh thái đám mây. Một cách giải quyết chính là học hỏi kinh nghiệm từ những công ty khác.
Nhiều công ty khởi nghiệp thành công rất cởi mở về kho dữ liệu của họ và những bài học mà họ học được trên hành trình của mình. Ngày nay, người ta thường áp dụng một phiên bản của kho dữ liệu đám mây và một số thành phần khác để nhập dữ liệu (chẳng hạn như Fivestran hoặc Segment) và trực quan hóa dữ liệu. Thông thường, tham khảo một vài kiến trúc là đủ để có được cái nhìn tổng quan và biết được những gì cần nghiên cứu khi cần thiết, ví dụ: xử lý các sự kiện hoặc truyền dữ liệu có thể là một khái niệm hoàn toàn mới.
3. Biết một ngôn ngữ lập trình ngoài SQL
Như cách mà tôi yêu Scala, Python dường như là một lựa chọn an toàn để bắt đầu: dễ dàng để lựa chọn, được các nhà khoa học dữ liệu yêu thích và được hỗ trợ khá nhiều bởi các thành phần của hệ sinh thái đám mấy. SQL rất hiệu quả cho nhiều phép biến đổi dữ liệu, nhưng đôi khi việc phân tích cấu trúc dữ liệu phức tạm bằng Python trước khi nhập vào bảng hoặc sử dụng nó để tự động hóa các bước cụ thể trong đường ống dữ liệu sẽ dễ dàng hơn.
Đây không phải là một danh sách đầy đủ và các công ty khác nhau có thể yêu cầu các kỹ năng khác nhau.
Vai trò của một kỹ sư đang thay đổi
Ảnh của Christina Morillo từ Pexels
Các công cụ xử lý dữ liệu và các công nghệ đã phát triển ồ ạt trong một vài năm vừa qua. Phần nhiều trong số đó đã phát triển đến mức có thể dễ dàng mở rộng khi quy mô dữ liệu tăng lên, đồng thời vẫn hoạt động tốt với “dữ liệu nhỏ”. Điều này có thể đơn giản hóa ngăn xếp phân tích dữ liệu và các kỹ năng cần thiết để sử dụng nó một cách đáng kể.
Điều này có nghĩa rằng vai trò của một kỹ sư dữ liệu đang thay đổi? Tôi nghĩ vậy. Không có nghĩa là nó trở nên dễ dàng hơn, đại loại như nhu cầu kinh doanh tăng lên khi công nghệ tiến bộ. Tuy nhiên, có vẻ như vai trò này có thể trở nên chuyên biệt hơn, hoặc tách thành một vài lĩnh vực khác nhau.
Các công cụ mới cho phép các kỹ sư dữ liệu tập trung vào cơ sở hạ tầng dữ liệu cốt lõi, tối ưu hóa hiệu suất, tùy chỉnh đường ống nhập dữ liệu và điều phối đường ống tổng thể. Đồng thời, mã chuyển đổi dữ liệu trong các đường ống đó có thể được sở hữu bởi bất khi ai thành thạo SQL. Ví dụ, kỹ thuật phân tích đang trở nên phổ biến. Vai trò này là giao điểm của kỹ thuật dữ liệu và phân tích dữ liệu, nó tập trung vào quá trình chuyển đổi và chất lượng dữ liệu. Kỹ thuật kho dữ liệu đám mây lại là một chuyện khác.
Bất kể sự khác biệt về chức danh công việc được áp dụng rộng rãi hay không, tôi tin rằng các nhà phát triển dữ liệu “truyền thống” sở hữu nhiều kỹ năng cơ bản để thành công trong nhiều hoạt động liên quan đến kỹ thuật dữ liệu ngày nay – có thế mạnh về SQL và mô hình dữ liệu là một trong số những kỹ năng đó. Bằng cách hiểu được ngăn xếp dữ liệu phân tích đám mây hiện đại và cách mà cách thành phần khác nhau có thể kết hợp được với nhau, việc học một ngôn ngữ lập trình và làm quen với kỹ thuật kiểm soát phiên bản, quá trình chuyển đổi này có thể diễn ra liền mạch một cách hợp lý.