Giới thiệu #
Một trong những từ khoá hot cuối 2022 là “Platform Engineer” (vị trí), “Platform Engineering” (hiện thực
hoá tiêu chuẩn Platform).
Vậy Platform Engineering là gì, vị trí Platform Engineer có gì khác biệt với SRE/DevOps engineer?
Platform Engineering? Platform Engineer? #
(toolchains) cũng như workflow để mang lại khả năng tự phục vụ (self-service) trong các doanh
nghiệp phần mềm trong kỷ nguyên điện toán đám mây. Platform Engineer – các kỹ sư Platform
sẽ cung cấp một sản phẩm tích hơp thường được gọi là nền tảng phát triển nội bộ dành cho
lập trình viên (Internal Developer Platform – viết tắt là IDP).Nền tảng này bao gồm tất cả các hoạt động
cần thiết để xây dựng nên ứng dụng.
cũng có khả năng cung cấp các công cụ cần thiết để đơn giản hoá các công việc liên quan tới hạ tầng
và nền tảng cho lập trình viên?
Nơi mà đội ngũ kỹ sư Platform (có thể bao gồm cả các kỹ sư DevOps/SRE) cùng nhau
phát triển sản phẩm dựa trên nhu cầu của người dùng cuối (thông thường là developer/QA…)
thay vì theo đuổi các công nghệ, xu hướng mới.
Sản phẩm đó chính là một Nền tảng nội bộ dành cho lập trình viên – Internal Developer Platform
hay còn gọi tắt là IDP.
Internal Developer Platform – IDP #
Tại sao cần xây dựng Internal Developer Platform khi đã có các tiêu chuẩn và mô hình DevOps? #
“You build it, you run it” – Werner Vogels, CTO of Amazon
Khi kỷ nguyên DevOps bùng nổ, hầu hết các doanh nghiệp lớn nhỏ đều không muốn đứng ngoài xu thế này.
Tất cả đều muốn tích hợp văn hoá DevOps và những best practice vào môi trường làm việc.
Bắt đầu từ việc xoá bỏ dần ranh giới giữa đội ngũ phát triển (Developments) và vận hành (Operations).
Cũng như dịch chuyển những công việc, thao tác vận hành dần về phía đội ngũ lập trình viên.
Mọi thứ có vẻ hoàn hảo nơi mà đội ngũ Quản trị viên tham gia nhiều và sâu hơn vào việc
phát triển sản phẩm phần mềm. Trong khi Lập trình viên chủ động và thoải mái hơn trong việc xây dựng
môi trường và triển khai sản phẩm đúng với tinh thần “you build it, you own it”.
Tuy nhiên, với tốc độ phát triển như vũ bão của ngành công nghệ, các xu hướng mới xuất hiện như
Container hoá ứng dụng, Microservice, Kubernetes, IaC và kèm theo đó là sự bùng nổ các công cụ.
Đột nhiên, một lập trình viên phải có khả năng sử dụng nhiều công cụ phức tạp chỉ để thực hiện những
thao tác đơn giản như cập nhật biến môi trường hoặc cấu hình của ứng dụng. Ví dụ, họ cần biết manifest
của ứng dụng ở đâu, được quản lý bởi ApplicationSet nào của ArgoCD, được templating/rendering
như thế nào thông qua Kustomize và cả việc release theo từng môi trường mà không gây ra downtime.
Việc này càng trở nên vô cùng khó khăn với các kỹ sư mới gia nhập doanh nghiệp.
Vậy làm sao để xây dựng được một “môi trường hạ tầng lí tưởng”?
Điều mà cần rất nhiều công sức, kinh nghiệm và thiết kế kiến trúc chuẩn chỉnh ngay từ đầu? #
Làm sao để có môi trường lí tưởng, tất cả mọi thứ từ hạ tầng cloud, network, hạ tầng Kubernetes,
CI/CD process đều được code hoá thì việc một lập trình viên có thể cài đặt, cấu hình môi trường và
các thành phần phụ thuộc (Dependencies) cho những ứng dụng của mình sẽ trở nên khả thi.
Yếu tố quyết định là đội ngũ nhân lực. Tuy nhiên không phải doanh nghiệp nào cũng là Google, Facebook
hay Netflix để có thể sở hữu những kỹ sư hàng đầu, có khả năng thiết kế và vận hành những hệ thống lớn
một cách an toàn, hiệu quả và ổn định.
Thay vào đó, sẽ là một đội ngũ kỹ sư “bình thường” (mà doanh nghiệp có khả năng tiếp cận, tuyển dụng
và duy trì) cố gắng tuân theo và thực hiện một số DevOps best practices. Họ chỉ cần sở hữu kiến thức
cơ bản về hạ tầng (K8s, Cloud) và các công cụ liên quan (Helm, Kustomize, ArgoCD, …) mà doanh nghiệp
đang sử dụng, nhưng vẫn đủ khả năng xây dựng, khởi tạo môi trường và triển khai ứng dụng.
Một sản phẩm IDP bao gồm những thành phần nào? #
IDP là 1 tập hợp các công cụ và công nghệ mà đội ngũ kỹ sư Platform lựa chọn, tổng hợp và phát triển
thành một sản phẩm hoàn chỉnh và cung cấp cho lập trình viên. IDP giúp lập trình viên giảm tải
những công việc phức tạp, rối rắm, đôi lúc không phải là sở trường chuyên môn và cung cấp khả năng
“tự phục vụ” (self-service). Điều này mang lại sự chủ động, thuận tiện và nhanh chóng.
Vậy một sản phẩm IDP bao gồm những thành phần nào?
-
Infrastructure orchestration
-
Application configuration
-
Deployment management
-
Environment management
-
RBAC
Câu hỏi đặt ra là những tập công cụ này có gì thực sự khác biệt và mới mẻ? Chính những kỹ sư DevOps
hay SRE vẫn đang hàng ngày sử dụng chúng trong các tác vụ chính? Sự khác biệt nằm ở “tư duy sản phẩm”.
Các doanh nghiệp, tổ chức theo đuổi và áp dụng “Platform Engineering” coi IDP như là 1 sản phẩm mà
đội ngũ kỹ sư platform là người sáng tạo, phát triển và duy trì. Thay vì thử nghiệm các công nghệ mới,
Platform Engineer tập trung vào giải quyết vấn đề của end-user (ở đây chính là các developer)
dựa trên các User Story, phân tích các giải pháp, kiểm thử, … như một sản phẩm thực thụ.
Một số công cụ IDP phổ biến
Như đã giới thiệu ở trên, IDP như là 1 framework được xây dựng bên trên (on top) các DevOps tool,
resource và các cloud provider. Một số IDP có khả năng tích hợp với nhiều công cụ DevOps và
nền tảng đám mây khác nhau trong khi 1 số khác lại tập trung vào một nền tảng cụ thể.
1. Upbound #
Một công cụ IDP có phí sử dụng trình Control plane tự động (managed control plane) dựa trên Crossplane.
2. Backstage #
Backstage là một nền tảng mở của Spotify và hỗ trợ bởi CNCF, dùng để phát triển và xây dựng
Developer Portal, bao gồm các thành phần sau:
-
Backstage Software Catalog : quản lý microservices, libraries, data pipelines, websites, và các ML models.
-
Backstage Software Templates : hỗ trợ khởi tạo các project 1 cách nhanh chóng và tiện lợi.
-
Backstage TechDocs : tự động tạo document cho project.
Kiến trúc của Backstage bao gồm 3 phần chính:
-
Core Backstage UI
-
UI plugins và backing services
-
Databases
3. Humanitec Platform Orchestrator #
Một sản phẩm IDP có phí được phát triển bởi Humanitec, tích hợp cùng Score (Workload as Code) và
Driver (trình kết nối Orchestrator tới các nền tảng đám mây và các giải pháp của bên thứ 3).
Dưới đây là 1 kiến trúc sử dụng IDP trên nền tảng AWS
4. Kratix #
Kratix là 1 nền tảng mã nguồn mở. Được các kỹ sư Platform sử dụng để xây dựng 1 giải pháp IDP
trên nền tảng Kubernetes. (mặc dù Kratix có hỗ trợ việc tích hợp với các nền tảng đám mây hay hạ tầng
On-prem nhưng vẫn còn trong giải đoạn thử nghiệm).
Dưới đây là 1 mô hình IDP đơn giản. Khi 1 developer có thể dễ dàng yêu cầu 1 Jenkins server cho
dự án của mình, Platform Engineer nhận yêu cầu, phê duyệt và Kratix sẽ đảm nhận việc cài đặt,
cấu hình và cung cấp 1 Jenkins server hoàn thiện tới người dùng cuối. Trong trường hợp này
người dùng cuối chính là Developer, chỉ với 1 file yaml đơn giản như sau:
apiVersion: marketplace.kratix.io/v1alpha1 kind: jenkins metadata: name: example namespace: default spec: env: dev
Trong khuôn khổ của bài viết này, chúng tôi muốn giới thiệu về mô hình Engineering Platform và các
công cụ liên quan.
Ở phần tiếp theo, chúng ta sẽ đi sâu hơn vào công việc của một kỹ sư nền tảng – Platform Engineer
và cách họ sử dụng IDP để cung cấp dịch vụ tới lập trình viên như thế nào.
Bài viết gốc được đăng tải tại: https://blog.hungtran.net/platform-engineering/
Trung tâm đào tạo Viễn thông và Công nghệ thông tin TEL4VN (TEL4VN) chuyên đào tạo các khóa học về DevOps như: Docker, Kubernetes, Ansible, Jenkins, Linux…….Ngoài ra, TEL4VN còn là Trung tâm đào tạo duy nhất về VoIP mã nguồn mở. 🌐Website: https://tel4vn.edu.vn/ |