Technologie platformy Azure dla procesu kompilacji

Ukończone

W tej jednostce poznasz relację między procesem innowacji a niektórymi technologiami w branży, które mogą ułatwić tworzenie nowych funkcji w aplikacjach.

DevOps

Po zakończeniu fazy kompilacji w celu zweryfikowania hipotezy innowacji wymagane cykle opracowywania, integracji i wdrażania powinny być możliwie jak najbardziej usprawnione. W tym miejscu pojawia się metodyka DevOps. Metodyki DevOps można zdefiniować jako "procesy i narzędzia do szybkiego i niezawodnego dostarczania funkcji oprogramowania". Poniżej znajdują się szczegółowe informacje o tej definicji:

  • Procesy i narzędzia: Metodyka DevOps i cały proces innowacji bazują na wzorcach kulturowych, które zachęcają do zmian. Platforma Azure i usługa GitHub oferują doskonałe narzędzia dla metodyki DevOps, ale zakup licencji nie wystarczy. Procesy i kultura organizacyjna muszą ewoluować w celu przyjęcia zmian i innowacji.

  • Szybkie dostarczanie funkcji oprogramowania: Procesy i narzędzia DevOps obejmują koncepcję szybkiego awarii. Tworzenie MVPs lub prototypów w celu szybkiego sprawdzenia, czy funkcja, nad którą pracujemy, jest podstawą koncepcji Metodyki DevOps.

  • Niezawodne dostarczanie funkcji oprogramowania: Organizacje, które nie zmieniają się, często kojarzą szybkie zmiany z przestojami. Jednak metodyka DevOps zapewnia dokładnie odwrotność: szybki wskaźnik zmian i wysoki poziom niezawodności. Jest to możliwe dzięki integracji testowania na wczesnych etapach cyklu projektowania w procesie o nazwie "przesunięcie w lewo".

    Jeśli rozwój funkcji w czasie jest postrzegany jako linia od lewej do prawej, starszy proces tworzenia będzie przeprowadzać walidację użytkownika i kontrolę jakości na końcu cyklu projektowania lub na "prawym" końcu tego wiersza. Metodyka DevOps radzi, aby przetestować i zweryfikować ją tak wcześnie, jak to możliwe, po lewej stronie tego wiersza czasu.

Metodyka DevOps jest podstawą tych samych podstawowych koncepcji kultury innowacji w dobrej kondycji. Przyjęcie tej metodologii jest kluczem do uzyskania zwinnego cyklu innowacji.

Architektury mikrousług

Modularność to dobrze znana technika, która zmniejsza złożoność tworzenia architektury złożonych systemów. Jeśli system jest złożoną interakcją wielu elementów, których nie można rozróżnić (często nazywanych "monolitem"), ścisłe współzależności między składnikami będą utrudniać ulepszenia systemu. Każda zmiana musi zostać zweryfikowana z resztą systemu, więc proces testowania jest złożony.

Jeśli system jest modularny, można go rozdzielić na mniejsze podsystemy, które współdziałają ze sobą za pośrednictwem dobrze zdefiniowanych interfejsów. Wprowadzanie zmian w jednym z tych podsystemów jest łatwiejsze, ponieważ dopóki jego interfejs z innymi modułami pozostaje stały, cały system będzie nadal działać.

Architektury mikrousług to wzorce aplikacji wykorzystujące modułowość. Aplikacje są podzielone na oddzielne, małe składniki, które mogą być opracowywane niezależnie od siebie, potencjalnie nawet przy użyciu różnych języków programowania. Każdy składnik lub mikrousługa może działać samodzielnie. Można ją skalować zgodnie z potrzebami, można rozwiązywać problemy jako pojedynczą jednostkę i można ją modyfikować niezależnie od pozostałych.

Często zadają sobie pytanie, co należy zrobić, jeśli aplikacja jest monolityczna. Czy organizacja powinna przeprojektować aplikację w architekturę mikrousług przed wprowadzeniem innowacji, czy też procesy innowacji i przeprojektowania mogą działać równolegle? Nie ma jednej odpowiedzi na to pytanie. Zależy to od złożoności i istotności biznesowej rozważanych aplikacji.

W przypadku wprowadzenia innowacji na platformie handlu elektronicznego na platformie handlu elektronicznego tailwind Traders odechyliła się do tego pytania. Firma zdecydowała się rozpocząć projekt przeprojektowania aplikacji do handlu elektronicznego na architekturę mikrousług, ponieważ krytyczność biznesowa aplikacji uzasadniała ten nakład pracy. Jeśli aplikacja modułowa nie będzie miała zastosowania, będzie to poważnie pogarszać zdolność firmy Tailwind Traders do reagowania na zmieniające się trendy na rynku online.

Jednak tailwind Traders zdecydowała się na rozwiązanie niektórych głównych luk na swojej platformie w tym samym czasie. Oczekiwanie na zakończenie projektu przeprojektowania aplikacji oznaczałoby utratę znaczącego udziału w rynku dla nowych startupów, które obecnie zakłócają rynek handlu elektronicznego.

Projekty będą wchodzić ze sobą w interakcje, kierując się wartością biznesową innowacji. W celu przeprojektowania skupimy się na najważniejszych obszarach aplikacji, w których potrzeba modyfikacji w celu poprawy jakości obsługi klienta jest najwyższa.

Kontenery

Technologia konteneryzacji nie jest wyłączna dla architektur mikrousług, ale te koncepcje dobrze współpracują ze sobą. Kontenery to sposób hermetyzacji kodu aplikacji i jego zależności, dzięki czemu można go łatwo wdrożyć na dowolnej platformie.

Tradycyjne wdrożenia aplikacji wymagają, aby organizacja najpierw instalowała oprogramowanie, takie jak środowisko uruchomieniowe aplikacji, biblioteki programistyczne lub składniki zewnętrzne. Takie podejście często skutkuje problemem "działa na mojej maszynie": trudno jest zreplikować to samo środowisko w środowisku projektowania, testowania, przemieszczania i produkcji. Niewielkie różnice w wdrażaniu zależności aplikacji mogą spowodować, że aplikacja będzie działać prawidłowo podczas testów, ale nie powiedzie się podczas wdrażania w środowisku produkcyjnym.

Kontenery zmieniają reguły gry. Zależności aplikacji są pakowane wraz z kodem aplikacji w autonomicznej jednostce wdrażania, czyli obrazie kontenera. Niezależnie od tego, czy kontener aplikacji jest wdrażany na laptopie dewelopera, czy w klastrze produkcyjnym z setkami węzłów, obsługa zależności jest taka sama. Kontener będzie działać dokładnie w taki sam sposób. Dlatego testowanie aplikacji jest bardziej niezawodne i wiarygodne.

Od czasu, gdy w 2013 r. platformę Docker opublikowano jako open source, kontenery przeszły długą drogę. Kontenery obsługują teraz systemy Linux i Windows oraz różne architektury procesora CPU, takie jak ARM. Na platformie Azure istnieje wiele ofert, które umożliwiają uruchamianie obciążeń opartych na kontenerach. W tej jednostce poznasz niektóre z nich.

Kubernetes i Red Hat OpenShift

Środowisko uruchomieniowe kontenera to technologia, która uruchamia kontenery na komputerze, ale w środowisku produkcyjnym wymagana jest większa logika. Kto wdroży więcej kontenerów, jeśli wymagana jest większa wydajność? Kto ponownie uruchomi kontenery w przypadku wystąpienia problemu? Jeśli dostępnych jest wiele komputerów, kto zdecyduje, na którym z nich powinien zostać uruchomiony określony kontener? Za te i inne zadania odpowiada platforma orkiestracji kontenerów.

Pierwsza wersja rozwiązania Kubernetes została wydana w 2015 r. i wkrótce stała się de facto standardem orkiestracji kontenerów. Klastry Kubernetes składają się z kilku węzłów procesu roboczego. Każdy węzeł procesu roboczego ma środowisko uruchomieniowe kontenera, dzięki czemu może uruchamiać kontenery, w których płaszczyzna sterowania Kubernetes planuje wdrożenie konteneryzowanych aplikacji. Ta płaszczyzna sterowania jest zwykle uruchamiana w zestawie węzłów głównych. Odpowiada za prawidłowe działanie aplikacji, skalowanie aplikacji w górę lub w dół oraz przeprowadzanie wymaganych aktualizacji.

Jednym z głównych powodów popularności usługi Kubernetes jest niezależność sprzętu zapewniana przez kontenery. Ponieważ aplikacje oparte na kontenerach można niezawodnie wdrażać w dowolnym środowisku uruchomieniowym kontenera, można uruchomić rozwiązanie Kubernetes w chmurach, które używają różnych funkcji hypervisor. Wdrożone aplikacje powinny zachowywać się w podobny sposób (przy założeniu, że bazowe zasoby sprzętowe również są podobne). Wiele organizacji przyjmuje rozwiązanie Kubernetes jako warstwę abstrakcji, która umożliwia spójne procesy wdrażania aplikacji zarówno lokalnie, jak i w chmurze publicznej.

Uruchamianie platformy Kubernetes na platformie Azure jest łatwe. Azure Kubernetes Service jest łatwe do wdrożenia i ekonomiczne, ponieważ klient jest obciążany tylko kosztami węzłów procesu roboczego. Firma Microsoft ponosi koszty i działanie węzłów głównych. Firma Microsoft będzie poprawiać i aktualizować system operacyjny węzłów procesu roboczego, co jeszcze bardziej zmniejsza złożoność operacyjną zarządzania klastrem Kubernetes w celu uruchamiania kontenerów systemów Linux i Windows.

OpenShift to platforma wdrażania aplikacji oparta na platformie Kubernetes. Obejmuje ona wiele innych funkcji i jest opracowywana i obsługiwana przez firmę Red Hat. Niektóre organizacje, które zdecydują się na uruchamianie swoich aplikacji na platformie OpenShift, robią to ze względu na te dodatkowe funkcje i pomoc techniczną zapewnianą przez usługę Red Hat. Uruchamianie platformy OpenShift na platformie Azure jest ponownie proste. Azure Red Hat OpenShift składa się z klastra OpenShift, w którym wiele aspektów jest zarządzanych przez firmę Microsoft, w tym cały cykl życia klastra.

Azure App Service

Azure App Service to platforma, na której organizacje mogą uruchamiać obciążenia internetowe bez konieczności zarządzania żadnym orkiestratorem ani bazowym systemem operacyjnym. Jedynym wymaganiem jest przekazanie kodu aplikacji do usługi za pomocą jednej z wielu dostępnych metod wdrażania. Platforma Azure zrobi resztę: skalowanie aplikacji do i na zewnątrz, stosowanie poprawek i konserwacja bazowych maszyn wirtualnych i wiele innych, bez konieczności uczenia się platformy Kubernetes.

Azure App Service obsługuje obciążenia oparte na kontenerach, więc można przekazać obraz kontenera zamiast kodu aplikacji. Obsługuje również obciążenia systemów Linux i Windows oraz wiele różnych środowisk uruchomieniowych aplikacji.

Azure App Service obsługuje różne modele cenowe, w tym opcję bez serwera o nazwie Azure Functions. W Azure Functions opłaty są naliczane tylko za użycie aplikacji. Nie ma żadnych kosztów stałych.

Model bezserwerowy jest interesujący w przypadku innowacji, ponieważ umożliwia wdrażanie nowych mikrousług bez ponoszenia wysokich miesięcznych opłat, jeśli rynek ich nie akceptuje. Jest to kolejny przykład strategii szybkiego działania w przypadku awarii, w której innowacje nie muszą oznaczać wysokich wydatków.

Azure App Service oferuje również funkcje, które obsługują wdrożenia zorientowane na metodyki DevOps, takie jak miejsca aplikacji internetowych. Miejsca to obszary przejściowe, w których można wdrażać nowe funkcje bez wpływu na środowisko produkcyjne. Jest to doskonałe z punktu widzenia innowacji, ponieważ możesz przekierować niewielki wybór klientów do tej nowej wersji aplikacji, a następnie sprawdzić, czy hipoteza innowacja jest poprawna. W końcu, jeśli chcesz promować nowy kod do środowiska produkcyjnego, możesz "zamienić" miejsca, aby środowisko przejściowe stało się wersją produkcyjną.

Podsumowanie

W tej jednostce opisano, jak technologia może wspierać innowacje:

  • Procesy i narzędzia DevOps zapewniają zespołom programistyczym i operacyjnym supermoję szybkiego i niezawodnego dostarczania nowych funkcji.
  • Aplikacje można przeprojektować na mikrousługi, aby umożliwić wprowadzanie innowacji dla ich składników indywidualnie, bez wpływu na pozostałe.
  • Kontenery umożliwiają niezawodne wdrażanie aplikacji na wielu platformach i w różnych środowiskach.
  • Kubernetes to platforma orkiestracji niezależnej od chmury do uruchamiania konteneryzowanych aplikacji.
  • Azure App Service mogą uruchamiać obciążenia internetowe z minimalnym obciążeniem zarządzania. Oferuje ona wiele funkcji, takich jak miejsca bez serwera lub aplikacji, aby przyspieszyć cykl innowacji.

Tailwind Traders zdecydowała się rozpocząć przeprojektowanie aplikacji do handlu elektronicznego w architekturę mikrousług. Pierwszym podsystemem aplikacji, który będzie oddzielony od "monolitu", jest usługa płatności, ponieważ została ona zidentyfikowana jako krytyczny obszar, w którym konkurencja oferuje klientom lepszą wartość.

Po podsystemie płatności więcej składników aplikacji zostanie przekonwertowanych na niezależne mikrousługi. Mikrousługi będą komunikować się za pośrednictwem interfejsów API REST. Kod aplikacji dla każdej mikrousługi będzie konteneryzowany, a organizacje projektowe i operacyjne zastosują najlepsze rozwiązania metodyki DevOps.

Ponieważ tailwind Traders nie chce być zależny od żadnej konkretnej chmury publicznej, zdecydowała się na zbudowanie doświadczenia w zakresie rozwiązania Kubernetes i wdrożenie aplikacji w Azure Kubernetes Service klastrach. Jeśli konieczne będzie opracowanie nowych mikrousług, firma będzie Azure Functions jako platformę do wdrażania programu MVP, aby zmniejszyć koszty projektowania.

Gdzie szukać dalej

Wiele pojęć owych w tej jednostce jest bardziej szczegółowe w artykułach Cloud Adoption Framework Empower adoption with digital invention and Kubernetes (Zwiększanie możliwości wdrożenia za pomocą wynalazków cyfrowych i rozwiązania Kubernetes)w Cloud Adoption Framework .