Co to jest metodyka DevOps?

Metodyka DevOps łączy programowanie (Dev) i operacje (Ops) w celu zjednoczenia ludzi, procesów i technologii w planowaniu aplikacji, tworzeniu, dostarczaniu i operacjach. Metodyka DevOps umożliwia koordynację i współpracę między wcześniej silosowymi rolami, takimi jak programowanie, operacje IT, inżynieria jakości i bezpieczeństwo.

Zespoły wdrażają kulturę, praktyki i narzędzia metodyki DevOps, aby zwiększyć zaufanie do aplikacji, które tworzą, lepiej reagują na potrzeby klientów i szybciej osiągają cele biznesowe. Metodyka DevOps pomaga zespołom stale dostarczać klientom wartość dzięki tworzeniu lepszych, bardziej niezawodnych produktów.

Metodyka DevOps i cykl życia aplikacji

Metodyka DevOps wpływa na cykl życia aplikacji w fazach planowania, programowania, dostarczania i operacji . Każda faza opiera się na innych fazach, a fazy nie są specyficzne dla roli. Kultura metodyki DevOps obejmuje wszystkie role w każdej fazie w pewnym stopniu.

Na poniższym diagramie przedstawiono fazy stylu życia aplikacji DevOps:

Conceptual diagram that illustrates the DevOps application lifecycle.

Cele i korzyści metodyki DevOps

Gdy zespół przyjmuje kulturę, praktyki i narzędzia metodyki DevOps, może osiągnąć niesamowite rzeczy:

Szybsze wejście na rynek

Dzięki zwiększonej wydajności ulepszona współpraca zespołowa, narzędzia automatyzacji i ciągłe wdrażanie — zespoły mogą szybko skrócić czas od powstania produktu do wprowadzenia na rynek.

Dostosowywanie się do rynku i konkurencji

Kultura Metodyki DevOps wymaga, aby zespoły skupiły się na kliencie. Dzięki zwinności, współpracy zespołowej i skoncentrowaniu się na środowisku klienta zespoły mogą stale dostarczać wartość swoim klientom i zwiększać konkurencyjność na platformie handlowej.

Utrzymywanie stabilności i niezawodności systemu

Dzięki wdrożeniu praktyk ciągłego ulepszania zespoły mogą budować większą stabilność i niezawodność wdrażanych produktów i usług. Te rozwiązania pomagają zmniejszyć liczbę niepowodzeń i ryzyka.

Poprawianie średniego czasu odzyskiwania

Średni czas odzyskiwania metryki wskazuje, jak długo trwa odzyskiwanie po awarii lub naruszeniu. Aby zarządzać awariami oprogramowania, naruszeniami zabezpieczeń i planami ciągłego ulepszania, zespoły powinny mierzyć i pracować nad ulepszeniem tej metryki.

Wdrażanie kultury metodyki DevOps

Aby w pełni zaimplementować metodykę DevOps, należy wdrożyć kulturę DevOps. Kultywowanie kultury Metodyki DevOps wymaga głębokich zmian w sposobie pracy i współpracy ludzi. Gdy organizacje zatwierdzą kulturę Metodyki DevOps, tworzą środowisko, w którym zespoły o wysokiej wydajności będą się rozwijać. Podczas wdrażania rozwiązań DevOps automatyzuje i optymalizuje procesy za pomocą technologii, bez przejścia do kultury Metodyki DevOps w organizacji i jej osobach, nie uzyskasz pełnych korzyści z metodyki DevOps.

Na poniższej ilustracji przedstawiono kluczowe aspekty kultury witryny na żywo firmy Microsoft.

Diagram of Microsoft's live site culture.

Poniżej przedstawiono kluczowe składniki kultury metodyki DevOps:

  • Współpraca, widoczność i dopasowanie: cechą charakterystyczną zdrowej kultury Metodyki DevOps jest współpraca między zespołami. Współpraca zaczyna się od widoczności. Programowanie, it i inne zespoły powinny dzielić się swoimi procesami, priorytetami i problemami DevOps. Planując pracę razem, są one lepiej dostosowane do celów i miar sukcesu w odniesieniu do firmy.
  • Zmienia zakres i odpowiedzialność: w miarę dopasowania zespołów przejmują własność i angażują się w inne fazy cyklu życia — nie tylko te, które mają kluczowe znaczenie dla swoich ról. Na przykład deweloperzy stają się odpowiedzialni nie tylko za innowacje i jakość zapewnianą w fazie programowania, lecz także za wydajność i stabilność, na jakie przekładają się wprowadzane przez nich zmiany w fazie działania. Jednocześnie operatorzy IT pamiętają, aby uwzględnić nadzór, zabezpieczenia i zgodność w fazie planowania i programowania.
  • Krótsze cykle wydania: zespoły DevOps pozostają elastyczne, wydając oprogramowanie w krótkich cyklach. Krótsze cykle wydawania ułatwiają planowanie i zarządzanie ryzykiem, ponieważ postęp jest przyrostowy, co dodatkowo ogranicza wpływ na stabilność systemu. Skrócenie cyklu wydawania umożliwia także organizacjom dostosowanie się i reagowanie na zmieniające się potrzeby klientów oraz presję konkurencyjną.
  • Ciągłe uczenie się: zespoły DevOps o wysokiej wydajności ustanawiają nastawienie na rozwój. Szybko kończą się niepowodzeniem i integrują naukę w swoich procesach. Dążą do ciągłego ulepszania, zwiększania zadowolenia klientów oraz przyspieszania innowacji i adaptacji na rynku.

Implementowanie praktyk metodyki DevOps

Metodyka DevOps jest implementowana zgodnie z praktykami devOps (opisanymi w poniższych sekcjach) w całym cyklu życia aplikacji. Część z tych praktyk pomaga przyspieszyć, zautomatyzować i poprawić określoną fazę. Inne obejmują kilka faz, pomagając zespołom tworzyć bezproblemowe procesy, które pomagają zwiększyć produktywność.

Ciągła integracja i ciągłe dostarczanie (CI/CD)

Ciągła integracja (CI) to praktyka używana przez zespoły programistyczne do automatyzowania, scalania i testowania kodu. Ciągła integracja pomaga wychwytywać usterki na wczesnym etapie cyklu programowania, co sprawia, że są one tańsze w celu naprawienia. Testy automatyczne są wykonywane w ramach procesu ciągłej integracji w celu zapewnienia jakości. Systemy ciągłej integracji tworzą artefakty i karmią je w celu wydania procesów w celu częstego wdrażania.

Ciągłe dostarczanie (CD) to proces, za pomocą którego kod jest kompilowany, testowany i wdrażany w co najmniej jednym środowisku testowym i produkcyjnym. Wdrażanie i testowanie w wielu środowiskach zwiększa jakość. Systemy ciągłego wdrażania generują artefakty możliwe do wdrożenia, w tym infrastrukturę i aplikacje. Zautomatyzowane procesy wydawania wykorzystują te artefakty w celu wydania nowych wersji i poprawek istniejących systemów. Systemy monitorujące i wysyłające alerty są stale uruchamiane w celu zapewnienia wglądu w cały proces ciągłego wdrażania.

Kontrola wersji

Kontrola wersji to praktyka zarządzania kodem w wersjach — śledzenie poprawek i historii zmian, aby umożliwić łatwy przegląd kodu oraz jego odzyskiwanie. Ta praktyka jest zwykle implementowana przy użyciu systemów kontroli wersji, takich jak Git, co umożliwia wielu deweloperom współpracę w kodzie tworzenia. Systemy te oferują przejrzysty proces scalania zmian w kodzie, które mają miejsce w tych samych plikach, obsługę konfliktów oraz cofanie zmian do poprzednich stanów.

Stosowanie kontroli wersji to podstawowa praktyka DevOps, wspomagająca współpracę zespołów deweloperskich, podział zadań kodowania między członków zespołu oraz pozwalająca przechowywać cały kod w celu jego łatwego odzyskiwania w razie potrzeby. Kontrola wersji to także niezbędny element innych praktyk, takich jak ciągła integracja i infrastruktura jako kod.

Zwinne wytwarzanie oprogramowania (Agile)

Agile to podejście do wytwarzania oprogramowania, które kładzie nacisk na współpracę zespołową, informacje zwrotne od klientów i użytkowników oraz dużą elastyczność na zmiany dzięki krótkim cyklom wydawania. Zespoły stosujące metodykę Agile udostępniają ciągłe zmiany i poprawki klientom, zbierają od nich informacje zwrotne, a następnie uczą się i dostosowują w oparciu o wymagania oraz potrzeby klientów. Metodyka Agile różni się znacząco od innych bardziej tradycyjnych struktur, takich jak model kaskadowy, który obejmuje długie cykle wydawania definiowane przez sekwencyjne fazy. Kanban i Scrum to dwie popularne platformy powiązane z metodyką Agile.

Infrastruktura jako kod

Infrastruktura jako kod definiuje topologie i zasoby systemowe w sposób opisowy, który umożliwia zespołom zarządzanie tymi zasobami jak kodem. Te definicje mogą być przechowywane i wersjonowane w systemach kontroli wersji, gdzie mogą być przeglądane i cofane — znów jak w przypadku kodu.

Wykorzystywanie infrastruktury jako kodu pomaga zespołom wdrażać zasoby systemowe w sposób niezawodny, powtarzalny i kontrolowany. Infrastruktura jako kod pomaga także automatyzować wdrażanie i zmniejsza ryzyko błędów ludzkich, szczególnie w dużych, złożonych środowiskach. To powtarzalne, niezawodne rozwiązanie do wdrażania środowisk umożliwia zespołom utrzymanie środowisk deweloperskich i testowych, które są identyczne jak środowisko produkcyjne. Duplikowanie środowisk do innych centrów danych oraz platform w chmurze staje się prostsze i wydajniejsze.

Zarządzanie konfiguracją

Zarządzanie konfiguracją oznacza zarządzanie stanem zasobów w systemie, w tym serwerów, maszyn wirtualnych oraz baz danych. Przy użyciu narzędzi do zarządzania konfiguracją zespoły mogą wdrażać zmiany w sposób kontrolowany i systematyczny, ograniczając ryzyko związane z modyfikacją konfiguracji systemu. Zespoły używają narzędzi do zarządzania konfiguracją, aby śledzić stan systemu i unikać odchyleń w konfiguracji, czyli sytuacji, gdy konfiguracja zasobu systemowego odbiega w czasie od pożądanego stanu zdefiniowanego dla tego zasobu.

Wraz z infrastrukturą jako kodem można łatwo templatyzować i automatyzować definicję i konfigurację systemu, co ułatwia zespołom obsługę złożonych środowisk na dużą skalę.

Monitorowanie ciągłe

Ciągłe monitorowanie oznacza pełny wgląd w wydajność i kondycję całego stosu aplikacji w czasie rzeczywistym. Ta widoczność waha się od podstawowej infrastruktury uruchamianej przez aplikację po składniki oprogramowania wyższego poziomu. Widoczność odbywa się za pośrednictwem zbierania danych telemetrycznych i metadanych oraz ustawiania alertów dla wstępnie zdefiniowanych warunków, które uzasadniają uwagę operatora. Telemetria obejmuje dane zdarzeń oraz dzienniki zbierane z różnych części systemu, które są przechowywane tam, gdzie mogą być analizowane i odpytywane.

Wysoce wydajne zespoły DevOps dbają o ustawienie przydatnych alertów z możliwością podejmowania akcji i gromadzenie rozbudowanych informacji telemetrycznych, które umożliwiają uzyskanie szczegółowych informacji z ogromnych ilości danych. Te szczegółowe informacje pomagają zespołowi eliminować problemy w czasie rzeczywistym i dowiadywać się, jak poprawić aplikację w przyszłych cyklach rozwoju.

Planowanie

W fazie planowania zespoły DevOps tworzą pomysł, definiują i opisują funkcje i możliwości aplikacji i systemów, które planują utworzyć. Zespoły śledzą postęp zadań na niskim i wysokim poziomie szczegółowości— od pojedynczych produktów po wiele portfolio produktów. Zespoły używają następujących rozwiązań DevOps do planowania zwinnością i widocznością:

  • Tworzenie list prac.
  • Śledzenie usterek.
  • Zarządzanie programowaniem oprogramowania Agile za pomocą scrum.
  • Użyj tablic Kanban.
  • Wizualizowanie postępu za pomocą pulpitów nawigacyjnych.

Aby zapoznać się z omówieniem kilku lekcji i praktyk, które firma Microsoft przyjęła w celu obsługi planowania metodyki DevOps w zespołach oprogramowania firmy, zobacz How Microsoft plans with DevOps (Jak firma Microsoft planuje za pomocą metodyki DevOps).

Opracowywanie zawartości

Faza programowania obejmuje wszystkie aspekty tworzenia kodu oprogramowania. W tej fazie zespoły DevOps wykonują następujące zadania:

  • Wybierz środowisko deweloperskie.
  • Pisanie, testowanie, przeglądanie i integrowanie kodu.
  • Skompiluj kod w artefakty, aby wdrożyć je w różnych środowiskach.
  • Użyj kontroli wersji, zwykle git, aby współpracować nad kodem i pracować równolegle.

Aby szybko wprowadzać innowacje bez poświęcania jakości, stabilności i produktywności, zespoły DevOps:

Aby zapoznać się z omówieniem praktyk programistycznych przyjętych przez firmę Microsoft w celu wsparcia ich przejścia do metodyki DevOps, zobacz Jak firma Microsoft opracowuje rozwiązania DevOps.

Dostarczanie

Dostarczanie to proces spójnego i niezawodnego wdrażania aplikacji w środowiskach produkcyjnych, najlepiej poprzez ciągłe dostarczanie (CD).

W fazie dostarczania zespoły DevOps:

  • Zdefiniuj proces zarządzania wydaniami z przejrzystymi etapami zatwierdzania ręcznego.
  • Ustaw automatyczne bramy, aby przenosić aplikacje między etapami do ostatecznego wydania dla klientów.
  • Automatyzowanie procesów dostarczania w celu dostosowania ich do skalowalnych, powtarzalnych, kontrolowanych i dobrze przetestowanych.

Dostarczanie obejmuje również wdrażanie i konfigurowanie podstawowej infrastruktury środowiska dostarczania. Zespoły DevOps używają technologii takich jak infrastruktura jako kod (IaC), kontenery i mikrousługi w celu dostarczania w pełni zarządzanych środowisk infrastruktury.

Sejf rozwiązania wdrażania mogą identyfikować problemy, zanim wpłyną one na środowisko klienta. Te rozwiązania pomagają zespołom DevOps dostarczać często łatwość, pewność siebie i spokój.

Podstawowe zasady i procesy DevOps, które firma Microsoft ewoluowała w celu zapewnienia wydajnych systemów dostarczania, opisano w temacie Jak firma Microsoft dostarcza oprogramowanie za pomocą metodyki DevOps.

Operations

Faza operacji obejmuje obsługę, monitorowanie i rozwiązywanie problemów z aplikacjami w środowiskach produkcyjnych, w tym chmur hybrydowych lub publicznych, takich jak platforma Azure. Zespoły DevOps dążą do zapewnienia niezawodności systemu, wysokiej dostępności, silnego bezpieczeństwa i zerowego przestoju.

Zautomatyzowane rozwiązania dotyczące dostarczania i bezpiecznego wdrażania pomagają zespołom szybko identyfikować i rozwiązywać problemy, gdy wystąpią. Utrzymywanie czujności wymaga rozbudowanej telemetrii, alertów z możliwością działania i pełnego wglądu w aplikacje i systemy bazowe.

Rozwiązania używane przez firmę Microsoft do obsługi złożonych platform online są opisane w temacie Jak firma Microsoft obsługuje niezawodne systemy za pomocą metodyki DevOps.

Następne kroki

Inne zasoby

Szkolenia i certyfikaty