Syllabus 20 ngày học sử dụng Backstage chi tiết

Table of contents
- Ngày 1: Tổng Quan và Bắt Đầu
- Ngày 2: Authentication
- Ngày 3: Kubernetes và Proxy
- Ngày 4: Notifications và Permissions
- Ngày 5: Search
- Ngày 6: Software Catalog - Phần 1: Khám Phá và Định Nghĩa Thực Thể
- Ngày 7: Software Catalog - Phần 2: Mở Rộng và Khám Phá Nâng Cao
- Ngày 8-9: Software Templates
- Ngày 10-11: TechDocs
- Ngày 12-13: Integrations
- Ngày 14-15: Plugins
- Ngày 16-17: Backends and APIs
- Ngày 18: Backstage CLI và Local Development
- Ngày 19-20: Tutorials và Migrations
Ngày 1: Tổng Quan và Bắt Đầu
Chủ đề:
Giới thiệu chi tiết về Backstage: Lịch sử, kiến trúc, và các thành phần chính.
Phân tích câu chuyện Spotify và tầm nhìn của Backstage trong việc quản lý hạ tầng phần mềm.
Chi tiết về lộ trình phát triển, mô hình bảo mật và luồng xử lý yêu cầu.
Chính sách phát hành và quản lý phiên bản.
Hướng dẫn chi tiết cài đặt và cấu hình môi trường phát triển Backstage.
Thiết lập và cấu hình cơ sở dữ liệu (SQLite, PostgreSQL).
Ứng dụng thực tế: Thảo luận về cách Backstage giải quyết các vấn đề thực tế trong quản lý hạ tầng phần mềm.
Mini Projects:
Cài đặt Backstage trên Docker và chạy ứng dụng demo.
Kết nối Backstage với PostgreSQL và hiển thị dữ liệu từ cơ sở dữ liệu trên giao diện người dùng.
Ngày 2: Authentication
Chủ đề:
Phân tích sâu về các phương thức xác thực trong Backstage: OAuth 2.0, OpenID Connect, SAML.
Cấu hình chi tiết các nhà cung cấp xác thực phổ biến: GitHub, GitLab, Google, Auth0, Okta.
Xử lý danh tính người dùng và phân quyền truy cập.
Xây dựng nhà cung cấp xác thực OIDC tùy chỉnh.
Ứng dụng thực tế: Xây dựng hệ thống đăng nhập một lần (SSO) cho các ứng dụng nội bộ sử dụng Backstage.
Mini Projects:
Cấu hình xác thực với GitHub và hiển thị thông tin người dùng GitHub trên giao diện Backstage.
Xây dựng một plugin Backstage yêu cầu xác thực người dùng để truy cập vào một số chức năng nhất định.
Ngày 3: Kubernetes và Proxy
Chủ đề:
Tích hợp Backstage với Kubernetes: Cài đặt, cấu hình, và quản lý tài nguyên Kubernetes.
Các phương thức xác thực Kubernetes: Service Account, kubeconfig.
Thiết lập và quản lý proxy trong Backstage để truy cập các dịch vụ Kubernetes.
Xử lý sự cố và gỡ lỗi trong môi trường Kubernetes.
Ứng dụng thực tế: Xây dựng một plugin Backstage hiển thị thông tin triển khai Kubernetes và cho phép quản lý các pod.
Mini Projects:
Kết nối Backstage với một minikube cluster và hiển thị danh sách các deployment.
Xây dựng một proxy Backstage để truy cập Kubernetes Dashboard.
Ngày 4: Notifications và Permissions
Chủ đề:
Xây dựng hệ thống thông báo tùy chỉnh trong Backstage.
Thiết lập và quản lý hệ thống phân quyền chi tiết.
Viết các chính sách phân quyền tùy chỉnh.
Tích hợp hệ thống phân quyền vào giao diện người dùng.
Ứng dụng thực tế: Xây dựng hệ thống thông báo tự động cho các sự kiện triển khai và hệ thống phân quyền cho từng Dev team.
Mini Projects:
Xây dựng một plugin Backstage gửi thông báo Slack khi một deployment Kubernetes thành công.
Tạo một hệ thống phân quyền trong Backstage để kiểm soát quyền truy cập vào các API nội bộ.
Ngày 5: Search
Chủ đề:
Phân tích sâu về kiến trúc hệ thống tìm kiếm trong Backstage.
Tích hợp các công cụ tìm kiếm phổ biến: Elasticsearch, Algolia.
Xây dựng các bộ đối chiếu tùy chỉnh để lập chỉ mục dữ liệu.
Tối ưu hóa hiệu suất tìm kiếm.
Ứng dụng thực tế: Xây dựng một hệ thống tìm kiếm tập trung cho tất cả các tài liệu và mã nguồn nội bộ.
Mini Projects:
Tích hợp Elasticsearch vào Backstage và xây dựng một giao diện tìm kiếm tùy chỉnh.
Xây dựng một bộ đối chiếu để lập chỉ mục tài liệu từ một kho lưu trữ Git.
Ngày 6: Software Catalog - Phần 1: Khám Phá và Định Nghĩa Thực Thể
Chủ đề:
Tổng Quan Software Catalog:
Giới thiệu chi tiết về vai trò của Software Catalog trong việc quản lý và khám phá các thành phần phần mềm.
Phân tích các khái niệm cơ bản:
Thực thể (Entity): Định nghĩa, các loại thực thể (dịch vụ, component, api, domain...).
Thành phần (Component): Cấu trúc, thuộc tính, và mối quan hệ với các thực thể khác.
Miền (Domain): Phân loại và tổ chức các thành phần theo miền nghiệp vụ.
Tìm hiểu vòng đời một Entity.
Định Nghĩa Thực Thể Bằng YAML:
Cú pháp và cấu trúc chi tiết của tệp YAML trong Software Catalog.
Hướng dẫn định nghĩa các thuộc tính cơ bản và mở rộng của thực thể.
Cách sử dụng các mối quan hệ (relations) để kết nối các thực thể với nhau.
Well-known Annotations, và Well-known Relations.
Tích Hợp Với Nguồn Dữ Liệu Bên Ngoài (Phần 1):
Tổng quan về các phương pháp tích hợp dữ liệu vào Software Catalog.
Tích hợp dữ liệu từ kho lưu trữ Git (GitHub, GitLab) bằng các Catalog Processor.
Phân tích và xử lý dữ liệu từ tệp
catalog-info.yaml
.
Ứng Dụng Thực Tế:
Mô hình hóa kiến trúc microservices: Định nghĩa các dịch vụ, API, và mối quan hệ giữa chúng.
Xây dựng hệ thống quản lý các thư viện và thành phần tái sử dụng.
Mini Projects:
Tạo tệp YAML định nghĩa dịch vụ:
Định nghĩa một dịch vụ microservice với các thuộc tính như tên, mô tả, API, và liên kết đến kho lưu trữ mã nguồn.
Sử dụng Backstage CLI để thêm dịch vụ vào Software Catalog.
Kiểm tra sự hiển thị của entity đó trên catalog.
Tích hợp với GitHub:
Cấu hình Backstage để đọc thông tin từ một kho lưu trữ GitHub.
Hiển thị danh sách các thành phần (components) từ kho lưu trữ đó trong Software Catalog.
Ngày 7: Software Catalog - Phần 2: Mở Rộng và Khám Phá Nâng Cao
Chủ đề:
Tích Hợp Với Nguồn Dữ Liệu Bên Ngoài (Phần 2):
Tích hợp dữ liệu từ các API REST: Cách cấu hình và xử lý dữ liệu từ các API tùy chỉnh.
Thực hành về Locations trong catalog, xử lý các location để import data.
Mở Rộng Software Catalog:
Xây dựng các plugin Backstage để mở rộng chức năng của Software Catalog.
Tạo các bộ lọc (filters) và tìm kiếm (search) tùy chỉnh để khám phá dữ liệu.
Tìm hiểu cách mở rộng model của entity.
Khám Phá Nâng Cao:
Sử dụng API của Software Catalog để truy xuất và quản lý dữ liệu.
Tạo Catalog Graph.
Phân tích và trực quan hóa các mối quan hệ giữa các thực thể.
Well-known Statuses.
Ứng Dụng Thực Tế:
Xây dựng hệ thống khám phá API: Hiển thị các API, tài liệu, và thông tin sử dụng.
Tạo báo cáo và thống kê về các thành phần phần mềm dựa trên dữ liệu từ Software Catalog.
Mini Projects:
Xây dựng Plugin Hiển Thị Quan Hệ:
Viết một plugin Backstage để hiển thị sơ đồ quan hệ giữa các dịch vụ và API.
Sử dụng thư viện trực quan hóa (ví dụ: D3.js) để tạo sơ đồ tương tác.
Tích hợp với API REST:
Cấu hình Backstage để đọc dữ liệu từ một API REST (ví dụ: API của một hệ thống quản lý sự cố).
Hiển thị dữ liệu từ API đó trong một plugin Backstage.
tạo một search bar để có thể query các entity thông qua api của catalog.
Ngày 8-9: Software Templates
Chủ đề:
Xây dựng và quản lý Software Templates: Mẫu dự án, thành phần, API.
Viết các mẫu tùy chỉnh để tạo dự án mới.
Xây dựng các hành động tùy chỉnh để tự động hóa quy trình tạo dự án.
Tích hợp với các hệ thống CI/CD.
Ứng dụng thực tế: Xây dựng một thư viện các mẫu dự án để chuẩn hóa quy trình tạo dự án mới.
Mini Projects:
Xây dựng một mẫu Backstage để tạo một dự án Node.js với cấu hình CI/CD tự động.
Xây dựng một hành động Backstage để triển khai ứng dụng lên AWS Lambda.
Vì bạn muốn mỗi ngày 2 project. Nên tôi sẽ phân chia 2 ngày Software Template thành 2 ngày riêng biệt.
Ngày 8: Software Templates phần 1
Chủ đề:
Tổng quan về Software Templates:
Tìm hiểu về mục đích và lợi ích của Software Templates trong việc tăng tốc độ phát triển.
Phân tích cấu trúc và thành phần của một Software Template.
Viết các mẫu đơn giản:
Hướng dẫn viết mẫu YAML cơ bản để tạo các dự án hoặc thành phần đơn giản.
Sử dụng các biến và logic cơ bản trong mẫu.
Sử dụng các action có sẵn.
Giới thiệu các action có sẵn trong Scaffolder.
Thực hành sử dụng các action để sao chép tệp, chạy lệnh, v.v.
Ứng dụng thực tế: tạo template để tạo một repo đơn giản trên github.
Mini Projects:
tạo template cơ bản để tạo 1 file Readme.md.
tạo template có sử dụng các action có sẳn, để tạo một project react cơ bản.
Ngày 9: Software Templates phần 2
Chủ đề:
Viết các mẫu nâng cao:
Sử dụng các biến và logic phức tạp hơn trong mẫu.
Tạo các mẫu có nhiều bước và tương tác với người dùng.
Viết action tùy chỉnh:
Hướng dẫn viết các action tùy chỉnh bằng Node.js.
Tích hợp các action tùy chỉnh vào mẫu.
Tích hợp với hệ thống CI/CD:
Tự động hóa việc tạo dự án và triển khai thông qua các hệ thống CI/CD (GitHub Actions, GitLab CI/CD, v.v.).
Tìm hiểu về Dry Run Testing.
Ứng dụng thực tế: tạo template có tích hợp CD để có thể deploy project lên 1 server.
Mini Projects:
tạo action tùy chỉnh, để có thể tạo 1 file config đặc biệt cho ứng dụng.
tạo template có tích hợp Github Action, để tự động build và deploy 1 project.
Ngày 10-11: TechDocs
Chủ đề:
Xây dựng và quản lý TechDocs: Tài liệu API, tài liệu dự án, tài liệu hướng dẫn.
Tích hợp với các công cụ tạo tài liệu: MkDocs, Docusaurus.
Xây dựng các plugin tùy chỉnh để mở rộng TechDocs.
Tích hợp với hệ thống CI/CD.
Ứng dụng thực tế: Xây dựng một hệ thống tài liệu tập trung cho tất cả các dự án và API nội bộ.
Mini Projects:
Cấu hình TechDocs để tạo tài liệu API từ tệp OpenAPI.
Xây dựng một plugin Backstage hiển thị tài liệu TechDocs dưới dạng trang web.
Tương tự như Software Template, tôi sẽ tách 2 ngày TechDocs làm 2 ngày riêng biệt.
Ngày 10: TechDocs phần 1
Chủ đề:
Tổng quan về TechDocs:
Tìm hiểu về vai trò của TechDocs trong việc cung cấp tài liệu cho các thành phần phần mềm.
Phân tích kiến trúc và luồng hoạt động của TechDocs.
Tích hợp với Mkdocs.
Hướng dẫn cài đặt và cấu hình MkDocs.
Sử dụng MkDocs để viết và quản lý tài liệu.
Cấu hình TechDocs cơ bản.
Cấu hình TechDocs để đọc tài liệu từ kho lưu trữ Git.
Hiển thị tài liệu TechDocs trong Backstage.
ứng dụng thực tế: Sử dụng Techdocs để tạo tài liệu hướng dẫn sử dụng cho một API Rest.
Mini Projects:
Cài đặt Mkdocs, và tạo 1 trang tài liệu đơn giản.
Cấu hình TechDocs để đọc trang tài liệu vừa tạo. và hiển thị trên giao diện Backstage.
Ngày 11: TechDocs phần 2
Chủ đề:
Tích hợp với Docussaurus.
Hướng dẫn cài đặt và cấu hình Docussaurus.
Sử dụng Docussaurus để tạo các trang tài liệu nâng cao.
Techdocs nâng cao.
Sử dụng các plugin TechDocs để mở rộng chức năng.
tích hợp các cloud storage cho Techdocs.
Tích hợp với hệ thống CI/CD:
Tự động hóa việc tạo và triển khai tài liệu thông qua các hệ thống CI/CD.
Sử dụng TechDocs CLI.
ứng dụng thực tế: tích hợp Techdocs và 1 hệ thống CI/CD để mỗi khi code được merge, thì tài liệu cũng sẽ được tự động cập nhật.
Mini Projects:
Cài đặt Docussaurus, và tạo 1 trang tài liệu nâng cao.
Cấu hình CI/CD để tự động build và deploy tài liệu Techdocs.
Ngày 12-13: Integrations
Chủ đề:
Tích hợp Backstage với các hệ thống bên ngoài: AWS, Azure, GitHub, GitLab, Datadog.
Xây dựng các plugin tích hợp tùy chỉnh.
Quản lý dữ liệu tổ chức và khám phá tài nguyên.
Ứng dụng thực tế: Xây dựng một bảng điều khiển tập trung để theo dõi hiệu suất và trạng thái của tất cả các hệ thống nội bộ.
Mini Projects:
Tích hợp Backstage với Datadog để hiển thị số liệu giám sát Kubernetes.
Xây dựng một plugin Backstage hiển thị thông tin cảnh báo từ PagerDuty.
Tương tự các ngày trước, ta sẽ tách thành 2 ngày riêng biệt.
Ngày 12: Integrations phần 1
Chủ đề:
Tổng quan về tích hợp trong Backstage:
Tìm hiểu về lợi ích của việc tích hợp Backstage với các hệ thống bên ngoài.
Phân tích các phương pháp tích hợp phổ biến.
Tích hợp với các dịch vụ đám mây (AWS, Azure):
Cấu hình Backstage để truy xuất thông tin từ AWS S3, Azure Blob Storage.
tìm hiểu về Locations và Discovery với AWS S3 và Azure Blob Storage.
Tích hợp với các hệ thống quản lý mã nguồn (GitHub, GitLab, Bitbucket):
Tìm hiểu về Locations và Discovery với GitHub, gitlab, bitbucket.
Tìm hiểu về Org Data của các hệ thống quản lí mã nguồn.
Ứng dụng thực tế: Xây dựng plugin hiển thị các pull request đang mở từ github trên Backstage.
Mini Projects:
Cấu hình Backstage để hiển thị danh sách các bucket S3.
Tích hợp Backstage với GitHub để hiển thị thông tin về các kho lưu trữ và thành viên tổ chức.
Ngày 13: Integrations phần 2
Chủ đề:
Tích hợp với các công cụ giám sát (Datadog):
Cấu hình Backstage để hiển thị số liệu giám sát từ Datadog.
Cài đặt Datadog tích hợp vào Backstage.
Tích hợp với các công cụ quản lý sự cố (PagerDuty):
- Xây dựng 1 plugin hiển thị các cảnh báo từ Pagerduty.
Xây dựng plugin tích hợp tùy chỉnh:
- Hướng dẫn xây dựng các plugin tích hợp để kết nối với các hệ thống nội bộ hoặc hệ thống bên ngoài khác.
Ứng dụng thực tế: xây dựng bảng điều khiển tổng quan, hiển thị các thông tin từ nhiều nguồn khác nhau.
Mini Projects:
Xây dựng một plugin Backstage hiển thị số liệu CPU và bộ nhớ của các pod Kubernetes từ Datadog.
Xây dựng một plugin Backstage hiển thị danh sách các sự cố đang mở từ PagerDuty.
Ngày 14-15: Plugins
Chủ đề:
Xây dựng và phát triển plugin Backstage: Giao diện người dùng, API, backend.
Tích hợp plugin với Software Catalog và TechDocs.
Viết kiểm thử cho plugin.
Triển khai và quản lý plugin.
Ứng dụng thực tế: Xây dựng các plugin tùy chỉnh để đáp ứng nhu cầu cụ thể của tổ chức.
Mini Projects:
Xây dựng một plugin Backstage hiển thị thông tin về các cuộc gọi API.
Xây dựng một plugin Backstage để quản lý cấu hình môi trường.
Tương tự ta sẽ tách thành 2 ngày riêng biệt.
Ngày 14: Plugins phần 1.
Chủ đề:
Giới thiệu tổng quan về plugins:
Kiến trúc plugin.
các plugin hiện có.
Xây dựng plugins cơ bản.
cách tạo một plugins backstage.
Cấu trúc của một plugin.
phát triển plugin frontend đơn giản.
Tích hợp plugins vào catalog.
tích hợp các thành phần của plugin, vào software catalog.
tích hợp chức năng search vào plugin.
ứng dụng thực tế: Tạo 1 plugin có thể hiển thị thông tin chi tiết của 1 service từ Software Catalog.
Mini project:
tạo 1 plugin đơn giản hiển thị chữ "Hello world".
Tạo 1 plugin có khả năng hiển thị thông tin chi tiết của 1 entity được chọn từ catalog.
Ngày 15: Plugins phần 2.
Chủ đề:
Phát triển plugins nâng cao.
Tìm hiểu về Composability System.
tìm hiểu về Internationalization.
Plugin Analytics.
Feature Flags.
OpenAPI.
Schema-first plugins with OpenAPI.
Backend plugins và APIs.
Proxying, và backend plugin.
Call Exsiting API.
Kiểm thử và xuất bản plugins.
Testing.
Publish private plugins.
Add plugins to directory.
ứng dụng thực tế: tạo 1 plugin backend để xử lí việc giao tiếp với database, và tạo các Api, sau đó plugin frontend giao tiếp với Api backend, để hiển thị thông tin.
Mini project:
Tạo plugin có tích hợp backend, để hiển thị danh sách các item từ database.
Viết các test case cho plugin vừa tạo.
Ngày 16-17: Backends and APIs
Chủ đề:
Xây dựng và quản lý backend Backstage: API, dịch vụ, cơ sở dữ liệu.
Triển khai và quản lý API Backstage.
Viết kiểm thử cho backend.
Theo dõi và gỡ lỗi backend.
Ứng dụng thực tế: Xây dựng các API backend tùy chỉnh để phục vụ nhu cầu của các plugin Backstage.
Mini Projects:
Xây dựng một API backend Backstage để truy xuất thông tin từ cơ sở dữ liệu PostgreSQL.
Triển khai API backend Backstage trên Kubernetes.
Tương tự các ngày trước, ta sẽ tách thành 2 ngày riêng biệt.
Ngày 16: Backends and APIs phần 1
Chủ đề:
Giới thiệu tổng quan Backend và API.
Tổng quan về kiến trúc backend của Backstage.
Phân tích các dịch vụ core.
Xây dựng backend cơ bản.
Hướng dẫn tạo và cấu hình backend plugin.
Viết API đơn giản với Node.js và Express.js.
Làm việc với cơ sở dữ liệu.
Cài đặt và cấu hình cơ sở dữ liệu (PostgreSQL).
Sử dụng Knex.js để tương tác với cơ sở dữ liệu.
ứng dụng thực tế: xây dựng 1 api backend để quản lí các config của hệ thống.
Mini project:
tạo 1 backend plugin cơ bản, và tạo 1 api trả về 1 chuỗi string.
tạo 1 api backend để lấy thông tin các item từ database.
Ngày 17: Backends and APIs phần 2.
Chủ đề:
Phát triển Api nâng cao.
tìm hiểu sâu hơn về backend system.
Cách tạo ra các module, extension points.
Tìm hiểu về new frontend system, và các utility api của hệ thống này.
Kiểm thử và triển khai backend.
Viết unit test và integration test cho API backend.
Triển khai API backend lên Kubernetes.
Tìm hiểu về Observability.
Bảo mật và hiệu suất API.
Xử lý lỗi và logging.
Tối ưu hóa hiệu suất API.
ứng dụng thực tế: tạo 1 backend plugin, và tạo api giao tiếp với 1 hệ thống bên thứ 3, và trả dữ liệu về cho frontend.
Mini project:
viết test case cho backend plugin vừa tạo ngày 16.
tạo 1 api backend giao tiếp với 1 api bên thứ 3, và trả về dữ liệu.
Ngày 18: Backstage CLI và Local Development
Chủ đề:
Sử dụng Backstage CLI để tạo và quản lý plugin, backend.
Phát triển cục bộ: Liên kết gói cục bộ, gỡ lỗi.
Tìm hiểu về profiling backstage.
Package Metadata.
ứng dụng thực tế: tạo plugin, backend, bằng Backstage CLI. tìm hiểu về các câu lệnh của Backstage CLI.
Mini Projects:
Sử dụng Backstage CLI để tạo một plugin mới và chạy nó cục bộ.
Gỡ lỗi một API backend Backstage bằng trình gỡ lỗi Node.js.
Ngày 19-20: Tutorials và Migrations
Chủ đề:
Tutorials Non-technical và Technical.
Migrations.
Backstage Accessibility.
ứng dụng thực tế: Tìm hiểu về các usecase của backstage, và áp dụng nó. tìm hiểu về việc migration các version của backstage.
Mini Projects:
Thực hiện một hướng dẫn di chuyển từ một phiên bản Backstage cũ hơn sang phiên bản mới hơn.
Thêm các tính năng trợ năng vào một plugin Backstage.
Tương tự ta sẽ chia 2 ngày này ra làm 2 ngày riêng biệt.
Ngày 19: Tutorials và các kiến thức nâng cao.
Chủ đề:
Tìm hiểu các hướng dẫn về backstage.
Tìm hiểu về Non-technical Tutorials, và Technical Tutorials.
Các usecase điển hình của backstage.
Tìm hiểu về việc migrate.
React Router 6.0 Migration
Migrating to React 18
Package Role Migration
Migrating away from @backstage/core
Migration to Yarn
Migrating from Material UI v4 to v5
Migrating to New Auth Services
ứng dụng thực tế: lựa chọn 1 hướng dẫn phù hợp, và làm theo.
Mini project:
Tìm hiểu và thực hành về 1 hướng dẫn technical của Backstage.
Tìm hiểu và thực hiện 1 loại migration của backstage.
Ngày 20: Backstage Accessibility và tổng kết.
Chủ đề:
Tìm hiểu về Backstage Accessibility.
Tổng kết lại các kiến thức về backstage đã học.
ứng dụng thực tế: tạo 1 plugin có tính năng Accessibility.
Mini project:
tạo 1 plugin, và thực hiện theo các hướng dẫn về Accessibilitiy.
tạo 1 trang tổng hợp lại các kiến thức quan trọng về Backstage.
Subscribe to my newsletter
Read articles from Hải Yến Trịnh directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
