Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Sự tích Platform engineering 2

Phần tiền truyện của Sự tích Platform engineering

DevOps vs SRE vs Platform Engineering: What's The Difference

Ngược dòng lịch sử

Thủa xưa, khái niệm DevOps chưa tồn tại, mấy anh Developer làm việc kiểu full service all-in-one, bao gồm các làm requirement, develop, tự deploy lên server rồi chạy test.
Em mới code xong phần login cho frontend, build local chạy căng đét. Chú frontend cười hỉ hả
Mày deploy phần backend lên con VM hộ anh, mai anh demo KH” Anh team lead giục
Chú Java dev, chạy mvn build ra war file, copy vào host server, chạy ổn
Cuộc sống cứ đều đặn trôi cho đến ngày Google ra đời
Năm Bush con thứ 3 tức 2003 sau công nguyên, chiến tranh Irac nổ ra, lượng truy cập vào Google để tìm kiếm thông tin về Irac tăng vọt dẫn tới performance website giảm, slow page load, thỉnh thoảng còn xảy ra downtime. Thời đó, public cloud AWS chưa ra đời, hạ tầng của Google vẫn là on-premise với vài trăm ngàn server cross data center ở các region khác nhau. Lúc đó thì kiểu anh Dev làm all-in-one gặp vấn đề

Thằng X vào server kiểm tra sao web load chậm thế QA réo
Khổ quá, code em chạy local host ngon lành, ko hiểu sao lên server lại chậm, ko biết lỗi gì
Không phải lỗi code anh ơi, tại server cấu hình yếu quá, phải nâng cấp lên. Mỗi tội em chỉ biết code thôi, không rành hạ tầng
Mấy ông dev/qa/pm chửi nhau loạn xạ
Google cần có chiến lược large-scale automation đống server này để đảm bảo tính ổn định, chịu được tải của hệ thống, phải tách biệt công việc của Dev và việc vận hành. Trước tình hình đó, Ben Treynor Sloss đã đưa ra khái niệm SRE , kĩ sư vận hành hệ thống (Infrastructure engineer) đảm bảo hệ thống reliability, manage server farms xử lý hàng tỉ request một ngày
5 năm sau, khái niệm DevOps mới ra đời do Andrew Clay Shafer và Patrick Debois đề xuất trong hội nghị về Agile, xây dựng nên một quy trình full lifecyle từ code, buid, test, deploy
Sau 10 năm thì DevOps ngày một phát triển thành trend mới của ngành IT
Role Devops được trả mức lương cao, benefit hậu hĩnh, nhiều thanh niên chiến nhiều dự án, tiền lương đè chết người. Chú nào tháng thu nhập dưới trăm củ/tháng, đi xe dưới 1 tỉ cứ gọi là buồn nôn không chịu nổi.
Thấy DevOps kiếm tiền được thế là nhà nhà người người đú trend theo ngành này. Lúc đầu, đa số là Dev chuyển career path sang DevOps nên ít nhiều đã có base về programming, cấu trúc dữ liệu, 4 5 năm kinh nghiệm trước đó rồi nên tiếp cận công nghệ cũng khá nhanh. Về sau thì bắt đầu tả pí lù, các trung tâm đào tạo mọc lên như nấm theo kiểu mì ăn liền trở thành Devops engineer trong 21 ngàygiáo trình SRE cấp tốc,3 tuần để trở thành cloud engineer. Ngày xưa chỉ có chứng chỉ Cloud AWS, giờ đây thì đủ loại từ CKA, CKD, Terraform, GCP …, luyện thi cấp tốc. Thi không nổi thì có dịch vụ thi hộ có bảng giá đàng hoàng, đảm bảo pass mới trả tiền
Vậy là xôi thịt thì ít, con nít thì nhiều, mỗi mét vuông mười ông DevOps, chất lượng ngày càng đi xuống.

NoOps và Platform Engineering

Từ khi DevOps phát triển, các công cụ automation mọc lên như nấm. K8s do Google build lúc đầu chỉ xài kubectl, yaml manifest, về sau thì Helm chart, kcustomize, kubernetes operation (kops) CICD (Jenkins, circle CI, git-flow…), IaC (terraform, CF) . Nhờ các công cụ auto này giúp cho Platform eningeering ra đời, các công ty bắt đầu có xu hướng NoOPs, hiểu đơn giản là More automation, less maintenance
Một số công ty đã có xu hướng manh nha chuyển sang Platform engineering bằng việc tự phát triển những Product dành riêng cho internal user (QA/DEV) sử dụng
CICD pipelines là một hình thức đơn giản nhất, anh DevOps build set of pipeline bằng groovy script để tự động thực hiện tác vụ như build code, deploy lên môi trường. Anh Dev/QA chỉ việc nhập tham số tự giao diện rồi bấm run là xong, chạy có lỗi gì thì gọi anh DevOps ra fix
Trong team DevOps có anh nào rành về code frontend/backend thì phát triển một web GUI tool, giao diện đẹp, thân thiện, để cho user có thể đăng nhập sử dụng, chỉ việc click submit là phần core background như pipeline groovy, IaC, k8s tự động chạy deploy
Tuy nhiên, một Platform engineering (IDP) thực sự thì phức tạp hơn nhiều


Consumer success: Thay vì lúc phải vào CICD chạy jobs build code, lúc lại vào một web GUI để tạo resource, mỗi chỗ một tí, giờ với IDP chỉ có một single-front door duy nhất để process mọi việc, từ build code, provision infra, chạy test ...

Developer experiences cũng cải thiện rõ rệt, IDP tích hợp luôn công cụ tạo document, runbook cho developer sử dụng, gọi là Tech Doc architecture 


Tức là thay vì ngồi lọ mọ viết Runbook trên wiki kiểu cũ, giờ đây documentation được generate luôn trong Platform Engineering, gọi là doc-as-code (DaC), khái niệm mới bên IaC của DevOps truyền thống

Khái niệm DaC có thể tra trên GG, còn giaosucan's blog giải thích đơn giản thế này
Nếu thanh niên nào trước làm developer sẽ quen với một số tool doc code generator ví dụ doxygen
Khi implement methods sẽ comment theo format kiểu như sau


rồi tool gen doc sẽ đọc comment này rồi generate document dưới dạng help hoặc website luôn


Cơ chế Doc as Code của Platform engineer hoạt động cũng tương tự như vậy, Spotify phát triển Tech Doc plugin , doc-like-code approach. 
Anh Platform engineer sẽ viết doc dạng markdown files kèm với code, khi CI chạy sẽ generare ra một documentation site dùng MkDocs


Và thế là mô hình viết runbook trên wiki confulence sắp bị lỗi thời

Khi mọi thứ đã có thể tự động bằng code, nhận sự vận hành phải cắt giảm, cộng thêm suy thoái kinh tế, nhân viên DevOps truyền thống bị đuổi việc hàng loạt, chỉ giữ lại core member. Tuyển dụng mới cũng yêu cầu rất gắt, mỗi mét vuông số lượng devops giảm đáng kể, và hình thành một job role mới gọi là Platform engineer, chuyên phát triển Platform as Product

Tuy nhiên Platform Engineering mới được các tập đoàn lớn, các hệ thống phức tạp, số lượng developer khủng sử dụng, còn công ty nhỏ nhỏ, ít dev thì vẫn dùng mô hình DevOps truyền thống

Muốn biết tập đoàn tuyển dụng phỏng vấn Platform engineer thế nào, đón đọc phần sau

Đăng nhận xét

0 Nhận xét