Scenariusze DevOps czasu rzeczywistego - dowiedz się, co się dzieje w czasie rzeczywistym



Ten blog omawia scenariusze DevOps w czasie rzeczywistym, aby pomóc Ci zrozumieć wyzwania, które możesz napotkać w czasie rzeczywistym, i sposoby ich przezwyciężenia.

Wielu z was może znać wszystkie teorie z tym związane . Ale czy wiesz, jak wdrożyć zasady DevOps w prawdziwym życiu? Na tym blogu omówię scenariusze DevOps Real Time, które pomogą Ci w krótkim zrozumieniu, jak działają rzeczy w czasie rzeczywistym.

Wskazówki, które w tym omówięArtykuł dotyczący scenariuszy DevOps w czasie rzeczywistymsą:





Zacznijmy więc od naszego pierwszego tematu.

Co to jest DevOps?

devops-devops scenariusze czasu rzeczywistego-EdurekaDevOps to podejście do tworzenia oprogramowania, które obejmuje ciągły rozwój, ciągłe testowanie, ciągłą integrację, ciągłe wdrażanie i ciągłe monitorowanie oprogramowania przez cały cykl jego rozwoju. Te działania są możliwe tylko w DevOps, a nie w Agile czy waterfall. Właśnie dlatego Facebook i inne czołowe firmy wybrały DevOps jako drogę do realizacji swoich celów biznesowych.DevOps jest preferowany głównie do tworzenia wysokiej jakości oprogramowania w krótszych cyklach rozwoju, co skutkuje większą satysfakcją klienta.



W następnej sekcji tegoArtykuł DevOps Real Time Scenarios, przyjrzymy się różnym problemom rozwiązywanym przez DevOps.

Problemy rozwiązane przez DevOps

1. Dostarczanie wartości klientom

  • DevOps minimalizuje czas dostarczanie wartości klientom. Czas cyklu od ukończenia historii / zadania przez dewelopera do produkcji znacznie się skraca, umożliwiając jak najszybsze zrealizowanie wartości.
  • Najważniejszą wartością realizowaną przez DevOps jest to, że umożliwia to organizacjom IT skupić się na swojej „podstawowej” działalności biznesowej . Usuwając ograniczenia w strumieniu wartości i automatyzując potoki wdrażania, zespoły mogą skupić się na działaniach. Pomaga to w tworzeniu wartości dla klienta, a nie tylko przenoszeniu bitów i bajtów. Działania te zwiększają trwałą przewagę konkurencyjną firmy i zapewniają lepsze wyniki biznesowe.



2. Skrócony czas cyklu

  • Wewnętrznie DevOps to jedyny sposób na osiągnięcie elastyczności w dostarczaniu bezpiecznego kodu z wglądem. Ważne jest, aby mieć bramy i dobrze przygotowany proces DevOps. Gdy dostarczasz nową wersję, może ona działać równolegle z wersją bieżącą. Możesz także porównać metryki, aby osiągnąć to, co chcesz, z metrykami aplikacji i wydajności.

    jak używać anakondy dla Pythona
  • DevOps kieruje zespoły programistyczne w kierunku ciągłe doskonalenie i szybsze cykle wydawania . Jeśli zostanie wykonany dobrze, ten iteracyjny proces pozwala na większą koncentrację w czasie na rzeczach, które naprawdę mają znaczenie. Na przykład rzeczy, które zapewniają użytkownikom wspaniałe wrażenia - i mniej czasu na zarządzanie narzędziami, procesami i technologią.

3. Czas na rynek

Najważniejszym problemem do rozwiązania jest plik zmniejszenie złożoności procesu. Przyczynia się to znacząco do naszego sukcesu biznesowego, skracając czas wprowadzenia produktu na rynek, dając nam szybką informację zwrotną na temat funkcji i sprawiając, że jesteśmy bardziej wrażliwi na potrzeby naszych klientów.

4. Rozwiązywanie problemu

  • Największą wartością udanego wdrożenia DevOps jest większa pewność dostawy, widoczność i identyfikowalność tego, co się dzieje, dzięki czemu można szybciej rozwiązywać problemy.

  • Kolejną ważną zaletą DevOps jest brak marnowania czasu. Dopasowanie personelu i zasobów organizacji umożliwia szybkie wdrażanie i aktualizacje. Dzięki temu programy DevOps mogą naprawiać problemy, zanim przekształcą się one w katastrofę.DevOps tworzy kulturę przejrzystości, która promuje koncentrację i współpracę między zespołami programistycznymi, operacyjnymi i bezpieczeństwa.

CI (Continuous Integration) wScenariusze DevOps w czasie rzeczywistym

1. Osoby fizyczne mogą uznać, że ciągła integracja może przynieść efekt przeciwny do zamierzonego

Członkowie zespołu programistów mają różne role, obowiązki i priorytety. Jest możliwe, że pierwszym priorytetem menedżera produktu może być wprowadzanie nowych funkcji, kierownik projektu musi upewnić się, że ich zespół dotrzyma terminu. Programiści mogą pomyśleć, że zatrzymanie się i naprawienie drobnego błędu za każdym razem, gdy się pojawi, spowolni ich działanie. Mogą uważać, że utrzymanie konstrukcji w czystości jest dla nich dodatkowym obciążeniem i nie odniesie korzyści z ich dodatkowych wysiłków. Może to potencjalnie zagrozić procesowi adaptacji.

Aby temu zaradzić:

  • Po pierwsze, upewnij się, że cały Twój zespół jest na pokładzie, zanim zastosujesz ciągłą integrację.

  • CTO i liderzy zespołów muszą pomóc członkom zespołu zrozumieć koszty i korzyści ciągłej integracji.

  • Podkreśl, co i kiedy skorzystają na tym programiści, poświęcając się innej metodzie pracy, która wymaga nieco większej otwartości i elastyczności.

2. Integracja CI z istniejącym przepływem programowania

Przyjęcie CI nieuchronnie wiąże się z koniecznością zasadniczej zmiany niektórych części przepływu pracy związanej z programowaniem. Możliwe, że programiści mogą nie naprawić przepływu pracy, jeśli nie jest uszkodzony. Jest to możliwe głównie wtedy, gdy Twój zespół ma większą rutynę w wykonywaniu bieżącego przepływu pracy.

Jeśli chcesz zmienić przepływ pracy, musisz to zrobić z dużą ostrożnością. W przeciwnym razie może to zagrozić produktywności zespołu programistów, a także jakości produktu. Bez wystarczającego wsparcia ze strony kierownictwa zespół programistów może być nieco niechętny do podjęcia zadania, które wiąże się z takim ryzykiem.

Aby temu zaradzić:

  • Musisz zapewnić zespołowi wystarczająco dużo czasu na opracowanie nowego przepływu pracy. Odbywa się to w celu wybrania elastycznego rozwiązania do ciągłej integracji, które może obsługiwać ich nowy przepływ pracy.

  • Upewnij się też, że firma ma ich plecami, nawet jeśli na początku sprawy nie potoczą się gładko.

3. Powrót do dawnych nawyków testowych

Bezpośrednim efektem przyjęcia ciągłej integracji jest to, że Twój zespół będzie częściej testował. Dlatego więcej testów będzie wymagało większej liczby przypadków testowych, a pisanie przypadków testowych może być czasochłonne. Dlatego programiści często muszą dzielić swój czas między naprawianie błędów i pisanie przypadków testowych.

Tymczasowo programiści mogą oszczędzić czas, testując ręcznie, ale na dłuższą metę może to bardziej zaszkodzić. Im bardziej zwlekają z pisaniem przypadków testowych, tym trudniej będzie nadrobić zaległości w rozwoju. W najgorszym przypadku Twój zespół może w końcu wrócić do swojego starego procesu testowania.

Aby temu zaradzić:

  • Musisz podkreślić, że pisanie przypadków testowych od samego początku może zaoszczędzić wiele czasu Twojemu zespołowi i zapewnić wysoki poziom pokrycia testowego Twojego produktu.

  • Uwzględnij również w kulturze firmy ideę, że przypadki testowe są tak samo cennymi zasobami, jak sama baza kodu.

4. Deweloperzy ignorują komunikaty o błędach

Częstym problemem jest to, że gdy współpracują ze sobą większe zespoły, ilość powiadomień CI staje się przytłaczająca, a programiści zaczynają je ignorować i wyciszać. Dlatego jest możliwe, że mogą przegapić aktualizacje, które są dla nich istotne.

Może to doprowadzić do etapu, w którym programiści rozwijają względną odporność na uszkodzone kompilacje i komunikaty o błędach. Im dłużej ignorują odpowiednie powiadomienia, tym dłużej rozwijają się bez sprzężenia zwrotnego w złym kierunku. Może to potencjalnie spowodować ogromne wycofania, marnotrawstwo pieniędzy, zasobów i czasu.

Aby temu zaradzić:

  • Powinieneś wysyłać tylko aktualizacje krytyczne.

  • Wyślij powiadomienie tylko do odpowiednich programistów, którzy są odpowiedzialni za jego naprawienie.

CT (test ciągły) wScenariusze DevOps w czasie rzeczywistym

  1. Prawidłowe pobranie specyfikacji wymagań

    Jeśli spełnisz swoje wymagania, prawie połowa bitwy zostanie wygrana. Więc jeśli masz bardzo szczegółowe i dokładne zrozumienie wymagań, możesz lepiej zaprojektować plany testów i dobrze pokryć wymagania.

    Jednak wiele zespołów poświęca dużo czasu i wysiłku, po prostu wyjaśniając wymagania. Jest to bardzo częsta pułapka i aby tego uniknąć, zespoły mogą stosować testy oparte na modelu i techniki programowania opartego na zachowaniu. Pomaga to dokładnie i adekwatnie zaprojektować scenariusze testowe.

    Praktyki te z pewnością pomogą w szybszym rozwiązaniu i wyeliminowaniu luk. Ponadto umożliwia im automatyczne generowanie większej liczby przypadków testowych już na wczesnych etapach sprintu.

  2. Orkiestracja rurociągów

    Zalety ciągłego testowania i ciągła dostawa są ściśle powiązane z orkiestracją rurociągów. Oznacza to bezpośrednio zrozumienie, jak to działa, dlaczego działa, jak analizować wyniki oraz jak i kiedy skalować. Wszystko zależy od potoku, dlatego musisz zintegrować potok z pakietem automatyzacji.

    Ale powodem, dla którego zespoły gubią się, jest to, że żadne pojedyncze rozwiązanie nie zapewnia pełnego zestawu narzędzi, który jest wymagany do zbudowania potoku CD.

    Zespoły muszą zazwyczaj wyszukiwać elementy układanki, które są dla nich odpowiednie. Nie ma doskonałych narzędzi, zazwyczaj są to tylko najlepsze w swojej klasie narzędzia, które zapewniają integrację wraz z wieloma innymi narzędziami. I oczywiście API, które umożliwia również łatwą integrację.

    Krótko mówiąc, niemożliwe jest wdrożenie ciągłego testowania bez szybkości i niezawodności znormalizowanego i zautomatyzowanego rurociągu.

  3. Skalowanie i zarządzanie złożonością

    Innym ważnym scenariuszem jest to, że ciągłe testowanie staje się bardziej złożone w miarę zbliżania się do środowiska produkcyjnego. Liczba testów i złożoność rośnie wraz z dojrzewaniem kodu i coraz bardziej złożonym środowiskiem.

    Musisz zaktualizować testy za każdym razem, gdy aktualizujesz różne fazy i automatyczne skrypty. W rezultacie całkowity czas potrzebny do uruchomienia testów również zwykle wydłuża się wraz z wydaniem.

    Rozwiązaniem tego problemu jest ulepszona aranżacja testów, która zapewnia odpowiednią ilość pokrycia testów w krótszych cyklach sprintu i umożliwia zespołom pewną realizację. W idealnym przypadku cały proces musi być zautomatyzowany, a TK przeprowadzany na różnych etapach. Odbywa się to za pomocą bram zasad i ręcznej interwencji, aż do wypchnięcia kodu do produkcji.

  4. Tworzenie pętli informacji zwrotnych

    Bez częstych pętli informacji zwrotnych na każdym etapie cyklu rozwojowego ciągłe testowanie nie jest możliwe. Po części jest to powód, dla którego CT jest trudny do wdrożenia. Potrzebujesz nie tylko testów automatycznych, ale także widoczności wyników testów i ich wykonania.

    Tradycyjne pętle opinii, takie jak narzędzia do rejestrowania, profilery kodu i narzędzia do monitorowania wydajności, nie są już skuteczne. Ani współpracują, ani nie zapewniają dogłębnej analizy potrzebnej do rozwiązania problemów. Pulpity nawigacyjne w czasie rzeczywistym, które automatycznie generują raporty i informacje zwrotne, które można zastosować w całym SDLC, pomagają szybciej wprowadzać oprogramowanie do produkcji z mniejszą liczbą wad. Dostęp w czasie rzeczywistym do pulpitów nawigacyjnych i dostęp dla wszystkich członków zespołu pomaga mechanizmowi ciągłej informacji zwrotnej.

    kiedy tego używać. w java
  5. Brak środowisk

    Testowanie ciągłe oznacza po prostu częstsze testowanie, a to wymaga częstszego odwiedzania wielu środowisk. Stanowi to wąskie gardło, jeśli wspomniane środowiska nie są dostępne w momencie, gdy są wymagane. Niektóre środowiska są dostępne za pośrednictwem interfejsów API, a inne za pośrednictwem różnych interfejsów. Niektóre z tych środowisk można budować przy użyciu nowoczesnej architektury, podczas gdy inne z monolitycznymi starszymi systemami klient / serwer lub systemami mainframe.

    Ale pytanie brzmi, jak koordynować testy za pośrednictwem różnych właścicieli środowiska? Możliwe jest również, że nie zawsze zapewniają one nieprzerwane działanie środowisk. Odpowiedź na to wszystko brzmi Wirtualizacja . Wirtualizacja środowiska umożliwia testowanie kodu bez zbytniego martwienia się o niezmienne obszary.Udostępnianie i udostępnianie środowisk na żądanie poprzez wirtualizację z pewnością pomaga usunąć istotne wąskie gardło z potoku.

CD (ciągłe dostarczanie) wScenariusze DevOps w czasie rzeczywistym

  1. Wdrożenia trwają zbyt długo

    Aplikacje rozproszone zwykle wymagają czegoś więcej niż tylko „kopiowania i wklejania” plików na serwer. Złożoność ma tendencję do wzrostu, jeśli masz farmę serwerów. Niepewność co do tego, co wdrożyć, gdzie i jak, jest całkiem normalną rzeczą. Wynik? Długi czas oczekiwania na przeniesienie naszych artefaktów do następnego środowiska na drodze do opóźnienia wszystkiego, testów, czasu życia itp.

    Co DevOps wnosi do stołu? Zespoły programistyczne i operacyjne IT definiują proces wdrażania w nienagannej sesji współpracy. Najpierw sprawdzają, co działa, a następnie przenoszą to na wyższy poziom dzięki automatyzacji, aby ułatwić ciągłe dostarczanie. To drastycznie skraca czas wdrażania, a także toruje drogę do częstszych wdrożeń.

  2. Brakujące artefakty, skrypty i inne zależności

    Po wdrożeniu nowej wersji działającego oprogramowania często spotykamy się z awariami. Jest to często spowodowane brakującymi bibliotekami lub niezaktualizowanymi skryptami bazy danych. Jest to zwykle spowodowane brakiem jasności co do tego, które zależności należy wdrożyć i ich lokalizacji. W większości przypadków wspieranie współpracy między działem rozwoju a operacjami może pomóc w rozwiązaniu tego rodzaju problemów.

    Jeśli chodzi o automatyzację, możesz zdefiniować zależności, co bardzo pomaga w przyspieszeniu wdrażania. Narzędzia do zarządzania konfiguracją, takie jak Marionetka lub Szef przyczyniają się do dodatkowego poziomu definicji zależności. Możemy zdefiniować zależności nie tylko w naszej aplikacji, ale także na poziomie infrastruktury i konfiguracji serwera. Na przykład możemy stworzyć maszynę wirtualną do testu i zainstalować / skonfigurować kocur zanim nasze artefakty zostaną opublikowane.

  3. Nieskuteczne monitorowanie produkcji

Czasami konfigurujesz narzędzia do monitorowania w sposób, który generuje wiele nieistotnych danych z produkcji, ale czasami nie produkują one wystarczająco dużo lub wcale. Nie ma definicji tego, czym należy się zająć i jakie są wskaźniki.

Musisz uzgodnić, co monitorować i jakie informacje przedstawić, a następnie wprowadzić kontrole. Narzędzia do zarządzania wydajnością aplikacji są bardzo pomocne, jeśli Twoja organizacja może sobie na to pozwolić, spójrz na AppDynamics, New Relic i AWS X-Ray.

Scenariusze danych DevOps

DevOps polega na wyeliminowaniu ryzyka związanego z tworzeniem nowego oprogramowania: analiza danych identyfikuje te ryzyka. Aby stale mierzyć i ulepszać proces DevOps, analizy powinny obejmować cały potok. Zapewnia to nieocenione informacje dla kierownictwa na wszystkich etapach cyklu życia oprogramowania.

1. Mniej czasu na analizę danych

Mając na uwadze wszystkie dane, które są generowane w dowolnym momencie, organizacje muszą zaakceptować fakt, że nie mogą ich wszystkich przeanalizować. Po prostu jest za mało czasu w ciągu dnia - i niestety roboty nie są jeszcze na tyle wyrafinowane, aby robić to wszystko za nas.

tableau łączenie dwóch źródeł danych

Z tego powodu ważne jest, aby określić, które zbiory danych są najważniejsze. W większości przypadków będzie to inne dla każdej organizacji. Dlatego przed zanurzeniem się określ kluczowe cele biznesowe i cele. Zazwyczaj cele te dotyczą potrzeb klientów - przede wszystkim najcenniejszych funkcji, które są najważniejsze dla użytkowników końcowych. Na przykład dla sprzedawcy detalicznego analiza interakcji ruchu ze stroną płatności w witrynie i testowanie jej działania w zapleczu znajduje się na górze listy.

Kilka szybkich wskazówek dotyczących określenia, które dane są najważniejsze do analizy:

  • Zrób wykres: określ wpływ awarii na Twoją firmę, zadając takie pytania, jak „Jeśli X pęka , jaki będzie to miało wpływ na inne funkcje? ”

  • Spójrz na dane historyczne: określ, gdzie w przeszłości wystąpiły problemy i kontynuuj analizowanie danych z testów i budowanie, aby mieć pewność, że to się więcej nie powtórzy.

2. Trudna komunikacja

Obecnie większość organizacji nadal działa z różnymi zespołami i osobami, które identyfikują własne cele i wykorzystują własne narzędzia i technologie. Każdy zespół działa niezależnie, odłączony od rurociągu i spotyka się z innymi zespołami tylko na etapie integracji.

Jeśli chodzi o spojrzenie z szerszej perspektywy i określenie, co działa, a co nie działa, organizacja ma trudności z znalezieniem jednego rozwiązania. Dzieje się tak, ponieważ głównie dlatego, że wszyscy nie udostępniają ogólnych danych, co uniemożliwia analizę.

Aby rozwiązać ten problem, przeorganizuj przepływ komunikacji, aby upewnić się, że wszyscy współpracują w całym SDLC, a nie tylko podczas procesu integracji.

  • Po pierwsze, upewnij się, że istnieje silna synchronizacja wskaźników DevOps od samego początku. Postępy każdego zespołu powinny być wyświetlane na jednym pulpicie nawigacyjnym, wykorzystującym te same kluczowe wskaźniki wydajności (KPI), aby zapewnić kierownictwu wgląd w cały proces. Odbywa się to po to, aby mogli zebrać wszystkie niezbędne dane do przeanalizowania, co poszło nie tak (lub co się udało).

  • Oprócz wstępnej rozmowy o metrykach powinna istnieć ciągła komunikacja poprzez spotkania zespołu lub kanały cyfrowe, takie jak Slack.

3. Brak siły roboczej

Gdy brakuje personelu, potrzebujemy inteligentniejszych narzędzi, które wykorzystują głębokie uczenie się, aby wprowadzać gromadzone dane i szybko podejmować decyzje. Przecież nikt nie ma czasu, aby przyjrzeć się każdemu wykonaniu testu (aw przypadku niektórych dużych organizacji może ich być około 75 000 w danym dniu). Sztuczka polega na wyeliminowaniu hałasu i znalezieniu właściwych rzeczy, na których można się skupić.

Tutaj może pomóc sztuczna inteligencja i uczenie maszynowe. Wiele narzędzi dostępnych obecnie na rynku wykorzystuje AI i ML do:

  • Twórz skrypty i testy, aby przenosić i weryfikować różne elementy danych

  • Raport jakości oparty na wcześniej wyuczonych zachowaniach

  • Pracuj w odpowiedzi na zmiany w czasie rzeczywistym.

Tym samym doszliśmy do końca tego artykułu o scenariuszach DevOps w czasie rzeczywistym.

Teraz, gdy już zrozumiałeś, czym są scenariusze DevOps w czasie rzeczywistym, sprawdź to autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka DevOps Certification Training pomaga uczniom zrozumieć, czym jest DevOps i zdobyć wiedzę na temat różnych procesów i narzędzi DevOps, takich jak Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack i GIT do automatyzacji wielu kroków w SDLC.

Masz do nas pytanie? Proszę wspomnieć o tym w sekcji komentarzyArtykuł dotyczący scenariuszy DevOps w czasie rzeczywistyma my skontaktujemy się z Tobą.