Technologie platformy Azure dla procesu kompilacji

Ukończone

W tej lekcji poznasz relację między procesem innowacji a niektórymi technologiami w branży, które mogą pomóc w tworzeniu nowych funkcji w aplikacjach.

DevOps

Po rozpoczęciu fazy kompilacji w celu zweryfikowania hipotezy innowacyjnej wymagane cykle opracowywania, integracji i wdrażania powinny być tak usprawnione, jak to możliwe. W tej fazie znajduje się metodyka DevOps. Metodyka DevOps można zdefiniować jako "procesy i narzędzia do szybkiego i niezawodnego dostarczania funkcji oprogramowania". Poniżej przedstawiono szczegółowe informacje o tej definicji:

  • Procesy i narzędzia: Metodyka DevOps i cały proces innowacji są oparte na wzorcach kultury, które zachęcają do zmian. Platforma Azure i usługa GitHub oferują doskonałe narzędzia dotyczące metodyki DevOps, ale zakup licencji nie wystarczy. Procesy i kultura organizacyjna muszą ewoluować, aby wprowadzić zmiany i innowacje.

  • Szybkie dostarczanie funkcji oprogramowania: procesy i narzędzia DevOps obejmują koncepcję szybkiego niepowodzenia. Tworzenie dostawców mvp lub prototypów w celu szybkiego sprawdzenia, czy funkcja, na której pracujesz, działa we właściwym kierunku, jest podstawą koncepcji metodyki DevOps.

  • Niezawodne dostarczanie funkcji oprogramowania: organizacje niechętne zmian często kojarzą szybkie zmiany z przestojami. Jednak metodyka DevOps obiecuje dokładnie odwrotnie: szybkość szybkiej zmiany i wysoki poziom niezawodności. Ta niezawodność jest możliwa dzięki zintegrowaniu testów we wczesnych etapach cyklu programowania w procesie o nazwie "shift to the left".

    Jeśli rozwój funkcji w czasie jest postrzegany jako linia od lewej do prawej. Następnie starszy proces programowania przeprowadzi weryfikację użytkownika i kontrolę jakości na końcu cyklu programowania. Na prawym końcu tego wiersza. Metodyka DevOps zaleca przetestowanie i zweryfikowanie go tak szybko, jak to możliwe, po lewej stronie tego wiersza czasu.

Metodyka DevOps uosabia te same podstawowe pojęcia zdrowej kultury innowacji. Przyjęcie metodologii jest kluczem do uzyskania elastycznego cyklu innowacji.

Architektury mikrousług

Modułowość to dobrze znana technika zmniejszania złożoności tworzenia złożonych systemów. Jeśli system jest złożoną interakcją wielu elementów, których nie można rozebrać (często nazywanym "monolitem"), ścisłe współzależności składników utrudniają ulepszenia systemu. Każda zmiana musi zostać zweryfikowana w pozostałej części systemu, więc proces testowania jest złożony.

Jeśli system jest modułowy, można podzielić go na mniejsze podsystemy, które współdziałają ze sobą za pośrednictwem dobrze zdefiniowanych interfejsów. Wprowadzenie zmian w jednym z tych podsystemów jest łatwiejsze, ponieważ o ile jego interfejs z innymi modułami pozostaje stały, ogólny system kontynuuje pracę.

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

Pytanie, które organizacje często zadają, to co zrobić, jeśli aplikacja jest monolityczna. Czy organizacja powinna przeprojektować aplikację w architekturę mikrousług przed wprowadzeniem innowacji lub czy procesy innowacji i przeprojektowania mogą być uruchamiane równolegle? Nie ma jednej odpowiedzi na to pytanie. Zależy to od złożoności i istotności biznesowej aplikacji, która jest brana pod uwagę.

Firma Tailwind Traders skonfrontowała to pytanie podczas wprowadzania innowacji na platformie handlu elektronicznego. Firma zdecydowała się rozpocząć projekt przeprojektowania aplikacji handlu elektronicznego w architekturę mikrousług, ponieważ krytyczność biznesowa aplikacji uzasadniła ten wysiłek. Brak aplikacji modułowej poważnie osłabiłby zdolność firmy Tailwind Traders do reagowania na zmieniające się trendy na rynku online.

Firma Tailwind Traders podjęła jednak decyzję o rozwiązaniu niektórych poważnych luk w 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 zakłócają teraz rynek handlu elektronicznego.

Projekty mają na celu interakcję ze sobą, kierując się wartością biznesową innowacji. Prace nad przeprojektowaniem mają na celu skupienie się na najbardziej krytycznych 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 koncepcje współpracują ze sobą. Kontenery to sposób hermetyzacji kodu aplikacji i jego zależności, dzięki czemu można je łatwo wdrożyć na dowolnej platformie.

Tradycyjne wdrożenia aplikacji wymagają, aby organizacja najpierw zainstalowała oprogramowanie, takie jak środowisko uruchomieniowe aplikacji, biblioteki programowania lub składniki zewnętrzne. Takie podejście często powoduje wystąpienie problemu "działa na mojej maszynie": trudno jest replikować to samo środowisko w środowisku deweloperskim, testowym, przejściowym i produkcyjnym. Niewielkie różnice w sposobie instalowania zależności aplikacji mogą spowodować, że aplikacja działa prawidłowo podczas testowania, ale kończy się niepowodzeniem podczas wdrażania w środowisku produkcyjnym.

Kontenery zmieniają zasady gry. Zależności aplikacji są pakowane wraz z kodem aplikacji w autonomicznej jednostce wdrażania nazywanej obrazem 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 działa dokładnie tak samo, więc testowanie aplikacji jest bardziej niezawodne i wiarygodne.

Kontenery mają długą drogę od czasu wydania kodu przez platformę Docker jako open source w 2013 roku. Kontenery obsługują teraz systemy Linux i Windows oraz różne architektury procesora CPU. Na platformie Azure dostępnych jest wiele ofert, które umożliwiają uruchamianie obciążeń opartych na kontenerach. W tej lekcji 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 jest wymagana większa logika. KtoTo wdraża więcej kontenerów, jeśli wymagana jest większa wydajność? KtoTo ponownie uruchamia kontenery, jeśli mają problem? Jeśli dostępnych jest wiele komputerów, kto decyduje o tym, który z nich należy uruchomić określony kontener? Te i inne zadania są odpowiedzialne za platformę orkiestracji kontenerów.

Pierwsza wersja platformy Kubernetes została wydana w 2015 roku i wkrótce stała się de facto standardem aranżacji kontenerów. Klastry Kubernetes składają się z kilku węzłów roboczych. Każdy węzeł roboczy ma środowisko uruchomieniowe kontenera, dzięki czemu może uruchamiać kontenery, w których płaszczyzna sterowania platformy Kubernetes planuje wdrażanie konteneryzowanych aplikacji. Ta płaszczyzna sterowania zwykle działa w zestawie węzłów podstawowych. Odpowiada za prawidłowe działanie aplikacji, skalowanie aplikacji w górę lub w dół i przeprowadzanie wszelkich wymaganych aktualizacji.

Jedną z głównych przyczyn popularności platformy 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 uruchamiać platformę Kubernetes w chmurach, które korzystają z różnych funkcji hypervisor. Wdrożone aplikacje powinny zachowywać się podobnie (przy założeniu, że bazowe zasoby sprzętowe są podobne). Wiele organizacji przyjęło platformę Kubernetes jako warstwę abstrakcji, która umożliwia spójne procesy wdrażania aplikacji zarówno lokalnie, jak i w chmurach publicznych.

Uruchamianie platformy Kubernetes na platformie Azure jest łatwe. Usługa Azure Kubernetes Service jest prosta do wdrożenia i opłacalna, ponieważ klient jest naliczany tylko za koszt węzłów roboczych. Firma Microsoft ponosi koszty i operacje płaszczyzny sterowania, która zawiera podstawowe składniki. Firma Microsoft aktualizuje i aktualizuje system operacyjny węzłów roboczych, 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 rozwiązaniu Kubernetes opracowanym i obsługiwanym przez firmę Red Hat. Zawiera wiele innych funkcji. Niektóre organizacje, które zdecydują się uruchamiać swoje aplikacje w usłudze OpenShift, robią to ze względu na te dodatkowe funkcje i obsługę zapewnianą przez firmę Red Hat. Uruchamianie platformy OpenShift na platformie Azure jest ponownie proste. Usługa Azure Red Hat OpenShift składa się z klastra OpenShift, w którym firma Microsoft zarządza wieloma swoimi aspektami, w tym całym cyklem życia klastra.

Azure App Service

aplikacja systemu Azure Service to platforma, na której organizacje mogą uruchamiać obciążenia internetowe bez konieczności zarządzania żadnym orkiestratorem lub podstawowym systemem operacyjnym. Jedynym wymaganiem jest przekazanie kodu aplikacji do usługi za pomocą jednej z wielu dostępnych metod wdrażania. Platforma Azure wykonuje pozostałe czynności: skalowanie aplikacji w i na wyjeździe, stosowanie poprawek i konserwowanie bazowych maszyn wirtualnych oraz wiele innych bez konieczności uczenia się platformy Kubernetes.

usługa aplikacja systemu Azure obsługuje obciążenia oparte na kontenerach, dzięki czemu można przekazać obraz kontenera zamiast kodu aplikacji. Obsługuje również obciążenia systemu Linux i Windows oraz wiele różnych środowisk uruchomieniowych aplikacji.

usługa aplikacja systemu Azure obsługuje różne modele cenowe, w tym opcję bezserwerową o nazwie Azure Functions. W usłudze Azure Functions opłaty są naliczane tylko za użycie aplikacji. Nie ma stałych kosztów.

Model bezserwerowy jest interesujący dla innowacji, ponieważ umożliwia wdrażanie nowych mikrousług bez ponoszenia wysokich rachunków miesięcznych, jeśli rynek ich nie akceptuje. Ten model jest kolejnym przykładem szybkiej strategii, w której innowacje niekoniecznie oznaczają wysokie wydatki.

aplikacja systemu Azure Service oferuje również funkcje, które obsługują wdrożenia zorientowane na metodyki DevOps, takie jak miejsca aplikacji internetowej. Miejsca to obszary przejściowe, w których można wdrażać nowe funkcje bez wpływu na środowisko produkcyjne. Miejsca są doskonałe z perspektywy innowacji, ponieważ można przekierować niewielki wybór klientów do tej nowej wersji aplikacji. Następnie możesz sprawdzić, czy hipoteza innowacji jest poprawna. W końcu, jeśli chcesz podwyższyć poziom nowego kodu do środowiska produkcyjnego, możesz "zamienić" miejsca, aby środowisko przejściowe stało się wersją produkcyjną.

Podsumowanie

W tej lekcji przedstawiono sposób, w jaki technologia może wspierać innowacje:

  • Procesy i narzędzia DevOps zapewniają zespołom deweloperów i zespołów operacyjnych możliwości szybkiego i niezawodnego dostarczania nowych funkcji.
  • Możesz zmienić architekturę aplikacji w mikrousługi, aby umożliwić indywidualne wprowadzanie innowacji w ich składnikach bez wpływu na resztę.
  • Kontenery umożliwiają niezawodne wdrażanie aplikacji na wielu platformach i środowiskach.
  • Kubernetes to niezależna od chmury platforma orkiestracji do uruchamiania konteneryzowanych aplikacji.
  • usługa aplikacja systemu Azure może uruchamiać obciążenia internetowe z minimalnym obciążeniem zarządzania. Oferuje wiele funkcji, takich jak bezserwerowe lub miejsca aplikacji, aby przyspieszyć cykl innowacji.

Firma Tailwind Traders zdecydowała się rozpocząć przeprojektowanie swojej aplikacji do handlu elektronicznego w architekturę mikrousług. Pierwszy podsystem aplikacji, który oddziela od "monolitu", to usługa płatności, ponieważ zidentyfikowano ją jako krytyczny obszar, w którym konkurencja oferuje lepszą wartość klientom.

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

Ponieważ firma Tailwind Traders nie chce być zależna od żadnej konkretnej chmury publicznej, decyduje się zbudować wiedzę na temat platformy Kubernetes w firmie i wdrożyć aplikację w klastrach usługi Azure Kubernetes Service. Jeśli należy opracowywać nowe mikrousługi, firma zdecydowała się rozważyć usługę Azure Functions jako platformę wdrożenia MVP w celu zmniejszenia kosztów programowania.

Gdzie spojrzeć dalej

Wiele pojęć opisanych w tej lekcji jest bardziej szczegółowo opisanych w artykułach Cloud Adoption Framework Zwiększanie wdrażania dzięki wynalazkom cyfrowym i rozwiązaniu Kubernetes w przewodniku Cloud Adoption Framework.