Platform Engineering: Uwolnij potencjał swoich programistów!
W świat rozwoju oprogramowania szturmem wdziera się koncepcja Platform Engineering. Ideą stojąca za budowaniem Platform jest uproszczenie życia zarówno zespołom programistycznym, jak i utrzymaniowym, przenosząc ich uwagę z konfigurowania zawiłości technicznych na to, co naprawdę ważne: dostarczanie funkcjonalności i utrzymanie aplikacji biznesowych, przynoszących wartość organizacji.
Czym jest Platform Engineering?
Platform Engineering to koncept, który stawia za zadanie uproszczenie życia zespołom deweloperskim i utrzymaniowym, tak by zamiast konfigurowania technicznych zabawek – skupiali się na tym co istotne, czyli na swojej aplikacji biznesowej.
Jak w praktyce działa Platform Engineering?
W skrócie – wygląda to tak, że przychodzi zespół aplikacyjny do zespołu Platformy, i mówi, że chce robić aplikację biznesową: o takiej charakterystyce obciążenia i ruchu użytkowników, w takim języku programowania, takim składem osobowym. Lub „wyklikuje” taką potrzebę w dedykowanym portalu (Internal Developer Portal).
W ciągu kilku minut zespół Platformy (lub automatyczny skrypt, utrzymywany przez taki zespół) dostarcza gotowe do produkcji środowisko dostosowane do potrzeb aplikacji. Obejmuje to:
- Repozytorium kodu.
- Repozytorium artefaktów i sekretów.
- Środowisko do uruchamiania aplikacji, czy to klaster, namespace czy nawet maszynę wirtualna.
- Bazy danych, kolejki czy ekspozycję API.
- Narzędzia observability i narzędzia do deploymentu.
Idealnie byłoby, gdyby usługa ta obejmowała również demo aplikacji, napisaną w preferowanym przez zespół Aplikacyjny języku programowania, wdrażana przygotowanymi skryptami CI/CD na środowiska aż do produkcji, z połączeniem do baz, kolejek czy repozytorium sekretów.
Docelową sytuacją jest to, gdy w ramach Platformy zbudujemy tzw. Internal Developer Portal – czyli miejsce, w którym deweloperzy sami mogą się obsłużyć bez interakcji z zespołem Platformy – a standardowa usługa dostarczenia środowiska do pracy czy nadania dostępów odbywa się w sposób w pełni automatyczny.
Jak budować Internal Developer Platform?
Platforma może być podzielona na trzy logiczne warstwy:
- Podstawowe narzędzia DevSecOps: Te narzędzia obejmują cały cykl życia oprogramowania (SDLC), począwszy od repozytoriów i baz danych, aż po klastry, konfiguracje sieciowe, narzędzia CI/CD i narzędzia do obserwacji, wszystko zabezpieczone.
- Orkiestracja: Ta warstwa zajmuje się orkiestracją tworzenia lub modyfikowania zasobów w warstwie podstawowej. Zapewnia, że usługi są dostarczane w ciągu kilku minut lub nawet automatycznie.
- Interfejs dla Deweloperów: Na najwyższej warstwie znajduje się Interfejs dla Deweloperów, który służy jako interfejs użytkownika dla usług Platformy. Może to być Internal Developer Portal lub po prostu znormalizowany proces, taki jak zgłoszenie Jira lub kanał Teams, przez który zespoły Aplikacyjne mogą zgłaszać potrzebę wsparcia zespołu Platformy.
Wiele organizacji mając 100% pokrycia procesu SDLC tymi narzędziami uważa, że ma Platformę. Otóż – nic bardziej mylnego – bo te narzędzia zostawione same-sobie powodują u developerów jeszcze większy cognitive load, niż jakby mieli sobie radzić bez nich! Platforma jest wtedy, gdy mamy dwie kolejne warstwy, a zamiast narzędzi mamy de-facto usługę!
Czy można kupić gotową Platformę?
To zależy. Platformę powinno projektować się pod dojrzałość, praktyki i wymagania zespołów aplikacyjnych. I jeśli zespoły są dojrzałe, to platformy komercyjne od RedHata czy Lofta dadzą radę – tam trzeba rozumieć komponenty, z których chce się korzystać, ale samo korzystanie jest ułatwione, a wdrożenie szybkie.
Natomiast dla zróżnicowanych organizacji, niestety uważam, że nie istnieje produkt z półki, który będzie pasował. A niepasująca Platforma wprowadzi jeszcze więcej tego „cognitive load”, który miała przecież zdjąć, a nie dodawać. Często lepszym podejściem jest dostosowanie Platformy do konkretnych potrzeb organizacji.
„To, co jest idealną platformą programistyczną dla jednej firmy, może być bezużyteczne dla innej. Nawet w ramach tej samej firmy, różne zespoły programistów mogą mieć zupełnie inne potrzeby.”
Gartner
Projektowanie platformy dostosowanej do potrzeb organizacji jest często lepszym podejściem. Każda organizacja jest wyjątkowa, a droga do sukcesu Platform Engineering może obejmować bardziej indywidualne rozwiązanie. Teza ta została nie tylko zweryfikowana przez BlueSoft podczas naszego 5-letniego doświadczenia w dostarczaniu platform – ale także poparta powszechnymi praktykami rynkowymi i badaniami, takimi jak Humanitec i społeczność PlatformEngineering.org.
Zgodnie z tą tezą zbudowaliśmy w BlueSoft Starboost: czyli framework analityczny oraz komponowalne elementy Platformy, z których możemy jak z klocków „szyć” Platformę „na miarę” organizacji, która nam to zadanie zleciła.
Kiedy warto budować Platformę?
Widzę cztery takie główne przypadki, które jednak sprowadzają się do jednego wspólnego mianownika – skala organizacji. Organizacje, które mają kilkunastu deweloperów, prawdopodobnie obędą się bez Platformy.
A organizacje, które mają więcej, to pewnie coś w miejsce Platformy sobie stworzyły – i zapewne jest teraz bottle-neckiem bez jasno określonych ram.
- pierwszy przypadek pasujący pod Platformę to dużo zespołów deweloperskich lub utrzymaniowych – lub mnogość systemów, bo wtedy „opłaca się” wyciągnąć przed nawias narzędzia do ich budowy i utrzymania;
- drugi to chęć budowy rozwiązać dedykowanych,
- trzeci to potrzeba skalowania IT lub transformacja zwinna,
- a czwarty, często idący w parze z trzecim – to środowisko hybrydowe lub multi-cloud dla aplikacji biznesowych.
Podsumowując, Platform Engineering to podejście, które usprawnia proces tworzenia, pozwalając zespołom deweloperskim rozpocząć pracę nad oprogramowaniem w ciągu kilku minut, a nie dni – a potem bez zbędnej walki z technologią je rozwijać i utrzymywać. Platform Engineering umożliwia zespołom skoncentrowanie się na tym, co naprawdę ma znaczenie (i za co płacimy programistom) – dostarczanie doskonałego oprogramowania, przynoszącego korzyści biznesowe.
—
Najczęściej Zadawane Pytania (FAQ)
Jaka jest główna korzyść z Platform Engineering?
Główną korzyścią jest szybkie dostarczanie środowiska, umożliwiające zespołom deweloperskim rozpoczęcie pracy nad aplikacjami w ciągu kilku minut – a następnie pełne skoncentrowanie się na tym, co naprawdę ma znaczenie (i za co płacimy programistom) – dostarczanie doskonałego oprogramowania, przynoszącego korzyści biznesowe. Programiści wyposażeni w Platformę przestają walczyć z technologią.
Czy każda organizacja może skorzystać z Platform Engineering?
Chociaż to zależy od wielkości organizacji i jej potrzeb, Platform Engineering jest najbardziej korzystna dla organizacji z wieloma zespołami deweloperskimi lub utrzymaniowymi.
Czy istnieją komercyjne rozwiązania dla Platform Engineering?
Tak, dostępne są pewne rozwiązania komercyjne, ale ich odpowiedniość zależy od dojrzałości organizacji i jej wymagań. W BlueSoft uważamy, że najlepszą drogą do wdrożenia Internal Developer Platform jest jej budowa przy wykorzystaniu frameworku Starboost.
Jak organizacje mogą zapewnić sukces swoich inicjatyw Platform Engineering?
Sukces zależy od dostosowania Platformy do konkretne potrzeby organizacji i współpracy między zespołami Aplikacyjnymi a Platformą.
Czy Platform Engineering jest odpowiednia tylko dla dużych przedsiębiorstw?
Chociaż większe organizacje mogą czerpać większe korzyści, mniejsze firmy mające złożone potrzeby rozwojowe również mogą znaleźć wartość w Platform Engineering.
W szybko zmieniającym się świecie rozwoju oprogramowania, Platform Engineering jest kluczem do efektywności i elastyczności. Poprzez uproszczenie zawiłości technicznych, pozwala zespołom skupić się na innowacjach i dostarczaniu wyjątkowych aplikacji. Dlatego niezależnie od tego, czy jesteś dużą firmą czy rozwijającym się startupem, rozważ potencjał Platform Engineering, aby przyspieszyć swoją drogę rozwoju.
Co możemy zrobić Dla Twojego biznesu?