Bắt đầu với Platform Engineering
Tiếp tục bài viết trước về Platform Engineering, hôm nay hãy cùng mình tìm hiểu kĩ hơn về keyword này dưới góc nhìn của một solution architect nhé.
This post is also available in English
Đọc thêm: 2023 năm của Platform Engineering
Platform là gì?
Đầu tiên, từ khóa 'platform' không phải là một thuật ngữ quá cao siêu. Tùy vào từng công ty, nếu bạn hỏi mọi người về định nghĩa platform thì bạn sẽ nhận được nhiều câu trả lời khác nhau, dù phần lớn đều đồng ý với những cái tên đã rất thành công về platform như Amazon, Alibaba, Spotify, Netflix,... Thậm chí trong năm 2015, khi tổ chức kinh tế thế giới WEF giới thiệu về các hoạt động trong chuỗi Digital Transformation Initiatives thì một keyword tương tự cũng nhanh chóng nổi lên, đó chính là digital platform. Và một vài năm trở lại đây, từ khóa data platform vẫn luôn chiếm chủ đạo trong mục tìm kiếm bên cạnh data mesh, data fabric.
Vậy đâu là một định nghĩa đúng cho platform?
Theo mình thì có thể hiểu đơn giản như sau:
Platform chính là nền tảng công nghệ mà từ đó doanh nghiệp có thể nhanh chóng đem lại giá trị cho khách hàng của mình. Platform là thành quả của quá trình Platform Thinking chứ không phải one-shot product.
Đặc điểm của Platform Engineering
Như vậy tùy vào tình huống cụ thể mà chúng ta cần xác định khách hàng, công nghệ và giá trị đem lại để định nghĩa platform. Dùng cách tiếp cận này, chúng ta có thể dễ dàng xác định các đặc điểm của Platform Engineering:
- Công nghệ: Tất tần tật các loại công nghệ phục vụ mấy anh lập trình viên trong quá trình làm việc.
- Khách hàng: Mấy anh lập trình viên.
- Giá trị đem lại: Hạnh phúc (được lười hơn, đỡ sai hơn, đỡ chửi hơn...).
Thành phần của Platform Engineering
Đặt vào bối cảnh của thời đại ngày nay, trước mắt chúng ta có thể tạm thời chia kiến trúc của Platform Engineering thành những thành phần sau:
1. Dev Portal (The Engineering Way)
Tất nhiên là platform thì cần phải có giao diện để sử dụng, thế thì có gì trong phần giao diện này ngoài việc là menu để truy cập các dịch vụ tương ứng?
Câu trả lời là:
- Profile Gamification: Làm sao để hấp dẫn mấy ông dev sử dụng, đóng góp cũng như tiếp tục phát triển leo rank? Chắc chắn là game rồi.
- Quick Tools: Mấy công cụ đơn giản hay dùng, từ việc vẽ và trao đổi kiến trúc đến setup tools hiển nhiên cũng phải có trên này cho tiện sử dụng.
- Community Discussion: Tất nhiên là không thể thiếu Stackoverflow phiên bản nội bộ để thoải mái bày tỏ ý kiến và đặt câu hỏi rồi.
2. Infrastructure GPT (Self-Services)
Với mục tiêu giảm gánh nặng về cognitive load thì hiển nhiên trên Platform Engineering chúng ta phải có one-click automated infra, devops CI/CD pipelines rồi. Rất nhiều team đã từng dùng các paved road dưới dạng golden virtual image có sẵn mọi thứ để các bạn lập trình viên không cần tốn công cài cắm cấu hình lại từ đầu (vừa dễ sai và vừa gặp nhiều lỗi vặt). Ngày nay, chúng ta không thể cứ log ticket infra và chờ đợi môi trường, lí do mình đặt tên thành phần này có keyword GPT là để ám chỉ việc giao vấn đề này cho một con bot thông mình hơn, tự động hóa tốt hơn.
3. Knowledge Hub (Re-useable)
Ngày nay với sự đa dạng của tech stack thì ngày càng nhiều framework ra đời, ngày càng nhiều thư viện để giải quyết các vấn đề. Tuy nhiên, chính sự đa dạng này lại phát sinh một vấn đề khác đó là việc lặp đi lặp lại quá trình dựng khung sườn dự án cũng như đi mua sắm thư viện cho dự án trong giai đoạn đầu. Bên cạnh đó, nhu cầu trao đổi, thảo luận về các vấn đề common cũng là một trong những insight quý giá của bất kì đội ngũ kĩ sư nào. Chính vì thế, chúng ta cần một chỗ để quy hoạch các framework stack được cho là golden cũng như luôn duy trì việc nâng cấp version một cách đơn giản nhất để các dự án không phải lo lắng nhiều nữa.
4. Services Hub (X as a service)
Trong quá trình trưởng thành của platform thì tất nhiên sẽ có một số dịch vụ có thể được cung cấp dưới dạng API/services cho bất kì đội ngũ nào sử dụng. Ví dụ như các nhu cầu load test, accessibility test, security test hay thậm chí nhu cầu đo lường DORA metrics cũng hoàn toàn có thể được cung cấp dưới dạng dịch vụ, các đội ngũ phát triển có thể dễ dàng sử dụng dưới mô hình Pay As You Go và tập trung hơn vào sản phẩm lõi của mình.
Lời kết
Trên đây là những thành phần mà mình nghĩ một Platform Engineering cần phải có. Hành trình xây dựng sẽ khác nhau ở từng doanh nghiệp nhưng khi triển khai thông qua theo dõi hiệu quả và đo đạc, cộng với việc được phát triển theo tinh thần của một product thực thụ thì chắc chắn platform sẽ đem lại các giá trị như kì vọng. Các giá trị này - bao gồm việc làm cho cuộc sống của lập trình viên hạnh phúc hơn - chính là yếu tố cạnh tranh cốt lõi trong thời đại ngày nay.