ЁЯПЫя╕П рдзрдбрд╛ 12 тАФ Developer portal рдЖрдгрд┐ рд╕рдВрдкреВрд░реНрдг рдЪрд┐рддреНрд░: рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдХрдХреНрд╖
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 12 ┬╖ рдорд╛рдЧреАрд▓: lesson-11-measuring ┬╖ рд╢реЗрд╡рдЯрдЪрд╛ рдзрдбрд╛ ЁЯОУ
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбреЗ 01тАУ11, рдЖрдгрд┐ internal developer portal: рдкреНрд░рддреНрдпреЗрдХ service рдЪреЗ рдПрдХ рдкрд╛рди, рдЬреЗ рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдЪреНрдпрд╛
рдмрд╛рдХреАрдЪреНрдпрд╛ рднрд╛рдЧрд╛рдВрдирд╛ рдорд╛рд╣реАрдд рдЕрд╕рд▓реЗрд▓реЗ рд╕рдЧрд│реЗ рдЧреЛрд│рд╛ рдХрд░рддреЗ тАФ owner, dependencies рдЖрдгрд┐ dependents (рдзрдбрд╛ 04),
scorecard (10), policy findings (09), pipeline version (07), preview environments (06) рдЖрдгрд┐
DORA рдЖрдХрдбреЗ (11). рдЖрдгрд┐ рдХреЛрд░реНрд╕рдЪрд╛ рд╕рдВрдкреВрд░реНрдг рдирдХрд╛рд╢рд╛. portal_page()
idp/guard.py рдордзреНрдпреЗ, portal() idp/demo.py рдордзреНрдпреЗ.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЛрдареЗ рдЭрд╛рд▓реЗ рдЖрд╣реЗ: kit рдЪреЗ рдХрдкрд╛рдЯ, рдиреЛрдВрджрд╡рд╣реА, menu, рдЪрд╛рдЪрдгреА рд╡рд░реНрдЧрдЦреЛрд▓реНрдпрд╛, рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдХрд╛рдорд╛рдВрдЪреА cards, рдХрд┐рд▓реНрд▓реНрдпрд╛рдВрдЪреЗ рдХрдкрд╛рдЯ, рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА-рдпрд╛рджреА, рддрдпрд╛рд░реА-cards рдЖрдгрд┐ рдЖрдХрдбреНрдпрд╛рдВрдЪреА рд╡рд╣реА. рдирд╡реНрдпрд╛ рд╢рд┐рдХреНрд╖рд┐рдХреЗрд▓рд╛ рддреА рд╕рдЧрд│реА рд╢реЛрдзрд╛рдпрд▓рд╛рдЪ рдирдХрд╛рд╢рд╛ рд▓рд╛рдЧреЗрд▓.
рдореНрд╣рдгреВрди рджреАрдкрд┐рдХрд╛ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдХрдХреНрд╖ рд╕реБрд░реВ рдХрд░рддреЗ. ЁЯПЫя╕П рдХрддрд░рд┐рдирд╛ рддрд┐рдереЗ рдпреЗрддреЗ рдЖрдгрд┐ рдореНрд╣рдгрддреЗ "exam-results". рдХрдХреНрд╖ рдПрдХ рдкрд╛рди рджрд╛рдЦрд╡рддреЛ:
- owner: science ┬╖ results database рдЖрдгрд┐ sign-in system рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди
- parent portal рддрд┐рдЪреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ
- рддрдпрд╛рд░реА-card: 92%, gold тАФ рдкреБрдвреЗ: рдкрд╛рд▓рдХрд╛рдВрдирд╛ рджрд┐рд▓реЗрд▓реЗ рд╡рдЪрди рд▓рд┐рд╣рд╛
- рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА-рдпрд╛рджреА: рдПрдХ рдЗрд╢рд╛рд░рд╛ тАФ "photo box public рдЖрд╣реЗ тЖТ рддреЛ private рдХрд░рд╛ рдЖрдгрд┐ display kit рд╡рд╛рдкрд░рд╛"
- рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдХрд╛рдорд╛рдЪреЗ card: v2 тЖТ рдЖрдЬ рдпрд╛рдЪрд╛ рдЕрд░реНрде v2.1.0
- рдЖрдард╡рдбреНрдпрд╛рд▓рд╛ 3 рдмрджрд▓, рдХрд▓реНрдкрдиреЗрдкрд╛рд╕реВрди рдЪрд╛рд▓реВ рд╣реЛрдИрдкрд░реНрдпрдВрдд 5 рддрд╛рд╕, 8% рдмрд┐рдШрдбрддрд╛рдд, рджреБрд░реБрд╕реНрддреАрд▓рд╛ 2 рддрд╛рд╕
рд╕реНрд╡рд╛рдЧрдд рдХрдХреНрд╖ рд╕реНрд╡рддрдГ рдХрд╛рдо рдХрд░рдд рдирд╛рд╣реА. рддреЗ kits, menu рдЖрдгрд┐ рдХрдкрд╛рдЯ рдХрд░рддрд╛рдд. рдХрдХреНрд╖ рддреНрдпрд╛рдВрдирд╛ рдПрдХрд╛ рдЬрд╛рдЧреА, рд╕рдЧрд│реНрдпрд╛рдВрд╕рд╛рдареА рдПрдХрд╛рдЪ рдкрджреНрдзрддреАрдиреЗ, рд╕рд╣рдЬ рд╕рд╛рдкрдбрддреАрд▓ рдЕрд╕реЗ рдХрд░рддреЛ.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
cat["ЁЯУЗ catalog (04)"] --> p["ЁЯПЫя╕П portal page<br/>exam-results"]
sc["ЁЯПЕ scorecard (10)<br/>92% gold"] --> p
po["ЁЯЫбя╕П policy (09)<br/>1 warning"] --> p
pi["ЁЯЪЪ pipeline (07)<br/>v2 тЖТ v2.1.0"] --> p
pr["ЁЯзк previews (06)"] --> p
do["ЁЯУК DORA (11)<br/>3.0/week ┬╖ 5.0 h"] --> p
p --> t["ЁЯЫдя╕П templates (03) and<br/>self-service (05, 08)<br/>one click away"]
ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрд╡реГрддреНрддреА + рдПрдХ lab: https://school-edh.pages.dev/platform-engineering/lesson-diagrams.html#l12
тЭУ рдХрд╛рдп
- Internal developer portal тАФ platform рдЪрд╛ user interface: рдПрдХ website рдЬрд┐рдереЗ developers рдирд╛ services, docs, owners, templates рдЖрдгрд┐ self-service actions рд╕рд╛рдкрдбрддрд╛рдд. Portal рдореНрд╣рдгрдЬреЗ platform рдирд╛рд╣реА; рддреЛ рддреНрдпрд╛рдЪрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрдХреНрд╖ рдЖрд╣реЗ. Platform рдлрдХреНрдд CLI рдЖрдгрд┐ templates рд╕рд╣ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕реВ рд╢рдХрддреЛ; рдорд╛рдЧреЗ рдХрд╛рд╣реАрдЪ рдирд╕рд▓реЗрд▓рд╛ portal рдореНрд╣рдгрдЬреЗ рдлрдХреНрдд рд╕реБрдВрджрд░ catalog.
- Backstage тАФ developer portals рдмрдирд╡рдгреНрдпрд╛рд╕рд╛рдареАрдЪрд╛ open-source framework, Spotify рдордзреНрдпреЗ рдмрдирд▓реЗрд▓рд╛, 2020 рдордзреНрдпреЗ open-source рдЭрд╛рд▓реЗрд▓рд╛ рдЖрдгрд┐ рдЖрддрд╛ CNCF incubating project. рддреНрдпрд╛рдЪреА рдореБрдЦреНрдп features рдЖрд╣реЗрдд Software Catalog, Software Templates (scaffolder), TechDocs (docs-like-code, MkDocs рдиреЗ рдмрдирд╡рд▓реЗрд▓реЗ) рдЖрдгрд┐ Search, рдЖрдгрд┐ рддреЛ plugins рдиреЗ рд╡рд╛рдврд╡рд▓рд╛ рдЬрд╛рддреЛ (Kubernetes, CI, cost, scorecards тАж). рддреЛ рддреБрдореНрд╣рд╛рд▓рд╛рдЪ рдЪрд╛рд▓рд╡рд╛рд╡рд╛ рдЖрдгрд┐ рд╕рд╛рдВрднрд╛рд│рд╛рд╡рд╛ рд▓рд╛рдЧрддреЛ тАФ рддреЛ framework рдЖрд╣реЗ, рддрдпрд╛рд░ product рдирд╛рд╣реА.
- Commercial portals тАФ Port, Cortex, OpsLevel рдЖрдгрд┐ рдЗрддрд░ catalog, scorecards рдЖрдгрд┐ self-service actions рдЕрд╕рд▓реЗрд▓рд╛ hosted portal рджреЗрддрд╛рдд. Port entities рдирд╛ blueprints рдореНрд╣рдгреВрди рдорд╛рдВрдбрддреЛ. рдЕрдиреЗрдХ vendors hosted рдХрд┐рдВрд╡рд╛ supported Backstage рдкрдг рд╡рд┐рдХрддрд╛рдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде Red Hat Developer Hub).
- Single pane of glass тАФ рдПрдХрдЪ рдкрд╛рди рд╕рдЧрд│реЗ рджрд╛рдЦрд╡реЗрд▓ рд╣реЗ рд╡рдЪрди. рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧрд╛рдорд╛рдЧрдЪрд╛ data рддрд╛рдЬрд╛ рдЕрд╕реЗрд▓ рддрд░рдЪ рддреЗ рдЦрд░реЗ рдард░рддреЗ; рдЬреБрдирд╛ data рджрд╛рдЦрд╡рдгрд╛рд░рд╛ portal рдирд╕рд▓реЗрд▓реНрдпрд╛ portal рдкреЗрдХреНрд╖рд╛рд╣реА рд╡рд╛рдИрдЯ, рдХрд╛рд░рдг рд▓реЛрдХ рддреНрдпрд╛рд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рддрд╛рдд.
- Platform maturity тАФ CNCF Platform Engineering Maturity Model (2023) investment, adoption, interfaces, operations рдЖрдгрд┐ measurement рдпрд╛рдВрдордзреАрд▓ рдЯрдкреНрдкреНрдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЛ. рддреЗ рдЪрд░реНрдЪреЗрдЪреЗ рд╕рд╛рдзрди рдЖрд╣реЗ, рдкреВрд░реНрдг рдХрд░рд╛рдпрдЪреА checklist рдирд╛рд╣реА.
ЁЯдФ рдХрд╛
рдХрд╛рд░рдг рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧрд╛рдиреЗ рдПрдХ рдкреНрд░рд╢реНрди рд╕реЛрдбрд╡рд▓рд╛, рдЖрдгрд┐ рд╕рдЧрд│реНрдпрд╛рдВрдиреА рдорд┐рд│реВрди рдПрдХ рдирд╡рд╛ рдкреНрд░рд╢реНрди рдирд┐рд░реНрдорд╛рдг рдХреЗрд▓рд╛: рдкрд╛рд╣рд╛рдпрд▓рд╛ рдЦреВрдк рдЬрд╛рдЧрд╛. Portal platform рд▓рд╛ рдЕрд╕реЗ рдмрдирд╡рддреЛ рдХреА рдирд╡реА рд╕рд╣рдХрд╛рд░реА рдкрд╣рд┐рд▓реНрдпрд╛рдЪ рджрд┐рд╡рд╢реА рддреЗ рд╢реЛрдзреВ рд╢рдХрддреЗ. рдкреНрд░рддреНрдпреЗрдХ team рдЖрдкрд▓реА service рдкрд╛рд╣рдд рдЕрд╕рддрд╛рдирд╛рдЪ рддреЛ рддрд┐рд▓рд╛ рддрд┐рдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЙрдгрд┐рд╡рд╛ (scorecard, warnings) рджрд╛рдЦрд╡рддреЛ. Portal рд╢реЗрд╡рдЯреА рдмрдирд╡рдгреЗ рд╣реЗ рдЬрд╛рдгреВрдирдмреБрдЬреВрди рдЖрд╣реЗ: portal рддреНрдпрд╛рдорд╛рдЧрдЪреНрдпрд╛ catalog, templates рдЖрдгрд┐ data рдЗрддрдХрд╛рдЪ рдЪрд╛рдВрдЧрд▓рд╛ рдЕрд╕рддреЛ.
ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)
idp/guard.py рдордзреАрд▓ portal_page(name, catalog, passed, manifest, pipeline_ref, previews_live, deploys, weeks, resolve) рдЖрдзреАрдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдзрдбреНрдпрд╛рддреАрд▓ рднрд╛рдЧ call рдХрд░рддреЛ:
owner, dependencies рдЖрдгрд┐ dependents рд╕рд╛рдареА Catalog, card рд╕рд╛рдареА score(), warnings рд╕рд╛рдареА audit mode
рдордзреНрдпреЗ evaluate(), pipeline рд╕рд╛рдареА resolve_ref(), рдЖрдгрд┐ рдЖрдХрдбреНрдпрд╛рдВрд╕рд╛рдареА dora(). рддреЛ рд╕рд╣рд╛ рдУрд│реА рдкрд░рдд
рджреЗрддреЛ тАФ рддреЗрдЪ рдкрд╛рди. idp/demo.py рдордзреАрд▓ portal() exam-results рдЪреЗ рдкрд╛рди
рдЫрд╛рдкрддреЛ.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 idp/demo.py portal
python3 - <<'EOF'
import sys; sys.path.insert(0, "idp"); from demo import school_catalog, AFTER, BEFORE
from guard import CHECKS, portal_page; from selfserve import resolve_ref
c = school_catalog()
passed = {n for n, _ in CHECKS} - {"SLO written", "has a runbook"}
m = dict(labels={"owner": "maths"}, image="timetable:latest", limits={"cpu": "250m", "memory": "128Mi"}, env="production", replicas=2)
for line in portal_page("timetable", c, passed, m, "v2.0.0", 0, BEFORE, 4, resolve_ref): print(line)
EOF
python3 idp/demo.py
python3 idp/test_idp.py
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
portal рд╣реЗ рдЫрд╛рдкрддреЗ:
тФАтФА the portal page for exam-results (one place, gathered from every part of the office):
owner science ┬╖ lifecycle production ┬╖ depends on results-db, auth
depended on by parent-portal
scorecard 92% (gold) ┬╖ next: SLO written
policy: allowed with warnings ┬╖ bucket is public тЖТ set public_bucket: false and serve files through the CDN kit
pipeline v2 тЖТ v2.1.0 ┬╖ preview environments live: 1
DORA: 3.0 deploys/week ┬╖ lead time 5.0 h ┬╖ failure rate 8% ┬╖ recovery 2.0 h
рддреБрдордЪрд╛ snippet рд╣реЗ рдЫрд╛рдкрддреЛ:
owner maths ┬╖ lifecycle production ┬╖ depends on auth
depended on by parent-portal
scorecard 83% (silver) ┬╖ next: has a runbook
policy: allowed with warnings ┬╖ image tag is 'latest' or missing тЖТ pin a version such as :1.4.2 (the paved pipeline tags every build)
pipeline v2.0.0 тЖТ v2.0.0 ┬╖ preview environments live: 0
DORA: 1.0 deploys/week ┬╖ lead time 150.0 h ┬╖ failure rate 50% ┬╖ recovery 23.0 h
рдкреВрд░реНрдг run тЬЕ done тАФ every teacher has a classroom рдиреЗ рд╕рдВрдкрддреЛ, рдЖрдгрд┐ tests
12/12 passed рдиреЗ.
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
рдПрдХрд╛ function call рдиреЗ рд╕рд╣рд╛ рдзрдбреНрдпрд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рдЧреЛрд│рд╛ рдХреЗрд▓реА. Timetable рдЪреЗ рдкрд╛рди maths team рд▓рд╛ рдХреЛрдгреАрд╣реА
report рди рд▓рд┐рд╣рд┐рддрд╛ рддреАрди рдХрд╛рдореЗ рд╕рд╛рдВрдЧрддреЗ: runbook рдЬреЛрдбрд╛, image pin рдХрд░рд╛, рдЖрдгрд┐ v2.0.0 рд╡рд░реВрди @v2 рд╡рд░
рдЬрд╛рдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛. рддреНрдпрд╛рдЪреА DORA рдУрд│ ("before" data рд╡рд╛рдкрд░реВрди) рддреА рдХреБрдареВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░реЗрд▓ рддреЗ рджрд╛рдЦрд╡рддреЗ. рдкрд╛рдирд╛рд╡рд░рдЪреЗ
рдкреНрд░рддреНрдпреЗрдХ value рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдХрд╛рдо рдХрд░рдгрд╛рд▒реНрдпрд╛ рдПрдЦрд╛рджреНрдпрд╛ рднрд╛рдЧрд╛рддреВрди рдЖрд▓реЗ; portal рддреЗ рдлрдХреНрдд
рд╡рд╛рдЪрддреЛ. рд╣реАрдЪ рд░рдЪрдирд╛ рдЖрд╣реЗ: portal рд╣рд╛ рд╕реНрд╡рд╛рдЧрдд рдХрдХреНрд╖ рдЖрд╣реЗ, рдХрд╛рд░реНрдпрд╛рд▓рдп рдирд╛рд╣реА.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- catalog, templates рдЖрдгрд┐ self-service рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдпреЗрдгреНрдпрд╛рдЖрдзреАрдЪ portal рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рдгреЗ
- Backstage рд▓рд╛ рдПрдХрджрд╛ install рдХрд░рд╛рдпрдЪреЗ product рд╕рдордЬрдгреЗ тАФ рддреЛ framework рдЖрд╣реЗ рдЬреНрдпрд╛рд▓рд╛ рдПрдХ team рд▓рд╛рдЧрддреЗ
- рдЬреБрдиреНрдпрд╛ data рдиреЗ рднрд░рд▓реЗрд▓рд╛ portal тАФ рд▓реЛрдХ рддреНрдпрд╛рд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рдгреЗ рдерд╛рдВрдмрд╡рддрд╛рдд, рдордЧ рддреЛ рд╡рд╛рдкрд░рдгреЗрд╣реА рдерд╛рдВрдмрд╡рддрд╛рдд
- рдПрдХрдореЗрд╡ рдЬрд╛рдЧрд╛ рди рдмрдирддрд╛ рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рдЖрдгрдЦреА рдПрдХ рдЬрд╛рдЧрд╛: tools рдирд╛ link рдХрд░рд╛, рддреНрдпрд╛рдВрдЪреА copy рдХрд░реВ рдирдХрд╛
- portal рдиреЗ teams рдЪреЗ рдХрд╛рдп рд╡рд╛рдЪрд╡рд▓реЗ (рдзрдбрд╛ 11) рдпрд╛рд╡рд░реВрди рди рдореЛрдЬрддрд╛ page views рд╡рд░реВрди рдореЛрдЬрдгреЗ
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд
рдЦрд▒реНрдпрд╛ machine рд╡рд░ Backstage app рд╕реБрд░реВ рдХрд░рдгреЗ (Node.js рдЖрдгрд┐ Yarn рд▓рд╛рдЧрддрд╛рдд):
npx @backstage/create-app@latest # asks for a name, creates the app
cd school-portal && yarn start # recent templates start frontend + backend (older ones used yarn dev)
рдзрдбрд╛ 04 рдордзреАрд▓ catalog files app-config.yaml рдордзреНрдпреЗ register рдХрд░рдгреЗ:
catalog:
locations:
- type: url
target: https://github.com/school/exam-results/blob/main/catalog-info.yaml
- type: url
target: https://github.com/school/paved-road/blob/main/templates/python-service/template.yaml
rules:
- allow: [Template]
Service рд▓рд╛ рддрд┐рдЪреНрдпрд╛ docs (TechDocs) рдЖрдгрд┐ CI рд╢реА рдЬреЛрдбрдгреЗ рддрд┐рдЪреНрдпрд╛ catalog-info.yaml рдордзреАрд▓ annotations рдиреЗ
рд╣реЛрддреЗ, рдЬрд╕реЗ backstage.io/techdocs-ref: dir:. рдЖрдгрд┐
github.com/project-slug: school/exam-results.
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: platform рдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЗрддрд░ рднрд╛рдЧрд╛рдкреНрд░рдорд╛рдгреЗ portal рд▓рд╛рд╣реА owner, roadmap рдЖрдгрд┐ users рджреНрдпрд╛ (рдзрдбрд╛ 02). рддреЛрд╣реА рдПрдХ product рдЖрд╣реЗ.
ЁЯОУ рдкреНрд░рддреНрдпреЗрдХ рд╢рд┐рдХреНрд╖рд┐рдХреЗрд▓рд╛ рд╡рд░реНрдЧрдЦреЛрд▓реА рдЖрд╣реЗ
рдХрд╛рдорд╛рдВрдЪреНрдпрд╛ рдУрдЭреНрдпрд╛рдЦрд╛рд▓реА рдмреБрдбрд╛рд▓реЗрд▓реНрдпрд╛ teams рдЖрдгрд┐ рд╡рд╛рдврддреА ticket рдЪреА рд░рд╛рдВрдЧ тЖТ product рдкреНрд░рдорд╛рдгреЗ рдЪрд╛рд▓рд╡рд▓реЗрд▓рд╛ platform, рд╕рд░реНрд╡рд╛рдд рдореЛрдареНрдпрд╛ рддреНрд░рд╛рд╕рд╛рдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВрди рдмрдирд╡рд▓реЗрд▓рд╛ тЖТ service рдпреЛрдЧреНрдп рдкрджреНрдзрддреАрдиреЗ рд╕реБрд░реВ рдХрд░рдгрд╛рд░реЗ golden-path templates тЖТ рдкреНрд░рддреНрдпреЗрдХ owner рдЖрдгрд┐ blast radius рдорд╛рд╣реАрдд рдЕрд╕рд▓реЗрд▓рд╛ catalog тЖТ quotas рдордзрд▓реЗ self-service resources тЖТ рд╕реНрд╡рддрдГрд╣реВрди рд╕рд╛рдл рд╣реЛрдгрд╛рд░реА preview environments тЖТ рдПрдХрдЪ versioned pipeline рд░рд╕реНрддрд╛ тЖТ versions рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рдВрд╕рд╣ secrets рдЖрдгрд┐ config тЖТ рджреБрд░реБрд╕реНрддреА рдХрд╢реА рдХрд░рд╛рдпрдЪреА рддреЗ рд╕рд╛рдВрдЧрдгрд╛рд░реЗ guardrails тЖТ рдкреБрдврдЪреА рдкрд╛рдпрд░реА рджреЗрдгрд╛рд░реЗ scorecards тЖТ рд▓реЛрдХрд╛рдВрдирд╛рд╣реА рд╡рд┐рдЪрд╛рд░реВрди рдХреЗрд▓реЗрд▓реЗ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдореЛрдЬрдорд╛рдк тЖТ рдЖрдгрд┐ рд╕рдЧрд│реЗ рдПрдХрддреНрд░ рдЖрдгрдгрд╛рд░рд╛ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдХрдХреНрд╖. рддреБрдореНрд╣реА рдлрдХреНрдд platform engineering рд╢рд┐рдХрд▓рд╛ рдирд╛рд╣реАрдд тАФ рддреБрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛рд╣реА team рдЪрд╛ рджрд┐рд╡рд╕ рдкрд╛рд╣реВрди рдпреЛрдЧреНрдп рдкреНрд░рд╢реНрди рд╡рд┐рдЪрд╛рд░реВ рд╢рдХрддрд╛: рддреЗ рдХрд╢рд╛рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдд рдЖрд╣реЗрдд, рддреЗ рдХрд╛рдп рдкреБрдиреНрд╣рд╛ рдкреБрдиреНрд╣рд╛ рдмрдирд╡рдд рдЖрд╣реЗрдд, рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╛рд░реНрдЧрд╛рд▓рд╛ рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдХрд╛рдп рдмрдирд╡реЗрд▓? ЁЯЫдя╕ПЁЯПЫя╕ПЁЯОУ
тПня╕П рдкреБрдвреЗ
рдЗрддрд░ рд╢рд╛рд│рд╛. CI/CD рд╢рд╛рд│рд╛ pipelines рдордзреНрдпреЗ рдЦреЛрд▓рд╡рд░ рдЬрд╛рддреЗ; Argo CD рд╢рд╛рд│рд╛ GitOps delivery рдЖрдгрд┐ ApplicationSets рд╡рд░; Kubernetes рд╢рд╛рд│рд╛ рдмрд╣реБрддреЗрдХ platforms рдЬреНрдпрд╛рд╡рд░ рдЪрд╛рд▓рддрд╛рдд рддреНрдпрд╛рд╡рд░; Observability рд╢рд╛рд│рд╛ alerts рдЖрдгрд┐ dashboards kits рд╡рд░; Security рд╢рд╛рд│рд╛ guardrails рдЬреНрдпрд╛рдЪреЗ рд░рдХреНрд╖рдг рдХрд░рддрд╛рдд рддреНрдпрд╛рд╡рд░; School portal рдордзреНрдпреЗ рдмрд╛рдХреА рд╕рдЧрд│реЗ рдЖрд╣реЗ.
git checkout main
python3 idp/demo.py # one last run, for fun