Architektura samoobslužné platformy pro vývojáře
Samoobslužné prostředí pro vývojáře spoléhá na kombinaci konceptů, vzorů a nástrojů, které pokrývají vlastní, předdefinované a opensourcové technologie. Cílem je umožnit vývojářům řídit provádění a zřizování úloh při zachování centralizované viditelnosti. Primárním cílem by mělo být úkoly, které jsou zdlouhavé nebo příliš složité, aby vývojáři mohli pracovat nezávisle na sobě.
Komponenty samoobslužné platformy pro vývojáře
Samoobslužné základy vývojářů se skládají z několika klíčových komponent, které spolupracují na zjednodušení a automatizaci pracovních postupů vývojářů. Mezi tyto komponenty patří rozhraní API platformy pro vývojáře, graf vývojářských platforem, orchestrator vývojářských platforem, poskytovatelé vývojářských platforem a profil uživatele a metadata týmu.
Rozhraní API platformy pro vývojáře funguje jako centrální bod interakce, který slouží jako smluvní rozhraní mezi uživatelskými prostředími a dalšími systémy. Rozhraní API platformy pro vývojáře by mělo umožňovat přístup k datům a řídit akce zřizování prostřednictvím různých uživatelských rozhraní. Slouží jako primární vrstva ověřování a zabezpečení a omezuje přístup k podkladovým, nezpracovaným rozhraním API spolu s odpovídajícími daty a operacemi. Rozhraní API spravuje profily uživatelů, role v rámci platformy a identifikátory zprostředkovatele primární identity, aby se zajistilo správné řízení přístupu.
Doplněním rozhraní API platformy pro vývojáře je Graf platformy pro vývojáře, zabezpečená spravovaná datová struktura, která usnadňuje zjišťování a přidružení entit a šablon v rámci platformy. Entity agregují data z více zdrojů, zatímco šablony vedou uživatelské vstupy pro automatizaci.
Vývojový graf platformy umožňuje přidružit entity a šablony od více poskytovatelů do prohledávatelné struktury. I když data těchto entit nemusí být uložená přímo v grafové databázi, interakce s zprostředkovateli je možné ukládat do mezipaměti spolu s potřebnými metadaty. Tento graf se stává zvlášť cenným při práci s běžnými entitami, kterými přispělo více poskytovatelů. Rozhraní API můžou například pocházet ze služby Azure API Center, zatímco nasazení a prostředí se můžou načíst ze systémů průběžného nasazování. Graf využívá uživatelské prostředí prostřednictvím společného rozhraní API, které umožňuje zjišťování, vyhledávání a zásady správného řízení.
Pokud chcete provádět akce založené na šablonách, orchestrátor vývojářské platformy směruje a sleduje požadavky, koordinuje se specializovanými poskytovateli vývojářských platforem, kteří se integrují s podřízenými systémy. Orchestrátor umožňuje vývojářům nebo systémům požadovat akce pomocí šablon bez přímého provádění akcí. Koordinuje s modulem úloh, modulem pracovního postupu nebo jiným orchestrátorem pro provádění akcí. Tato komponenta je nezbytná pro povolení samoobslužné služby, protože umožňuje vývojářům spouštět akce bez nutnosti přímých oprávnění. Na rozdíl od CI/CD nejsou tyto akce omezené na zdrojový kód aplikace. Moduly pracovních postupů, jako jsou GitHub Actions nebo Azure Pipelines, můžou sloužit jako orchestrátory, ale abstrakce můžou být užitečné pro podporu různých modulů v průběhu času. Tato flexibilita umožňuje migraci motoru, podporuje ruční kroky pro procesy, které se můžou později automatizovat, a umožňuje akce zaměřené na role, které nejsou vývojové (například účty splatné). Kromě toho je možné jednodušší úlohy zpracovávat prostřednictvím požadavků HTTP a vyhnout se nutnosti složitých modulů.
Poskytovatelé vývojářských platforem spravují logiku operací CRUD (Create, Read, Update a Delete) u entit a provádění žádostí o akce, které podporují různé pracovní postupy a služby. Poskytovatelé do rozhraní API zavádějí funkce prostřednictvím modelu rozšiřitelného zprostředkovatele, který umožňuje klíčové funkce, jako je automatizace a agregace dat. Tento model podporuje volné párování, což umožňuje přírůstkovou integraci nových funkcí a zlepšení udržovatelnosti. Díky podpoře vnitřní zdrojové identity může přispět funkce platformy a udržovat je různé týmy, což minimalizuje zatížení údržby centrálních týmů. I když je důležité pečlivě kontrolovat kód zprostředkovatele a spravovat přístup, tento připojitelný přístup pomáhá škálovat úsilí o vývoj v celé organizaci.
Základem jsou také možnosti pro správu profilů uživatelů a metadat týmu, které spojují individuální a týmové informace s účty hostovanými zprostředkovatelem identity, jako je ID Microsoft Entra. Tato metadata slouží k seskupování a řízení přístupu v rozhraní API platformy pro vývojáře. I když by bylo možné tyto informace uložit do vývojové platformy Graphu, oddělení této informace zajišťuje přehlednost.
Samoobslužná služba vývojáře je přístupná prostřednictvím centralizovaného uživatelského rozhraní a uživatelského prostředí (UI/UX). Nabídka jednotného přístupového bodu zjednodušuje interakce pro vývojáře a usnadňuje používání pracovních postupů a prostředků bezproblémovým a intuitivním způsobem.
Samoobslužné základy vývojářů nemusí být úplně sestavené od začátku. Místo toho slouží jako koncepční průvodce schopnostmi, které se mají v průběhu času zaměřit. Počáteční implementace je možné zjednodušit pomocí stávajících nástrojů, rozhraní nebo tříd, které řeší nejnaléhavější priority zjištěné prostřednictvím zpětné vazby zákazníků. Když začnete s malými a iteracemi, může se základ vyvíjet tak, aby efektivně splňoval nové požadavky.
Klíčové koncepty zprostředkovatele vývojářské platformy
Efektivní správa a orchestrace prostředků na vývojářské platformě závisí na použití entit spolu s jejich vlastnostmi a šablonami. Tyto klíčové koncepty poskytují strukturu a automatizaci, což umožňuje bezproblémovou integraci různých poskytovatelů a usnadňuje konzistentní pracovní postupy a zásady správného řízení.
Entity
Entity jsou klíčové objekty, které vývojář nebo systém potřebuje sledovat, aktualizovat, prezentovat nebo reagovat na interní platformě pro vývojáře. Tyto entity můžou mít vztahy mezi sebou, které tvoří graf, který poskytuje klíčové informace o platformě. Poskytovatelé vývojářských platforem můžou výstupní entity, které podporují různé základní funkce, jako je zjišťování externích prostředků, provádění analýzy závislostí nebo zpřístupnění informací o vlastnictví a správci. Dobře definované rozhraní zprostředkovatele zjednodušuje integraci, testování a nasazení a současně umožňuje vývojářským týmům pracovat nezávisle.
Obecné vlastnosti
K efektivní správě entit je užitečné definovat sadu společných vlastností. Některé navrhované vlastnosti zahrnují jedinečný identifikátor, název, původního zprostředkovatele a volitelná přidružení pro uživatele, týmy nebo jiné entity. Tyto vlastnosti jsou důležité pro řízení přístupu na základě role (RBAC), zjišťování a agregaci dat. Implementace RBAC od začátku je důležitá pro zabezpečení a škálování platformy v průběhu času. Přidružení uživatelů a týmů jsou obzvláště cenná, protože pomáhají při zjišťování a spolupráci, což umožňuje efektivní opakované použití, podporu a vnitřní zdroje v rámci platformy.
Běžné entity a entity specifické pro zprostředkovatele
Měli byste také definovat sadu běžných normalizovaných entit vysoké úrovně, které mohou výstupovat více poskytovatelů. Může se jednat o prostředí, prostředky, rozhraní API, úložiště, komponenty a nástroje. Tyto entity by měly být koncepční a měly by se zaměřit na širokou kategorizaci (například prostředí) místo podrobných technických podrobností (například na interní infrastrukturu). Toto zobrazení na vysoké úrovni usnadňuje zjišťování a umožňuje agregaci dat v průběhu času a současně odkazuje na podrobnosti nižší úrovně mimo systém. Kromě toho, jak se vaše platforma vyvíjí, může být potřeba přizpůsobit rostoucí sadu typů entit specifických pro poskytovatele, aby bylo možné splnit různé případy použití.
Šablony
Šablony jsou navržené tak, aby zřídily akce, jako je zřizování infrastruktury, vytváření úložiště nebo jiné dlouhotrvající procesy. Tyto šablony jsou dostupné prostřednictvím poskytovatelů platformy pro vývojáře a zahrnují běžné vlastnosti, jako jsou přidružení entit a požadované vstupy (například názvy prostředků). Šablony můžou představovat různé formáty, včetně šablon IaC (Infrastructure-as-Code), šablon aplikací nebo parametrizovaných skriptů. Často jsou specifické pro poskytovatele s různými reprezentacemi v závislosti na používané technologii. Mezi příklady těchto reprezentací patří šablony Terraformu nebo Bicep, grafy Helm, parametrizované pracovní postupy GitHub Actions, Azure Pipelines, jednoduché skripty nebo vlastní formáty přizpůsobené konkrétním ekosystémům poskytovatelů.
I když šablony nemusí být uložené centrálně, musí být přístupné prostřednictvím poskytovatele, aby se zajistil konzistentní přístup napříč platformou. Můžou existovat v různých úložištích, registrech nebo katalogech v závislosti na případu použití. Úložiště šablon GitHubu se můžou například používat pro šablony aplikací, zatímco šablony IaC se můžou nacházet v úložišti s omezeným katalogem, ke kterému vývojáři přistupují nepřímo prostřednictvím nástrojů, jako jsou prostředí nasazení Azure. Jiné šablony IaC můžou být uložené v registru artefaktů Open Container Initiative (OCI), jako jsou grafy Helm. V některých případech může šablona jednoduše odkazovat na parametrizovaný koncový bod HTTP.
Technici platformy nebo specialisté na doménu obvykle tyto šablony sestavují a sdílejí je s vývojářskými týmy pro opakované použití. Centralizace používání šablon v rámci systému usnadňuje přístup a zároveň vynucuje standardy a zásady organizace. Tento proces pomáhá udržovat kontrolu a dodržování předpisů napříč platformou a zároveň umožnit vývojářům pracovat efektivněji.
GitHub Actions jako poskytovatelé platforem
Abychom si ukázali, jak poskytovatel funguje, podívejme se na GitHub Actions a Azure Pipelines. Kterákoliv z nich může sloužit jako poskytovatel vývojářské platformy tak, že aktivuje pracovní postupy nebo kanály procházejí příslušnými rozhraními API, jako je rozhraní REST API GitHub Actions nebo rozhraní API kanálu Azure DevOps. Tyto pracovní postupy nebo kanály nejsou potřeba umístit do úložišť zdrojového kódu aplikace, což technikům platformy umožňuje jejich údržbu v centrálních privátních úložištích. V tomto modelu nemají vývojáři přímý přístup k pracovním postupům, ale můžou s nimi pracovat pomocí poskytovatele vývojářské platformy. Poskytovatel může spravovat nezbytné tajné kódy, jako jsou přihlašovací údaje nebo klíče rozhraní API, díky integraci se službami, jako je Azure Key Vault. Při provádění pracovních postupů poskytovatel sleduje svůj stav pomocí webhooků pro GitHub Actions a volání služeb pro Azure Pipelines ke sledování průběhu. Po dokončení pracovního postupu se zachytí a publikují všechny artefakty vytvořené, například výsledky sestavení nebo nasazení. Tyto artefakty spolu se vstupními parametry a odkazy na pracovní postupy je možné přidat do grafu platformy pro vývojáře. Tento přístup také umožňuje flexibilitu při používání libovolných rozhraní CLI, která v průběhu času podporuje širokou škálu úloh automatizace. Kromě toho je použití GitHub Actions nebo Azure Pipelines v tomto kontextu nezávislé na své tradiční roli v CI/CD, což poskytuje širší použitelnost pro správu různých procesů a šablon.
Existují i další typy poskytovatelů vývojářských platforem, kteří můžou zpracovávat různé úlohy prostřednictvím šablon. U operací správy zdrojového kódu můžou poskytovatelé pomoct spravovat úlohy Gitu, jako je vytváření úložišť, odesílání žádostí o přijetí změn nebo jiné operace Gitu, aniž by se museli spoléhat na obecné moduly pracovních postupů. Zřizování infrastruktury je možné zjednodušit prostřednictvím vyhrazených poskytovatelů, jako jsou prostředí nasazení Azure nebo Terraform Cloud, a zaměřit se na infrastrukturu jako kód (IaC) se zabezpečením a efektivitou. Poskytovatelé generování uživatelského rozhraní aplikací, jako je Azure Developer CLI, podporují vytváření stromů zdrojů aplikací a jejich vkládání do zdrojových úložišť a přidávají flexibilitu pro různé ekosystémy. Ruční procesy, jako je generování žádostí o přijetí změn nebo automatizace pracovních postupů pro jiné vývojáře, je možné spravovat také prostřednictvím poskytovatelů založených na šablonách, což umožňuje postupnou automatizaci. Tyto příklady zvýrazňují, jak můžou poskytovatelé vývojářských platforem v průběhu času rozšířit možnosti automatizace a přizpůsobitelnost.