1. Zarządzanie BusinessOperations Wybór najlepszego dostawcy usług chmurowych, funkcji i narzędzi dla DevOps

Emily Freeman

Sukces inicjatywy DevOps zależy w dużej mierze od śledzenia tego procesu, ale ważne jest również, aby używać odpowiednich narzędzi. Wybór dostawcy usług w chmurze nie jest łatwym wyborem, szczególnie gdy DevOps jest Twoją motywacją do jazdy. GCP (Google Cloud Platform), AWS (Amazon Web Services) i Azure mają więcej wspólnego niż osobno.

Często twoja decyzja zależy bardziej od poziomu komfortu zespołu DevOps u konkretnego dostawcy chmury lub Twojego aktualnego stosu niż od samego dostawcy chmury. Po tym, jak zdecydujesz się przenieść do chmury, następną decyzją jest wybór dostawcy chmury, który odpowiada Twoim potrzebom DevOps. Oto kilka rzeczy, które należy wziąć pod uwagę, oceniając dostawców usług chmurowych z uwzględnieniem zasad DevOps:

  • Solidne osiągnięcia. Wybrana chmura powinna mieć historię odpowiedzialnych decyzji finansowych i wystarczający kapitał, aby móc obsługiwać i rozwijać duże centra danych na przestrzeni dziesięcioleci. Zgodność i zarządzanie ryzykiem. Formalna struktura i ustalone zasady zgodności są niezbędne, aby zapewnić bezpieczeństwo danych. Najlepiej sprawdzaj audyty przed podpisaniem umowy. Pozytywna reputacja Zaufanie klienta jest absolutnie kluczowe. Czy wierzysz, że możesz polegać na tym dostawcy usług w chmurze, aby nadal się rozwijać i wspierać zmieniające się potrzeby DevOps? Umowy o gwarantowanym poziomie usług (SLA). Jakiego poziomu usług potrzebujesz? Zazwyczaj dostawcy usług w chmurze oferują różne poziomy niezawodności w zależności od kosztów. Na przykład 99,9 procent czasu sprawności będzie znacznie tańszy niż 99,999 procent czasu dostępności. Metryki i monitorowanie. Jakie rodzaje analiz, monitorowania i telemetrii aplikacji dostarcza dostawca? Upewnij się, że możesz uzyskać odpowiedni poziom wglądu w swoje systemy w jak najbliższym czasie rzeczywistym.

Na koniec upewnij się, że wybrany dostawca chmury ma doskonałe możliwości techniczne, które zapewniają usługi, które spełniają określone potrzeby DevOps. Ogólnie szukaj

  • Możliwości obliczeniowe Rozwiązania do przechowywania Funkcje wdrażania Logowanie i monitorowanie Przyjazne interfejsy użytkownika

Powinieneś także potwierdzić możliwość wdrożenia rozwiązania chmury hybrydowej, jeśli zajdzie taka potrzeba, a także nawiązywać połączenia HTTP z innymi interfejsami API i usługami.

Trzej główni dostawcy usług w chmurze to Google Cloud Platform (GCP), Microsoft Azure i Amazon Web Services (AWS). Możesz także znaleźć mniejszych dostawców chmur i z pewnością wielu prywatnych dostawców chmur, ale większość tego, co musisz wiedzieć, pochodzi z porównania dostawców chmur publicznych.

Amazon Web Services (AWS)

Podobnie jak inni główni dostawcy chmur publicznych, AWS zapewnia obliczenia na żądanie w ramach subskrypcji płatnej zgodnie z rzeczywistym użyciem. Użytkownicy AWS mogą subskrybować dowolną liczbę usług i zasobów obliczeniowych. Amazon jest obecnie liderem rynku wśród dostawców usług w chmurze, posiadając większość abonentów chmury.

Oferuje solidny zestaw funkcji i usług w regionach na całym świecie. Dwie najbardziej znane usługi to Amazon Elastic Compute Cloud (EC2) i Amazon Simple Storage Service (Amazon S3). Podobnie jak w przypadku innych dostawców usług w chmurze, usługi są dostępne, a infrastruktura jest udostępniana za pośrednictwem interfejsów API.

Microsoft Azure

Zanim Microsoft uruchomił tego dostawcę chmury jako Microsoft Azure, nazywał się Windows Azure. Microsoft zaprojektował go tak, aby robił to, co sama nazwa wskazuje - służył jako dostawca chmury dla tradycyjnie organizacji informatycznych Windows. Ale gdy rynek stał się bardziej konkurencyjny, a Microsoft zaczął lepiej rozumieć krajobraz inżynierii, platforma Azure dostosowała się, rozwijała i ewoluowała.

Mimo że Azure jest prawdopodobnie mniej odporny niż AWS, Azure jest wszechstronnym dostawcą chmury, który koncentruje się na doświadczeniu użytkownika. Poprzez różne premiery i przejęcia produktów - w szczególności GitHub - Microsoft zainwestował znaczne środki w infrastrukturę Linuksa, co pozwoliło jej zapewnić bardziej niezawodne usługi szerszej publiczności.

Google Cloud Platform (GCP)

Google Cloud Platform (GCP) ma najmniejszy udział w rynku spośród trzech głównych dostawców chmur publicznych, ale oferuje znaczny zestaw usług chmurowych w prawie dwóch tuzinach regionów geograficznych.

Być może najbardziej atrakcyjnym aspektem GCP jest to, że oferuje użytkownikom tę samą infrastrukturę, z której Google korzysta wewnętrznie. Ta infrastruktura obejmuje niezwykle wydajne usługi komputerowe, magazynowe, analityczne i uczenia maszynowego. W zależności od konkretnego produktu GCP może mieć specjalistyczne narzędzia, których brakuje (lub jest mniej dojrzały) w AWS i Azure.

Znajdowanie narzędzi i usług DevOps w chmurze

Dosłownie setki narzędzi i usług są do Państwa dyspozycji za pośrednictwem głównych dostawców chmury. Te narzędzia i usługi są ogólnie podzielone na następujące kategorie:

  • Obliczać Przechowywanie Sieć Zarządzanie zasobami Cloud Artificial Intelligence (AI) Tożsamość Bezpieczeństwo Bez serwera IoT

Poniżej znajduje się lista najczęściej używanych usług we wszystkich trzech głównych dostawcach chmury. Usługi te obejmują wdrażanie aplikacji, zarządzanie maszyną wirtualną (VM), aranżację kontenerów, funkcje bez serwera, pamięć i bazy danych.

Uwzględniono dodatkowe usługi, takie jak zarządzanie tożsamością, przechowywanie bloków, chmura prywatna, przechowywanie sekretów i inne. Nie jest to wyczerpująca lista, ale może być dla Ciebie solidnym fundamentem, gdy zaczniesz badać swoje opcje i poczujesz, co wyróżnia dostawców chmury.

  • Wdrażanie aplikacji: platforma jako usługa (PaaS) do wdrażania aplikacji w różnych językach, w tym Java, .NET, Python, Node.js, C #, Ruby i Go Azure: Azure Cloud Services AWS: AWS Elastic Beanstalk GCP: Google App Engine
  • Zarządzanie maszyną wirtualną (VM): opcja Infrastruktura jako usługa (IaaS) do uruchamiania maszyn wirtualnych (VM) w systemie Linux lub Windows Azure: Azure Virtual Machines AWS: Amazon EC2 GCP: Google Compute Engine
  • Zarządzane Kubernetes: Umożliwia lepsze zarządzanie kontenerami za pośrednictwem popularnego orkiestratora Kubernetes Azure: Azure Kubernetes Service (AKS) AWS: Amazon Elastic Container Service (ECS) dla Kubernetes GCP: Google Kubernetes Engine
  • Bez serwera: umożliwia użytkownikom tworzenie logicznych przepływów pracy funkcji bez serwera Azure: Azure Functions AWS: AWS Lambda GCP: funkcje Google Cloud
  • Przechowywanie w chmurze: Niestrukturalne przechowywanie obiektów z buforowaniem Azure: Azure Blob Storage AWS: Amazon S3 GCP: Google Cloud Storage
  • Bazy danych: bazy danych SQL i NoSQL na żądanie Azure: Azure Cosmos DB AWS: Amazon Relational Database Service (RDS) i Amazon DynamoDB (NoSQL) GCP: Google Cloud SQL i Google Cloud BigTable (NoSQL)

Podczas eksploracji trzech głównych dostawców usług w chmurze zauważasz długą listę usług. Możesz czuć się przytłoczony setkami dostępnych opcji. Jeśli przypadkiem nie możesz znaleźć tego, czego potrzebujesz, rynek prawdopodobnie zapewni coś podobnego. Rynek jest miejscem, gdzie niezależni programiści oferują usługi podłączane do chmury - hostowane przez Azure, AWS lub GCP.

W poniższej tabeli wymieniono dodatkowe usługi świadczone przez większość, jeśli nie wszystkich, dostawców usług w chmurze.

  1. BusinessOperations Management Dlaczego DevOps ma znaczenie: 11 sposobów DevOps przynosi korzyści Twojej organizacji

Emily Freeman

Prawidłowo wykonane DevOps oferuje znaczące korzyści Twojej organizacji. W tym artykule przedstawiono kluczowe informacje na temat korzyści DevOps dla Twojej organizacji. Skorzystaj z niego, aby pomóc przekonać współpracowników lub lepiej zrozumieć, dlaczego wybrałeś trasę DevOps, gdy droga staje się wyboista.

Korzyści DevOps

DevOps pomaga zaakceptować ciągłe zmiany

Krajobraz technologii to ciągle zmieniające się środowisko. Niektóre języki ewoluują i tworzone są nowe. Ramy przychodzą i odchodzą. Zmiany w oprzyrządowaniu infrastruktury w celu zaspokojenia stale rosnących wymagań dotyczących wydajniejszego hostowania aplikacji i szybszego świadczenia usług. Narzędzia kontynuują abstrakcję obliczeń niskiego poziomu w celu zmniejszenia kosztów technicznych.

Jedyną stałą jest zmiana. Możliwość dostosowania się do tej zmiany określi Twój sukces jako indywidualnego współpracownika, kierownika lub kierownika. Bez względu na rolę, którą obecnie pełnisz w firmie lub masz nadzieję, że w końcu odegrasz, bardzo ważne jest, aby szybko się dostosować i usunąć jak najwięcej tarcia ze wzrostu. DevOps umożliwia dostosowanie i rozwój poprzez poprawę komunikacji i współpracy.

DevOps obejmuje chmurę

Chmura nie jest przyszłością; śnieży. Chociaż nadal możesz się przeprowadzać lub nie jesteś jeszcze gotowy do przeniesienia się, pamiętaj, że chmura jest rozwiązaniem dla wszystkich oprócz kilku firm. Daje to większą elastyczność niż tradycyjna infrastruktura, zmniejsza stres związany z działalnością i (zwykle) kosztuje znacznie mniej ze względu na strukturę cenową typu „pay-as-you-go”.

Chmury publiczne, prywatne i hybrydowe dają nieograniczone możliwości lepszego prowadzenia firmy. Możliwość uruchamiania (uruchamiania) zasobów w ciągu kilku minut jest czymś, czego większość firm nigdy wcześniej nie doświadczyła w chmurze.

Ta zwinność zapewniana przez chmurę idzie w parze z DevOps. Omri Gazitt z Puppet, firmy zajmującej się automatyzacją i zarządzaniem konfiguracją, ujął to najlepiej: „Gdy organizacje przenoszą się do chmury, zmieniają swoje podstawowe założenia dotyczące dostarczania oprogramowania”.

Dzięki chmurze interfejsy API łączą każdą usługę, platformę i narzędzie infrastrukturalne, dzięki czemu można płynnie zarządzać zasobami i aplikacją. Podczas migracji do chmury możesz ponownie ocenić wcześniejsze decyzje dotyczące architektury i powoli przekształcić aplikację i system w natywny dla chmury lub zaprojektować ją z myślą o chmurze.

DevOps pomaga Ci zatrudnić najlepszych

Ze względu na zwiększone zapotrzebowanie, wielkich inżynierów brakuje. Po prostu nie ma wystarczającej liczby inżynierów, aby obsadzić wszystkie aktualnie otwarte miejsca pracy lub zaspokoić popyt na rynku w ciągu następnej dekady i później. Chociaż znalezienie inżynierów może być trudne, nie jest to niemożliwe, zwłaszcza jeśli skupisz się na odkrywaniu inżynierów, którzy doceniają ciekawość i nie boją się porażek. Jeśli wdrożysz DevOps w swojej ogólnej kulturze inżynierskiej, możesz awansować inżynierów i szkolić ich w zakresie metodologii i technologii, które wspierają ciągłe doskonalenie.

W wywiadzie trudno jest zmierzyć potencjał. Zwykle talent szepcze. Najbardziej utalentowani inżynierowie zwykle nie są towarzyscy ani chwaleni; pozwalają, aby ich praca przemawiała za nich. DevOps pozwala ci uważniej słuchać osobistych i zawodowych zainteresowań inżynierów, z którymi rozmawiasz.

Spróbuj wybrać kandydatów na podstawie ich poziomu ciekawości, umiejętności komunikacyjnych i entuzjazmu. Te cechy mogą sprawić, że Twój zespół przebije strach, niepewność i wątpliwości. Mogą prowadzić zespół poprzez trudne decyzje podejmowane w ramach ograniczeń, próbując rozwiązać trudne problemy.

Możesz nauczyć kogoś umiejętności, ale nauczenie kogoś, jak się uczyć, to zupełnie inna sprawa. Kultura uczenia się, którą tworzysz w swojej organizacji DevOps, umożliwia priorytetowe podejście do rozwoju w porównaniu do sprawności technicznej. W DevOps zatrudnienie zespołu jest niezwykle ważne. Każda jednostka jest częścią całości, a zespół musi mieć równowagę całościowo. Osiągnięcie tej równowagi oznacza, że ​​czasami nie zatrudniasz „najlepszego” inżyniera, zatrudniasz najlepszego inżyniera dla zespołu.

Zatrudniając zespół DevOps, możesz, podobnie jak pociągnięte konie, zaciągnąć więcej ciężaru, niż mógłbyś indywidualnie. Dzięki DevOps możesz pomnożyć poszczególne elementy swojego zespołu i, jako całość, stworzyć potęgę zespołu.

DevOps zapewnia Ci konkurencyjność

Coroczny raport o stanie DevOps opublikowany przez DevOps Research and Assessment (DORA) wyjaśnia: Firmy na całym świecie używają DevOps do dostosowywania swoich praktyk inżynierskich i czerpią korzyści. Widzą wzrost produkcji inżynieryjnej i redukcję kosztów. Dzięki DevOps firmy te przechodzą z nieporęcznych procesów i systemów na usprawniony sposób tworzenia oprogramowania ukierunkowanego na użytkownika końcowego.

DevOps umożliwia firmom tworzenie niezawodnej infrastruktury i wykorzystywanie tej infrastruktury do szybszego i bardziej niezawodnego wydawania oprogramowania. Konkluzja jest taka: organizacje o wysokich wynikach korzystają z DevOps i miażdżą swoją konkurencję, zwiększając częstotliwość wdrażania i znacznie zmniejszając liczbę awarii, które występują z powodu zmian w systemie.

Jeśli chcesz konkurować, musisz przyjąć solidne metodologie DevOps. Może nie wszystkie, a na pewno nie wszystkie naraz - ale minął czas oczekiwania i sprawdzenia, czy warto DevOps się opłaciło.

DevOps pomaga rozwiązywać ludzkie problemy

Ludzie osiągnęli punkt w naszej ewolucji, w którym technologia ewoluuje szybciej niż nasz mózg. Zatem największe wyzwania, przed którymi stają ludzie, wynikają z ludzkich ograniczeń, a nie ograniczeń oprogramowania lub infrastruktury. W przeciwieństwie do innych metodologii tworzenia oprogramowania, DevOps skupia się holistycznie na systemie socjotechnicznym.

Osiągnięcie DevOps wymaga zmiany kultury i sposobu myślenia. Ale jeśli osiągniesz kulturę i sposób myślenia DevOps, Ty i Twoja organizacja odniesiesz niemal nieograniczone korzyści. Kiedy inżynierowie są upoważnieni do eksploracji, wolni od presji i strachu przed porażką, dzieją się niesamowite rzeczy.

Inżynierowie odkrywają nowe sposoby rozwiązywania problemów. Podchodzą do projektów i problemów ze zdrowym nastawieniem i współpracują płynniej, bez niepotrzebnej i negatywnej konkurencji.

DevOps stanowi wyzwanie dla pracowników

DevOps przyspiesza rozwój poszczególnych inżynierów, a także całego zespołu inżynierów. Inżynierowie to mądrzy ludzie. Są również z natury ciekawi. Świetny inżynier, który jest nastawiony na rozwój, potrzebuje nowych wyzwań po opanowaniu określonej technologii, narzędzia lub metodologii lub często odczuwa stagnację.

Muszą czuć, że ich mózg i umiejętności są rozciągane - nie do tego stopnia, że ​​są przytłoczeni lub zestresowani, ale wystarczająco, aby poczuć, że rosną. Takie napięcie opisuje Dan Pink w Drive. Jeśli uda ci się osiągnąć tę równowagę, twoi inżynierowie będą się dobrze rozwijać - jako jednostki i jako zespół.

Metodologia DevOps promuje umiejętności w kształcie litery T, co oznacza, że ​​inżynierowie specjalizują się w jednym obszarze z głęboką wiedzą i szerokim zrozumieniem wielu innych obszarów. Takie podejście pozwala inżynierom eksplorować inne obszary zainteresowania.

Być może inżynier Python interesuje się na przykład infrastrukturą chmurową. Żadna inna metodologia inżynieryjna nie zezwala i nie zachęca inżynierów do eksploracji tak, jak robi to DevOps, a to w ogromnym stopniu przyczynia się do zatrudniania i zatrzymywania talentów.

DevOps wypełnia luki

Jednym z wyzwań współczesnych firm technologicznych jest przepaść między potrzebami biznesu a potrzebami inżynierii. W tradycyjnej firmie z tradycyjnymi strategiami zarządzania istnieje naturalne tarcie między inżynierią a działami takimi jak marketing, sprzedaż i rozwój biznesu. Tarcie to wynika z braku wyrównania. Każdy dział mierzy się różnymi wskaźnikami sukcesu.

DevOps dąży do ujednolicenia każdego działu firmy i stworzenia wspólnego zrozumienia i szacunku. Ten wzajemny szacunek dla miejsc pracy i wkładów pozwala każdej osobie w firmie dobrze się rozwijać. Usuwa tarcie i poprawia przyspieszenie.

Pomyśl o zespole psich zaprzęgów. Jeśli każdy pies porusza się w oddzielnych kierunkach, sanie nigdzie nie idą. Teraz wyobraź sobie, że psy pracują razem, koncentrując się na postępach - razem. Kiedy brakuje tarcia wewnętrznie, jedynymi wyzwaniami, przed którymi stoisz, są wyzwania zewnętrzne, a wyzwania zewnętrzne są prawie zawsze łatwiejsze do opanowania niż wewnętrzne konflikty.

DevOps pozwala ci dobrze zawieść

Awaria jest nieunikniona. Jest to po prostu nieuniknione. Przewidywanie wszystkich przyczyn awarii systemu jest niemożliwe z powodu wszystkich niewiadomych. (I może spektakularnie zawieść, prawda?) Zamiast unikać porażki za wszelką cenę i czuć się zmiażdżonym, gdy dojdzie do awarii, możesz się na to przygotować. DevOps przygotowuje organizacje do reagowania na niepowodzenia, ale nie w paniczny sposób wywołany stresem.

Incydenty zawsze wymagają pewnego poziomu stresu. W pewnym momencie struktury dowodzenia kierownictwo prawdopodobnie będzie krzyczeć na temat utraty pieniędzy podczas przerwy w świadczeniu usług. Możesz jednak zmniejszyć stres, jaki odczuwa Twój zespół, wykorzystując porażkę jako sposób uczenia się i dostosowując swój system, aby stał się bardziej odporny.

Każdy incydent jest okazją do doskonalenia się i rozwoju, zarówno indywidualnie, jak i jako zespół.

DevOps obejmuje sztukę ciągłego doskonalenia. Kiedy zespół doświadcza przepływu pracy, może codziennie dokonywać drobnych wyborów, które przyczyniają się do długoterminowego wzrostu, a ostatecznie - lepszego produktu.

DevOps pozwala ci ciągle ulepszać

Ciągłe doskonalenie jest kluczowym składnikiem DevOps. Użyj wizualizacji niekończącego się cyklu, stosując DevOps w swojej organizacji. Cykl nie powinien wywoływać lęków poprzez myśli Syzyfa, pchającego głaz na wzgórze na całą wieczność. Zamiast tego pomyśl o tym cyklu jak o ruchu, niczym śnieżka tocząca się w dół, zbierająca pęd i masę.

Przyjmując DevOps i integrując coraz więcej jego podstawowych założeń w codziennym przepływie pracy, będziesz świadkiem tego przyspieszenia z pierwszej ręki. Cykl ciągłego doskonalenia powinien zawsze koncentrować się wokół klienta. Musisz stale myśleć o użytkowniku końcowym i włączać informacje zwrotne do cyklu życia oprogramowania.

Podstawą tego cyklu jest CI / CD. Przyjęcie CI / CD nie jest wymaganiem DevOps dla wszystkiego albo nic; zamiast tego jest to powolny proces wdrażania. Najpierw powinieneś skupić się na opanowaniu ciągłej integracji. Zachęć inżynierów do swobodnego udostępniania kodu i częstego scalania kodu. Takie podejście zapobiega blokowaniu izolacji i silosów w organizacji inżynierskiej.

Gdy Twoja organizacja opanuje ciągłą integrację, przejdź do ciągłej dostawy, praktyki automatyzacji dostarczania oprogramowania. Ten krok wymaga automatyzacji, ponieważ kod będzie przechodził wiele kontroli w celu zapewnienia jakości. Po tym, jak cały twój kod będzie bezpieczny i dostępny w repozytorium kodu źródłowego, możesz zacząć wdrażać małe zmiany w sposób ciągły. Twoim celem jest usunięcie ręcznych barier i poprawienie zdolności Twojego zespołu do wykrywania i naprawiania błędów bez wpływu na klienta.

DevOps automatyzuje trud

Przyspieszenie i zwiększona skuteczność są podstawą metodologii DevOps. Dzięki automatyzacji pracochłonnych procesów manualnych DevOps uwalnia inżynierów do pracy nad projektami, które sprawiają, że oprogramowanie i systemy są bardziej niezawodne i łatwiejsze w utrzymaniu - bez chaosu nieoczekiwanych przerw w świadczeniu usług.

Inżynieria niezawodności strony (SRE) zajmuje się trudem, który jest pracą wymaganą do utrzymania ciągłości usług, ale jest ręczny i powtarzalny. Toil może być zautomatyzowany i nie ma długoterminowej wartości. Być może najważniejsze ze wszystkich zadań jest skalowanie liniowe, co ogranicza wzrost. Pamiętaj, że trud nie odnosi się do ogólnych potrzeb administracyjnych, takich jak spotkania i planowanie. Ten rodzaj pracy, jeśli jest realizowany z mentalnością DevOps, jest korzystny dla długoterminowego przyspieszenia twojego zespołu.

Jednym z podstawowych założeń oprzyrządowania praktyki DevOps jest automatyzacja. Możesz zautomatyzować proces wdrażania, tak aby zawierał pełny zestaw testów, a także inne bramki, przez które musi przejść kod, aby go zwolnić. Pod wieloma względami SRE jest kolejnym logicznym krokiem w ewolucji DevOps i powinien być kolejnym krokiem po tym, jak Ty i Twoja organizacja opanujecie podstawowe koncepcje DevOps i wprowadzicie praktykę w zespole.

DevOps przyspiesza dostawę

Cykl życia oprogramowania ewoluował od powolnego i liniowego procesu Waterfall do zwinnej i ciągłej pętli DevOps. Nie wymyślasz już produktu, nie rozwijasz go w pełni, a następnie przekazujesz klientom, licząc na jego sukces.

Zamiast tego tworzysz pętlę sprzężenia zwrotnego wokół klienta i stale dostarczasz iteracyjne zmiany do swoich produktów. Ten połączony obwód umożliwia ciągłe doskonalenie funkcji i upewnienie się, że klient jest zadowolony z tego, co dostarczasz.

Kiedy połączysz wszystkie kropki i w pełni zastosujesz DevOps w swojej organizacji, zobaczysz, jak Twój zespół może szybciej dostarczać lepsze oprogramowanie. Początkowo zmiany będą niewielkie, podobnie jak zmiany, które publikujesz. Ale z czasem te pozornie nieznaczne zmiany sumują się i tworzą zespół, który przyspiesza dostarczanie wysokiej jakości oprogramowania.

  1. BusinessOperations Management Zwiększ możliwości narzędzi chmurowych: Automatyzacja DevOps w chmurze

Emily Freeman

Połączenie chmury z praktyką DevOps może przyspieszyć pracę, którą już wykonałeś. W połączeniu z nimi zarówno DevOps, jak i chmura mogą napędzać cyfrową transformację Twojej firmy.

Zobaczysz wyniki, o ile podkreślisz priorytety DevOps: ludzi, proces i technologię. Chmura - wraz z innymi narzędziami - wchodzi prosto w techniczną część implementacji DevOps.

DevOps i przetwarzanie w chmurze

Przetwarzanie w chmurze umożliwia automatyzację dla programistów i pracowników w sposób, który po prostu nie jest możliwy, gdy zarządzasz własną infrastrukturą fizyczną. Udostępnianie infrastruktury za pomocą kodu w chmurze - systemu nazywanego infrastrukturą jako kod (IaC) - umożliwia tworzenie szablonów i powtarzalnych procesów.

Śledząc zmiany w kodzie infrastruktury za pomocą kontroli źródła, pozwalasz swojemu zespołowi na płynne działanie i śledzenie zmian. IaC jest znacznie bardziej powtarzalna i zautomatyzowana - nie wspominając o tym szybciej - niż zmuszanie inżynierów do klikania w portal.

Nawet instrukcje w portalu nie są głupie. Ryzykujesz dokonywanie niewielkich, ale znaczących zmian w konfiguracji infrastruktury, jeśli konsekwentnie budujesz tę samą konfigurację za pośrednictwem portalu, a nie pliku YAML.

Przeniesienie kultury DevOps do chmury

Ludzie często mówią o DevOps i przetwarzaniu w chmurze, jakby były ze sobą powiązane i na wiele sposobów są. Pamiętaj jednak, że możesz adoptować DevOps - lub zacząć przekształcać swoją organizację inżynieryjną - bez wchodzenia w chmurę. Jest całkowicie uzasadnione, że najpierw ustalasz standardy, praktyki i procesy dla swojego zespołu, zanim przełączysz swoją infrastrukturę na dostawcę chmury.

Chociaż ludzie mówią tak, jakby wszyscy byli już w chmurze, wciąż jesteś w czołówce przejścia na chmurę. Dostawcy usług w chmurze stają się coraz bardziej wydajni z dnia na dzień, a firmy inżynieryjne powoli przenoszą swoje usługi hostingu do chmury. Mając to na uwadze, organizacja starająca się zaimplementować DevOps powinna rozważyć skorzystanie z usług jednego z głównych dostawców usług chmurowych.

Każdy z doświadczeniem DevOps prawdopodobnie nie nazwałby chmury rozwiązaniem NoOps, ale mógłby nazwać to OpsLite. Usługi w chmurze często wyodrębniają złożoną architekturę operacji w sposób, który sprawia, że ​​architektura ta jest bardziej przyjazna dla programistów i umożliwia im przejęcie większej części ich składników.

Jeśli kiedykolwiek narzekałeś, że programiści powinni być objęci rotacją na wezwanie, masz rację - tak powinno być. Włączenie programistów do rotacji na żądanie to świetny sposób na poszerzenie ich wiedzy na temat wdrażania kodu, a także zarządzania infrastrukturą, w której działają ich usługi, i zarządzania nią. Zmniejsza to koszty operacyjne i uwalnia specjalistów ds. Operacyjnych do pracy nad proaktywnymi rozwiązaniami.

Uczenie się poprzez adopcję DevOps

Jeśli Twój zespół jest w stanie adoptować DevOps i jednocześnie przechodzić na przetwarzanie w chmurze, możesz wykorzystać te zmiany jako okazję do nauki zarówno dla programistów, jak i pracowników operacyjnych.

Podczas gdy Twój zespół przenosi się do chmury, programiści mają okazję zapoznać specjalistów ds. Operacyjnych z kodem - być może nawet konkretnymi językami - i kontrolą źródła, a operatorzy mogą nauczyć programistów o infrastrukturze. Kiedy obie grupy są zarówno ekspertami, jak i nowicjuszami, żadna z grup nie musi zbytnio niszczyć transferu wiedzy.

Zaufanie, relacje i zdrowa dynamika, które wynikają z tych interakcji, ożywi Twój zespół i będzie trwać znacznie dłużej, niż zajęła to natychmiastowa praca. Na wiele sposobów wzmacniasz swoją kulturę DevOps poprzez oprzyrządowanie praktyki DevOps.

Korzystaj z usług w chmurze dzięki inicjatywie DevOps

Współczesne operacje zmieniają się i ewoluują. Twoi konkurenci już wprowadzają nowe sposoby szybszego wprowadzania innowacji i przyspieszania cykli życia oprogramowania.

Przetwarzanie w chmurze stanowi duże odejście od tradycyjnego sposobu, w jaki firmy myślą o zasobach IT. Zlecając znaczną część swojej infrastruktury i wymagania operacyjne dostawcy usług w chmurze, zmniejszasz koszty ogólne i pozwalasz swojemu zespołowi skupić się na dostarczaniu lepszego oprogramowania użytkownikom.

Oto sześć typowych powodów, dla których organizacje sięgają po usługi przetwarzania w chmurze:

  • Poprawa przystępności cenowej. Dostawcy usług w chmurze pozwalają wybrać tylko te usługi, które są potrzebne, gdy są one potrzebne. Wyobraź sobie, że możesz uzyskać dostęp do telewizji kablowej, ale płacisz tylko za oglądane kanały. Spodoba ci się to, prawda? Większość członków zespołu DevOps by to zrobiła! Dostarczają to dostawcy usług w chmurze, zapewniając jednocześnie najnowocześniejszy sprzęt komputerowy umieszczony w fizycznie bezpiecznych centrach danych. Automatyzacja wdrożeń. Zmiany w systemie - wdrożenia - są najczęstszymi przyczynami awarii lub zakłóceń usług. Dostawcy usług w chmurze sprawiają, że wydawanie kodu jest zautomatyzowanym, powtarzalnym procesem, co znacznie zmniejsza prawdopodobieństwo popełnienia błędów w wydaniach ręcznych i wprowadzaniu błędów. Zautomatyzowane wdrożenia umożliwiają także programistom wydanie własnego kodu. W końcu zautomatyzowane wdrożenia upraszczają ten proces, jednocześnie redukując przestoje w zakładzie i reakcyjne segregowanie w produkcji. Przyspieszenie dostawy. Chmura zmniejsza tarcie na niemal każdym etapie cyklu życia oprogramowania. Chociaż konfiguracja jest wymagana, często zajmuje nie więcej niż dwukrotność czasu wymaganego do ręcznego wykonania procesu, a usługę lub proces trzeba skonfigurować tylko raz. Przyspieszona dostawa zapewnia dużą elastyczność. Zwiększone bezpieczeństwo. Dostawcy usług w chmurze włączają zabezpieczenia do swojej oferty. Microsoft Azure, Amazon Web Services (AWS) i Google Cloud Platform (GCP) spełniają różne standardy zgodności i zapewniają zasady, usługi i mechanizmy kontrolne, które pomogą Ci zwiększyć bezpieczeństwo systemu. Ponadto, jeśli korzystasz z narzędzia potoku wdrażania w chmurze, możesz dodać kontrole bezpieczeństwa przed wydaniem nowego kodu do środowiska, zmniejszając w ten sposób ryzyko luk w zabezpieczeniach. Malejąca awaria. Dzięki potokom budowania i wydawania w chmurze zespół jest w stanie tworzyć automatyczne testy w celu potwierdzenia funkcjonalności, jakości kodu, bezpieczeństwa i zgodności każdego kodu wprowadzonego do systemu. Ta funkcja zmniejsza prawdopodobieństwo błędów, a jednocześnie zmniejsza ryzyko problematycznych wdrożeń. Budowanie bardziej odpornych i skalowalnych systemów. Chmura umożliwia organizacjom skalowanie, skalowanie i zwiększanie pojemności w ciągu kilku sekund. To elastyczne skalowanie umożliwia zwiększanie zasobów obliczeniowych i pamięci w zależności od potrzeb, bez względu na to, gdzie na świecie użytkownicy będą wchodzić w interakcje z Twoim produktem. Takie podejście pozwala lepiej obsługiwać klientów i efektywniej zarządzać kosztami infrastruktury.

Podejście DevOps polega na stworzeniu metody cyklicznej, w której korzystasz i uczysz się z procesu za każdym razem, gdy go przechodzisz.

  1. BusinessOperations Management Wskazówki dotyczące poprawy wydajności inżynierskiej dzięki DevOps

Emily Freeman

Poprawa wydajności inżynierskiej w ramach procesu DevOps może mieć ogromny wpływ na cały biznes. Usprawnienie cyklu rozwojowego i usunięcie wąskich gardeł przyczyni się do przyspieszenia ogólnej wydajności firmy - ostatecznie zwiększając zyski. A jeśli uważasz, jako inżynier DevOps, że nie powinieneś dbać o wydajność biznesową, to się mylisz.

Według DevOps Research and Assessment (DORA), wysoko wydajne zespoły DevOps konsekwentnie wyprzedzają swoich konkurentów w czterech kluczowych obszarach:

  • Częstotliwość wdrażania: termin ten określa, jak często inżynierowie mogą wdrażać kod. Poprawa wydajności jest zgodna z wdrażaniem wielu razy dziennie zgodnie z potrzebami. Czas realizacji: czas realizacji to czas, jaki zajmuje przejście od zatwierdzenia nowego kodu do uruchomienia tego kodu w środowisku produkcyjnym. Według DORA najlepsi wykonawcy mają czas realizacji poniżej godziny, podczas gdy przeciętni wykonawcy potrzebują nawet miesiąca. MTTR (Mean Time to Recovery): MTTR odnosi się do tego, ile czasu zajmuje przywrócenie usługi po incydencie lub awarii. Idealnie chcesz dążyć do niecałej godziny. Awaria kosztuje poważne pieniądze, szczególnie gdy wpływa na centra zysków aplikacji. Długie przestoje niszczą zaufanie, zmniejszają morale i pociągają za sobą dodatkowe wyzwania organizacyjne. Błąd zmiany: termin ten odnosi się do częstotliwości, z jaką zmiany w systemie negatywnie wpływają na wydajność. Mimo, że nigdy nie osiągnie zmianą awaryjność zero procent, można absolutnie zbliżać do zera poprzez zwiększenie zautomatyzowanych testów i opierając się na rurociągu rozmieszczania z ciągłymi kontrolami integracyjnych i bram - z których wszystkie zapewnienia jakości.

Eliminacja perfekcji jako miara sukcesu DevOps

DevOps opiera się na mantrze „Gotowe jest lepsze niż doskonałe”. Wydaje się, że jest to jeden z tych niemożliwych do przypisania cytatów, ale mimo to słowa mówią prawdę. Próba osiągnięcia doskonałości jest wrogiem skuteczności i wydajności.

Większość inżynierów, w tym tych z DevOps, cierpi na jakąś wersję paraliżu analitycznego - dolegliwości umysłowe, które ograniczają twoją produktywność w próbie przeanalizowania twojej pracy i uniknięcia potencjalnego nieszczęścia.

Szkolenie niedoskonałości pracy wymaga uwzględnienia możliwości niepowodzenia i nieuchronności refaktoryzacji. Tworzenie pętli sprzężenia zwrotnego wokół klienta i powrót do różnych etapów potoku są głównymi najemcami DevOps. W DevOps łączysz końce, aby zagiąć linię w okrąg.

Kiedy myślisz iteracyjnie i cyklicznie, wypychanie kodu, który nie jest idealny, wydaje się o wiele mniej przerażające, ponieważ kod nie jest wykuty w kamieniu. Zamiast tego jest w stanie tymczasowym, że inżynierowie DevOps często się poprawiają, gdy zbierasz więcej danych i opinii.

Projektowanie małych zespołów dla DevOps

Prawdopodobnie słyszałeś o zespołach Amazon „dwóch pizz”. Koncepcja ogólnie mówi o znaczeniu małych zespołów. Teraz dokładna liczba osób, które tworzą zespół składający się z dwóch pizz, różni się w zależności od apetytu.

Dobrym pomysłem jest utrzymywanie zespołów poniżej 12 osób. Gdy grupa zbliży się do 9, 10 lub 11 osób, spróbuj podzielić ją na dwie części. Najlepszym miejscem dla grupy jest około 4–6 osób. Twoja dokładna liczba może się różnić w zależności od zaangażowanych osób, ale chodzi o to: Kiedy grupy zbyt duże, komunikacja staje się wyzwaniem, kliki formularz, a cierpi zespołowej.

Oto jeszcze jeden dodatkowy cel przy tworzeniu zespołów DevOps: liczby parzyste. Dobrym pomysłem jest dawanie ludziom „kumpla” w pracy - kogoś, komu mogą zaufać ponad wszystko. W grupach parzystych każdy ma kumpla i nikogo nie pominięto. Możesz sparować równomiernie i zwykle działa dobrze. Tworzenie grup o parzystych liczbach nie zawsze jest możliwe ze względu na liczbę pracowników, ale należy o tym pamiętać.

Wzór na pomiar kanałów komunikacyjnych to n (n - 1) / 2, gdzie n oznacza liczbę osób. Możesz oszacować, jak skomplikowana będzie komunikacja Twojego zespołu, wykonując proste obliczenia. Na przykład formuła dla zespołu składającego się z dwóch pizz składającego się z 10 osób będzie wynosić 10 (10 - 1) / 2 = 45 kanałów komunikacji. Możesz sobie wyobrazić, jak złożone mogą stać się większe zespoły.

Śledzenie pracy DevOps

Jeśli poradzisz sobie z niewielkim kosztem zapisywania tego, co robisz na co dzień, wyniki zapewnią ci wyjątkową wartość. Posiadanie prawdziwych danych na temat tego, jak wykorzystujesz swój czas, pomaga w śledzeniu skuteczności Ciebie i Twojego zespołu. Jak słynie Peter Drucker: „Jeśli nie możesz tego zmierzyć, nie możesz go poprawić”.

Ile dni wychodzisz z pracy, czując się, jakbyś nic nie zrobił? Właśnie miałeś spotkanie po spotkaniu lub przypadkowe przerwy przez cały dzień. Nie jesteś sam. Wielu pracowników ma ten sam problem. Śledzenie postępów i ich wydajności może być trudne. Rozbieżność między naszym poczuciem skuteczności a rzeczywistością naszej skuteczności stanowi niebezpieczne terytorium dla każdego zespołu DevOps.

Spróbuj użyć do tego pióra i papieru zamiast zautomatyzowanego narzędzia. Tak, możesz użyć oprogramowania do śledzenia, jak wykorzystujesz swój czas na komputerze. To może powiedzieć, kiedy czytasz e-mail, gdy jesteś wiotczeniu, a kiedy jesteś kodowania, ale brakuje niuansów i często tęskni lub błędnie klasyfikuje duże ilości czasu.

Po zorientowaniu się, co robisz i kiedy, możesz zacząć identyfikować, do jakich działań należą poszczególne kwadraty macierzy decyzyjnej Eisenhowera. Jakie zajęte prace wykonujesz rutynowo, co nie przynosi żadnej wartości tobie ani organizacji?

Zmniejszenie tarcia w projektach DevOps

Jedną z najlepszych rzeczy, jaką menedżer może zrobić dla zespołu inżynierów DevOps, jest pozostawienie ich w spokoju. Zatrudnij ciekawych inżynierów, którzy potrafią samodzielnie rozwiązywać problemy, a następnie pozwól im wykonywać swoją pracę. Im bardziej możesz zmniejszyć tarcie, które spowalnia ich prace inżynierskie, tym bardziej skuteczny będzie Twój zespół.

Zmniejszenie tarcia obejmuje tarcie występujące między zespołami - zwłaszcza operacje i rozwój. Nie zapomnij o specjalistach, takich jak bezpieczeństwo.

Wyrównanie celów i zachęt zwiększa prędkość. Jeśli wszyscy koncentrują się na osiągnięciu tych samych celów, mogą połączyć się jako zespół i metodycznie dążyć do tych celów.

Humanizacja ostrzega o sukcesie DevOps

Każdy zespół inżynierów ma powiadomienia o działaniach lub zdarzeniach, które nie mają znaczenia. Wszystkie te alerty znieczulają inżynierów na naprawdę ważne alerty. Wielu inżynierów jest uzależnionych od ignorowania powiadomień e-mail z powodu nadmiaru wiadomości.

Alarm zmęczenia cierpi wiele organizacji inżynieryjnych i wiąże się z wysokimi kosztami. Jeśli jesteś codziennie zalewany, wybranie ważnego z morza nieważnego jest niemożliwe. Można nawet powiedzieć, że te wiadomości są pilne, ale nie ważne. . . .

E-mail nie jest idealnym narzędziem do ostrzegania, ponieważ nie jest wrażliwy na czas (wiele osób sprawdza pocztę tylko kilka razy dziennie) i łatwo go zakopać w innych szczegółach.

Stosując to, czego się nauczyłeś o szybkiej iteracji, regularnie ponownie oceniaj progi ostrzegania, aby zapewnić odpowiedni zasięg bez zbyt wielu fałszywych wyników pozytywnych. Określenie, które alerty nie są konieczne, wymaga czasu i pracy. I prawdopodobnie będzie to trochę przerażające, prawda? Usunięcie alertu lub zwiększenie progu zawsze wiąże się z pewnym ryzykiem.

Co jeśli alert jest rzeczywiście ważny? Jeśli tak, to zrozumiesz. Pamiętaj, że nie możesz obawiać się porażki w organizacji DevOps. Musisz go przyjąć, abyś mógł iść naprzód i ciągle się doskonalić. Jeśli pozwalasz, aby strach kierował twoimi decyzjami, stagnujesz - jako inżynier i organizacja.

  1. Zarządzanie BusinessOperations Jak tworzyć zespoły DevOps w swojej organizacji

Emily Freeman

DevOps nie ma idealnej struktury organizacyjnej. Jak wszystko w technice, „właściwa” odpowiedź na temat struktury firmy zależy od twojej wyjątkowej sytuacji: twojego obecnego zespołu, twoich planów rozwoju, wielkości zespołu, dostępnych umiejętności, twojego produktu i tak dalej.

Pierwszą misją powinno być dostosowanie wizji zespołu DevOps. Dopiero po usunięciu nisko wiszącego owocu oczywistego tarcia między ludźmi możesz zacząć przestawiać zespoły. Nawet wtedy pozwól na pewną elastyczność.

Jeśli podchodzisz do reorganizacji z otwartością i elastycznością, wysyłasz wiadomość, że chcesz słuchać i dajesz zespołowi autonomię - podstawową zasadę DevOps.

Być może masz już programistę Python lub Go, który jest pasjonatem i ciekawi zarządzania infrastrukturą i konfiguracją. Być może ta osoba może zmienić rolę w nowej organizacji na bardziej skoncentrowaną na operacjach. Postaw się w bucie tej osoby. Czy nie byłbyś lojalny wobec organizacji, która podjęła na Ciebie ryzyko? Czy nie byłbyś podekscytowany ciężką pracą? I to podniecenie jest zaraźliwe.

Tutaj dowiesz się, jak wyrównać zespoły, które już masz na miejscu, poświęcić zespół na praktyki DevOps i tworzyć zespoły wielofunkcyjne - wszystkie podejścia, z których możesz wybrać ukierunkowanie swoich zespołów na DevOps.

Możesz wybrać jedno podejście i pozwolić mu ewoluować stamtąd. Nie uważaj, że ta decyzja jest trwała i niemożliwa do poruszenia. DevOps koncentruje się na szybkiej iteracji i ciągłym doskonaleniu, i to jest główna zaleta tej metodologii. Ta filozofia dotyczy również zespołów.

Wyrównanie zespołów funkcjonalnych dla DevOps

Dzięki takiemu podejściu tworzysz silną współpracę między tradycyjnymi zespołami programistycznymi i operacyjnymi. Zespoły mają nadal funkcjonalny charakter - jeden koncentruje się na operacjach, a drugi na kodzie. Ale ich zachęty są dostosowane. Będą rosnąć, aby sobie nawzajem ufać i będą pracować, gdy dwa zespoły będą się łączyć.

Dla mniejszych organizacji inżynieryjnych dopasowanie zespołów funkcjonalnych jest dobrym wyborem. Nawet jako pierwszy krok to wyrównanie może wzmocnić pozytywne zmiany, których dokonałeś do tej pory. Zazwyczaj wyrównanie rozpoczyna się od poświęcenia czasu na zbudowanie relacji. Upewnij się, że każda osoba w obu zespołach nie tylko rozumie intelektualnie rolę i ograniczenia drugiego zespołu, ale także wczuwa się w punkty bólu.

W przypadku tego podejścia dobrym pomysłem jest promowanie polityki „Budujesz ją, wspierasz”. Ta zasada oznacza, że ​​wszyscy - zarówno programiści, jak i operatorzy - uczestniczą w rotacji na wezwanie.

Ten udział pozwala programistom zrozumieć frustrację związaną z dzwonieniem w środku nocy i zmaganiem się, podczas gdy mgliste oczy i brak kofeiny w celu usunięcia błędu, który wpływa na klientów. Ludzie z operacji zaczynają też ufać zaangażowaniu deweloperów w ich pracę. Nawet ta niewielka zmiana buduje niezwykłe zaufanie.

Uwaga: jeśli programiści ciężko walczą z dyżurami, w Twojej organizacji występuje większy problem. Odpowiedź ta nie jest niczym niezwykłym, ponieważ dyżury są bardzo różne od ich codziennych obowiązków. Odepchnięcie często pochodzi z miejsca dyskomfortu i strachu. Możesz pomóc złagodzić tę reakcję, zwracając uwagę na fakt, że Twoi programiści mogą nie wiedzieć, co zrobić za pierwszym razem, gdy są na dyżurze.

Mogą nie być zaznajomieni z infrastrukturą i jest w porządku. Zachęć ich do eskalacji incydentu i wezwania kogoś z większym doświadczeniem. Na koniec utwórz element Runbook ze wspólnymi alertami i działaniami, które należy podjąć. Zapewnienie tego zasobu pomoże uspokoić strach, dopóki nie zaczną się rozmyślać.

Inną taktyką, która pomaga pobudzić współpracę do stworzenia bardziej spójnego zespołu DevOps, jest wprowadzenie dnia shadowingu, w którym każdy zespół „handluje” kolegą. Handlowany po prostu rzuca cień na kogoś innego w zespole, siada przy biurku (lub w okolicy) i pomaga w codziennych obowiązkach. Mogą pomagać w pracy, omawiać problemy jako zespół (programowanie w parach) i dowiedzieć się więcej o systemie z innego punktu widzenia. Ten styl nauczania nie jest nakazowy.

Zamiast tego wzbudza ciekawość i buduje zaufanie. Koledzy powinni swobodnie zadawać pytania - nawet „głupie” - i swobodnie się uczyć. Nie ma żadnych oczekiwań dotyczących wydajności. Czas należy poświęcić na wzajemne poznanie się i docenienie pracy. Każda wydajność produkcyjna jest bonusem!

W tym podejściu do wyrównania oba zespoły muszą być absolutnie zaangażowane w procesy planowania, architektury i rozwoju. Muszą dzielić się obowiązkami i odpowiedzialnością przez cały cykl rozwojowy.

Dedykowanie zespołu DevOps

Dedykowany zespół DevOps jest bardziej ewolucją Administratora Sys niż prawdziwym zespołem DevOps. Jest to zespół operacyjny z mieszanką zestawów umiejętności. Być może niektórzy inżynierowie są zaznajomieni z zarządzaniem konfiguracją, inni IaC (infrastruktura jako kod), a być może inni są ekspertami w zakresie kontenerów lub infrastruktury natywnej w chmurze lub CI / CD (ciągła integracja i ciągłe dostarczanie / rozwój).

Jeśli uważasz, że umieszczenie grupy ludzi w oficjalnym zespole wystarczy, aby rozbić silosy, jesteś w błędzie. Ludzie są bardziej złożeni niż arkusze kalkulacyjne. Hierarchia nic nie znaczy, jeśli twoje silosy weszły w fazę, w której są niezdrowe i plemienne. W toksycznych kulturach może pojawić się styl przywództwa siłaczy, po którym prawie zawsze podążają ludzie. Jeśli widzisz to we własnym zespole, masz do zrobienia.

Chociaż każde podejście może działać w Twoim zespole, to podejście dedykowane zespołowi jest tym, które powinieneś przemyśleć najbardziej. Największą wadą oddanego zespołu DevOps jest to, że z łatwością staje się on kontynuacją tradycyjnych zespołów inżynieryjnych, nie uznając potrzeby wyrównywania zespołów, zmniejszania silosów i usuwania tarcia. Ryzyko związane z utrzymaniem tarcia (lub wytworzeniem większej ilości) jest wysokie w tym podejściu. Postępuj ostrożnie, aby upewnić się, że wybierasz tę organizację zespołu z konkretnego powodu.

Zaletą tego podejścia DevOps jest posiadanie dedykowanego zespołu zajmującego się poważnymi zmianami lub dostosowaniami infrastruktury. Jeśli masz problemy z operacjami, które spowalniają wdrażanie lub powodują problemy z niezawodnością witryny, może to być dobre podejście - nawet tymczasowe.

Dedykowany zespół, jeśli planujesz przenieść starszą aplikację do chmury. Ale zamiast nazywać ten zespół zespołem DevOps, możesz spróbować nazwać go zespołem ds. Automatyzacji.

Ta dedykowana grupa inżynierów może całkowicie skoncentrować się na zapewnieniu prawidłowej infrastruktury i narzędzi automatyzacji. Następnie możesz mieć pewność, że Twoja aplikacja wyląduje w chmurze bez większych zakłóceń. Takie podejście jest jednak tymczasowe. Jeśli utrzymujesz zespół zbyt długo w izolacji, ryzykujesz zejście po śliskim zboczu od szybkiego wzrostu do wbudowanego silosu.

Tworzenie wielofunkcyjnych zespołów produktowych dla DevOps

Zespół wielofunkcyjny to zespół skupiony wokół jednego produktu. Zamiast mieć oddzielne zespoły ds. Programowania, interfejsu użytkownika i doświadczenia użytkownika (UI / UX), zapewniania jakości (QA) i operacji, łączysz osoby z każdego z tych zespołów.

Zespół wielofunkcyjny działa najlepiej w średnich i dużych organizacjach. Potrzebujesz wystarczającej liczby programistów i pracowników do obsadzenia stanowisk każdego zespołu produktu. Każdy zespół wielofunkcyjny wygląda nieco inaczej.

Dobrze jest mieć co najmniej jedną osobę operacyjną na zespół. Nie proś osoby obsługującej o podział obowiązków między dwa zespoły. Ten scenariusz jest dla nich niesprawiedliwy i szybko spowoduje tarcie między dwoma zespołami produktów. Daj swoim inżynierom przywilej bycia w stanie skoncentrować się i zagłębić w swoją pracę.

Jeśli Twoja organizacja jest wciąż niewielka lub w fazie początkowej, możesz myśleć o całej organizacji inżynierskiej jako o zespole wielofunkcyjnym. Zachowaj mały i skupiony. Kiedy zaczniesz zbliżać się do 10–12 osób, zacznij myśleć o tym, jak możesz zreorganizować inżynierów.

Poniższy obraz pokazuje, jak mogłyby wyglądać Twoje zespoły wielofunkcyjne. Należy jednak pamiętać, że ich skład różni się w zależności od zespołu i organizacji. Niektóre produkty koncentrują się na projektowaniu, co oznacza, że ​​w każdym zespole może znajdować się wielu projektantów. Inne produkty to produkty techniczne przeznaczone dla inżynierów, którzy nie dbają o estetykę. Zespoły zajmujące się tego rodzaju produktem mogą mieć jednego projektanta - lub nie mieć go wcale.

Zespół produktowy DevOps

Jeśli Twoja organizacja jest wystarczająco duża, z pewnością możesz utworzyć wiele zespołów, używając różnych pomysłów i podejść DevOps. Pamiętaj, że Twoja organizacja jest wyjątkowa. Czuć się upoważnionym do podejmowania decyzji na podstawie bieżących okoliczności i dostosowywania się od tego momentu. Oto niektóre możliwe kombinacje różnych typów zespołów produktowych.

  • Starszy zespół produktu: Project Manager (PM), Front-end Developer, Back-end Developer, Back-end Developer, Site Reliability Engineer (SRE), Automation Engineer, QA Tester Zespół ds. Transformacji w chmurze: SRE, SRE, inżynier operacyjny, inżynier automatyki, programista back-end Zespół MVP: PM, projektant, inżynier UX, programista front-end, programista backend, inżynier operacyjny

Minusem zespołu ds. Produktów wielofunkcyjnych jest to, że inżynierowie tracą koleżeństwo inżynierów z tymi samymi umiejętnościami i pasjami. Ważnym aspektem satysfakcji z pracy jest posiadanie grupy podobnie myślących osób, z którymi możesz się spotkać i od której możesz się uczyć. Sprawdź rozwiązanie tego problemu poniżej.

Jak pokazano poniżej, możesz dać swoim inżynierom poświęcony czas na pracę z plemionami. Możesz zrobić coś tak hojnego, jak płacenie za lunch raz w tygodniu, aby mogli się spotkać i porozmawiać. Lub możesz zapewnić 10–20 procent czasu pracy, aby mogli oni pracować nad projektami jako plemię. Tak czy inaczej, potrzebujesz inżynierów, aby zachować ostrość.

Plemiona dzielą się wiedzą branżową, przekazują solidne informacje zwrotne i wspierają rozwój kariery. Zapewnij swoim inżynierom czas na naukę od ludzi, z którymi dzielą się wykształceniem, doświadczeniem i celami. Tym razem zapewnia bezpieczne miejsce, w którym mogą się zrelaksować i poczuć jak w domu.

Plemiona DevOps

Żadna ilość idealnego finansowania nie pokona niedociągnięć złej kultury organizacyjnej. Ale jeśli do tej pory zwróciłeś uwagę i poczyniłeś odpowiednie kroki, następnym krokiem jest utworzenie zespołów, które wzmacniają kulturowe ideały, które już wprowadziłeś.

  1. Zarządzanie BusinessOperations Przenoszenie procesów DevOps: od linii do obwodu

Emily Freeman

Podejście DevOps obejmuje cykl, a nie linię. Pozwala na ciągłą integrację i ciągłą dostawę, zbierając spójne informacje zwrotne w trakcie całego procesu. Metodologia DevOps jest tylko jednym przykładem ewolucji procesów.

Procesy rozwojowe zmieniły się radykalnie w ciągu ostatnich kilku dekad i nie bez powodu. W latach 60. Margaret Hamilton kierowała zespołem inżynierów, który opracował oprogramowanie dla misji Apollo 11. Nie iteracyjnie wypuszczasz ludzi w kosmos - przynajmniej nie w latach sześćdziesiątych. To nie jest dziedzina oprogramowania, w której „szybkie awarie” wydają się szczególnie dobrym podejściem. Życie jest na linii, nie wspominając o milionach dolarów.

Hamilton i jej rówieśnicy musieli opracować oprogramowanie przy użyciu metodologii kaskadowej. Poniższy obraz pokazuje przykład procesu rozwoju wodospadu (zachodzącego w linii prostej).

proces wodospadu

Poniższy obraz dodaje fazy. Zwróć uwagę, jak strzałki przesuwają się w jednym kierunku. Pokazują wyraźny początek i wyraźny koniec. Kiedy skończysz, skończysz. Dobrze?

Nie. O ile wiele osób chciałoby na zawsze odejść od części swoich baz kodowych (lub zabić ich ogniem), zwykle nie mają tego przywileju.

Oprogramowanie opracowane przez Hamilton i jej zespół okazało się ogromnym sukcesem (oszałamiające jest myślenie, że opracowano je w Zgromadzeniu z zerową liczbą pomocników, takich jak komunikaty o błędach). Nie wszystkie projekty zakończyły się jednakowym sukcesem.

Później, gdy wodospad zawiódł, Agile się udało. (DevOps narodził się z ruchu Agile.) Agile stara się wziąć prostą linię wodospadu i zgiąć go w okrąg, tworząc niekończący się obwód, przez który zespół inżynierów może iteracyjnie i ciągle ulepszać.

rurociąg rozwoju wodospadu

Poniższy obraz przedstawia sposób myślenia o cyklu życia rozwoju cyklicznego.

Obwód DevOps

Często na różne pętle zalecane przez różne organizacje mają wpływ produkty sprzedawane przez sprzedawców. Na przykład, jeśli sprzedawca sprzedaje oprogramowanie i oprzyrządowanie infrastrukturalne, prawdopodobnie podkreśla tę część cyklu życia programowania, być może skupiając się najbardziej na wdrażaniu, monitorowaniu i wsparciu oprogramowania.

Tutaj nie ma nic na sprzedaż. Skoncentrowane tutaj etapy są najbardziej krytyczne dla programistów, podobnie jak te, z którymi ludzie borykają się najwięcej, ucząc się lepszego zarządzania tworzeniem oprogramowania i wdrażania DevOps.

Pięć etapów cyklu rozwoju oprogramowania to

  • Planowanie: Faza planowania procesu tworzenia DevOps jest prawdopodobnie najbardziej kluczowa dla Twojej misji DevOps. Ustawia cię na sukces lub porażkę na drodze. To także najbardziej urodzajny czas, by zbliżyć wszystkich do siebie. Dla wszystkich oznacza to interesariuszy biznesowych, sprzedaż i marketing, inżynierię, produkt i inne. Projektowanie: W większości firm faza projektowania łączy się z fazą kodowania. Ta potworna mieszanka projektowania i kodu nie pozwala oddzielić strategii architektonicznej od implementacji. Jeśli jednak pozostawisz takie rzeczy, jak projektowanie baz danych, logistyka API i kluczowe opcje infrastruktury na końcu potoku programowania - lub, co gorsza, indywidualnym programistom pracującym nad oddzielnymi funkcjami - szybko zauważysz, że twoja baza kodu jest tak wyciszona jako zespół inżynierów. Kodowanie: Rzeczywisty rozwój funkcji jest obliczem procesu DevOps i zyskuje całą chwałę. Jest to jednak jeden z najmniej ważnych kroków w cyklu rozwojowym. Pod wieloma względami jest to po prostu wykonanie poprzednich obszarów rurociągu. Jeśli dobrze to zrobisz, kodowanie powinno być stosunkowo prostym i bezpośrednim procesem.

Teraz, jeśli jesteś programistą i po prostu wciągnąłeś powietrze w ostatnie zdanie, ponieważ masz do czynienia z setkami przypadkowych i trudnych do rozwiązania błędów, łatwo jest zrozumieć, jak się czujesz. Kodowanie jest trudne. Nic w tworzeniu oprogramowania nie jest łatwe. Ale opanowując planowanie, projektowanie i architekturę (i oddzielając je od rzeczywistej implementacji kodu), zapewniasz, że najtrudniejsze decyzje dotyczące rozwoju oprogramowania są oderwane.

  • Testowanie: Testowanie to obszar, w którym inżynierowie ze wszystkich obszarów wiedzy specjalistycznej mogą nurkować i angażować się, zapewniając wyjątkową okazję do zapoznania się z testowaniem, łatwością konserwacji i bezpieczeństwem. Istnieje wiele Sześć etapów rozwoju oprogramowania różnych rodzajów testów, aby upewnić się, że oprogramowanie działa zgodnie z oczekiwaniami. Wdrażanie: Wdrażanie jest etapem, który jest prawdopodobnie najbardziej związany z operacjami. Tradycyjnie zespół operacyjny pobierałby kod opracowany przez programistów i przetestowany przez zespół zapewniania jakości (QA), a następnie udostępniał go klientom - czyniąc ich jedynymi odpowiedzialnymi za proces wydania. DevOps wywarł ogromny wpływ na tym etapie procesu rozwoju. Wdrożenie jest także jednym z obszarów, z którego można znaleźć najwięcej narzędzi do automatyzacji. Z punktu widzenia DevOps Twoim priorytetem jest uproszczenie procesu wdrażania, aby każdy inżynier w zespole mógł wdrożyć swój kod. Nie oznacza to, że operacje nie mają unikalnej wiedzy lub że zespoły operacyjne mogą zostać rozwiązane.

Ludzie operacji zawsze będą mieli unikalną wiedzę na temat infrastruktury, równoważenia obciążenia i tym podobnych. W rzeczywistości usunięcie ręcznego zadania wdrażania oprogramowania z zespołu operacyjnego pozwoli im zaoszczędzić czas i pieniądze w innym miejscu. Będą mieli czas na poprawę niezawodności i łatwości konserwacji aplikacji.

Najważniejszym aspektem cyklu życia dostawy w ramach DevOps jest to, że jest to prawdziwa pętla. Gdy dojdziesz do końca, wróć od razu do początku. Ponadto, jeśli w dowolnym momencie otrzymujesz informacje zwrotne od klientów, wróć do kolejnej fazy (lub etapu planowania), abyś mógł opracować oprogramowanie w sposób, który najlepiej służy Twoim klientom.

Pierwszą częścią budowy rurociągu jest traktowanie go liniowo. Po drodze budujesz linię prostą z ustawionymi etapami i punktami kontrolnymi. W tych ramach możesz postrzegać cykl życia oprogramowania jako coś, co zaczynasz i co kończysz. Miłośnicy wodospadów byliby dumni.

Ale rzeczywistość nie pozwala ci pracować w linii prostej. Nie możesz po prostu zacząć tworzyć kodu, kończyć i odejść. Zamiast tego musisz oprzeć się na podstawowym oprogramowaniu, które wydałeś w pierwszej pętli iteracyjnej, i ulepszyć je w drugim cyklu. I tak dalej i tak dalej. Proces nigdy się nie kończy i nigdy nie przestaniesz się poprawiać.

Proces DevOps pomaga połączyć początek i koniec tego prostego potoku, abyś zaczął rozumieć go jako cały obwód lub pętlę, aby stale się rozwijać i ulepszać.

  1. BusinessOperations Management Techniki wywiadu dla budowania zespołu DevOps: Zdobywanie odpowiednich umiejętności technicznych

Emily Freeman

Ocena kandydatów na odpowiedni zestaw umiejętności może być trudna przy zatrudnianiu na stanowiska DevOps… ale nie jest to niemożliwe. Przy odrobinie kreatywności i chęci wyjścia poza pole, możesz skorzystać z technik rozmowy kwalifikacyjnej, aby znaleźć kandydatów z odpowiednimi umiejętnościami technicznymi do swoich inicjatyw DevOps.

Wywiad DevOps

Wiek rozwartych zagadek i wywołujących pot wywiady z tablicami zanika - i to nie bez powodu. Jeśli inżynier przeprowadzi rozmowę na tablicy, która bardziej dba o oszukanie kandydata niż rozmowę o rozmowie technicznej, nigdzie się nie wybierzesz.

Wywiady z Whiteboardingiem ostatnio pochłonęły wiele, ponieważ grupy osób niedostatecznie reprezentowanych i marginalizowanych - w tym kobiety i osoby kolorowe - były w niekorzystnej sytuacji. W tym wieku absolutnie niezbędne jest, aby firmy technologiczne zatrudniały różnorodne siły robocze, więc taka sytuacja jest nie do przyjęcia. Musisz jednak jakoś ocenić zdolności techniczne danej osoby.

Jaka jest odpowiedź? Dobra wiadomość jest taka, że ​​masz opcje. (Zła wiadomość to… masz opcje.)

Sposób zatrudnienia określi, kim jesteś.

Ponownie odwiedź wywiad na tablicy dla kandydatów DevOps

Wywiad na tablicy nigdy nie miał być tym, czym się stał. W jednym z wywiadów na tablicy kandydat DevOps otrzymał program komputerowy wydrukowany na ośmiu arkuszach papieru. Instrukcje? „Debuguj program.” Umm. . . przepraszam?

Wywiad na tablicy stał się sytuacją, w której dajesz kandydatowi pozornie niemożliwy problem, wysyłasz go do tablicy ze znacznikiem i obserwujesz, jak obficie się pocą, podczas gdy cztery lub pięć osób obserwuje swoją panikę. Tego rodzaju rozmowa kwalifikacyjna nie zapewnia wysokiej jakości informacji na temat tego, czy pracodawca lub osoba przeprowadzająca rozmowę kwalifikacyjną jest odpowiednia dla drugiej strony.

Chociaż inni wzywają do wyeliminowania wywiadu na tablicy, oto bardziej szczegółowa sugestia: zmień go, aby pasował do twoich potrzeb DevOps. Spraw, aby dyskusja między dwojgiem ludzi na temat fragmentu kodu lub konkretnego problemu. Nie rób z tego problemu czegoś szalonego, na przykład równoważenia drzewa wyszukiwania binarnego. O ile praca, z którą rozmawiasz, to dosłownie pisanie kodu w asemblerze, nie musisz oceniać zdolności kandydata do pisania asemblera.

Bądź świadomy pracy DevOps, którą chcesz obsadzić, wymaganych zestawów umiejętności i najlepszego sposobu mierzenia tych umiejętności u kandydata. Poproś jednego inżyniera z twojego zespołu, aby usiadł z kandydatem i porozmawiał o problemie. Jak rozpoczniesz rozmowę? Jakie problemy napotykasz po drodze? Jak oboje dostosowalibyście swoje rozwiązania do stojących przed nimi wyzwań?

To podejście konwersacyjne pozwala kandydatom DevOps osiągnąć dwie rzeczy:

  • Zmniejsza panikę. Większość ludzi nie myśli dobrze pod presją. Ponadto nie wykonujesz swojej pracy codziennie, gdy ktoś patrzy ci przez ramię, krytykując każdą literówkę lub błąd. Natychmiast rzucisz tę pracę. Więc nie zmuszaj ludzi do przeprowadzania wywiadów w ten sposób. Zamiast tego daj swoim kandydatom szansę pochwalenia się tym, co potrafią. Zyskasz wgląd w to, jak myślą i komunikują się. Naśladuje prawdziwą pracę. Wywiad konwersacyjny daje wyobrażenie o tym, jak by to było pracować z tą osobą. Nie rozwiązujesz trudnych problemów w pracy, oglądając się nawzajem. (Przynajmniej nie powinieneś. Naprawdę. To nie jest zbyt kolaboracyjne lub DevOps-y, pozostawiając kolegom cierpienia w ich silosie.) Zamiast tego pracujesz razem, wymieniasz pomysły, zastanawiasz się, popełniasz błędy, odzyskujesz i znajdujesz rozwiązanie - razem.

Najlepsze wywiady na tablicy są oparte na współpracy, komunikacji i koncentrują się wokół ciekawości - wszystkich rzeczy, które praktykujący uwielbiają w DevOps.

Oferuj testy domowe kandydatom DevOps

Alternatywą dla bardziej tradycyjnego wywiadu na tablicy jest test „od domu”. Ten rodzaj testu jest szczególnie przyjazny dla osób, które mają jakikolwiek niepokój lub niewidoczną niepełnosprawność, która wpływa na ich zdolność do udziału w wywiadzie na tablicy. Ten styl wywiadu jest również przyjazny dla inżynierów, którzy intensywnie zmagają się z zespołem oszusta.

Zespół Imposter opisuje osoby osiągające wysokie wyniki, które walczą o internalizację swoich sukcesów i doświadczają ciągłego poczucia bycia narażonym na oszustwo.

Test „od domu” składa się z pewnego rodzaju problemu, który kandydat DevOps może rozwiązać w domu we własnym czasie. Testy „od domu” są często konfigurowane jako zestaw testów, dla którego kandydat musi napisać kod, aby testy zostały zaliczone.

Alternatywnie, problemem może być coś stosunkowo małego, na przykład: „Utwórz program w [wybranym języku], który pobiera dane i odwraca znaki.” Opcje są nieograniczone i możesz dostosować test do stosu technologii, uważasz za stosowne.

Możesz nawet poprosić kandydatów DevOps o wdrożenie ich aplikacji. Upewnij się, że zezwalasz kandydatom na korzystanie z narzędzi typu open source lub zapewniasz im niezbędne subskrypcje do korzystania z określonych technologii.

Główną wadą testów na miejscu jest to, że prosi się ludzi o poświęcenie czasu wieczorem lub w weekendy na wykonanie pracy, która jest zasadniczo bezpłatna. Nawet jeśli zapłacisz im za pracę w teście przeprowadzki do domu, ten styl rozmowy może niesprawiedliwie wpłynąć na kandydata DevOps, który ma inne obowiązki poza pracą, w tym opiekę nad dziećmi, partnerem lub chorymi rodzicami.

Nie każdy wielki inżynier ma nieograniczony czas na zaangażowanie w swoje rzemiosło. Ale jeśli ograniczysz pulę kandydatów do DevOps do osób, które mogą sobie pozwolić na poświęcenie 5–10 godzin na test „od domu”, szybko zauważysz, że Twój zespół staje się jednorodny i zastój.

Przejrzyj kod z kandydatami DevOps

Jedną z technik wywiadu, która może naprawdę powiedzieć, jest usiąść z inżynierem lub grupą inżynierów, aby wspólnie rozwiązać prawdziwe błędy w prawdziwym kodzie. Możesz zastosować kilka podejść do wywiadu z kodem w czasie rzeczywistym.

Możesz naśladować test „na wynos” i dać kandydatowi godzinę na utworzenie programu lub napisanie funkcji, aby zaliczyć serię testów. Możesz także przeprowadzić wywiad jak przegląd kodu, w którym wyciągasz rzeczywisty PR i zagłębiasz się w to, co robi kod, a także w to, co można poprawić.

Pod wieloma względami charakter programowania kodu w przeglądzie kodu łączy najlepsze części zarówno wywiadu na tablicy, jak i testu przeprowadzonego z domu - ale bez pewnych głównych wad.

Programowanie w parach to praktyka inżynierska, w której dwóch inżynierów siada i wspólnie rozwiązuje problem. Zazwyczaj jedna osoba „kieruje” posiadaniem klawiatury, ale wspólnie decydują, które podejście jest najlepsze, jaki kod dodać i co zabrać.

Jeśli pozycja DevOps obejmuje rolę skoncentrowaną na operacjach, zastosowanie tego podejścia do kodowania w czasie rzeczywistym jest jeszcze lepsze. Chociaż wielu pracowników operacyjnych uczy się implementować infrastrukturę jako kod lub zarządzać konfiguracjami, nie mają takiego samego doświadczenia jak programiści.

Sprawdzanie, co coś robi i jak może działać, jest fantastycznym sposobem na potwierdzenie, że kandydat ma doświadczenie na liście narzędzi i technologii w swoim CV, a także upewnienie się, że kandydat może komunikować się z zespołem.

Budowanie zespołu DevOps to indywidualne dążenie. Twój zespół DevOps nie musi odpowiadać innym, których widziałeś. Oceń swoje cele i wybierz odpowiedniego kandydata do każdego zadania DevOps.

  1. BusinessOperations Management Ciągła integracja i ciągła dostawa: wdrażanie i korzystanie z CI / CD

Emily Freeman

Rozwój kultury DevOps zmienił sposób, w jaki programiści budują i dostarczają oprogramowanie. Zanim pojawił się sposób myślenia Agile, zespołom programistycznym przypisano funkcję, zbudowano ją, a następnie zapomniała o niej. Przekazali kod zespołowi kontroli jakości, który następnie odrzucił go z powodu błędów lub przeniósł go do zespołu operacyjnego. Operacje były odpowiedzialne za wdrożenie i utrzymanie kodu w środowisku produkcyjnym.

Ten proces był co najmniej niezdarny i spowodował sporo konfliktów. Ponieważ zespoły istniały w silosach, mieli niewielki lub żaden wgląd w to, jak działały inne zespoły, w tym ich procesy i motywacje.

CI / CD, która oznacza ciągłą integrację i ciągłą dostawę (lub wdrożenie), ma na celu zburzenie murów, które wcześniej istniały między zespołami i zamiast tego ustanowienie płynniejszego procesu rozwoju.

Korzyści z ciągłej integracji i ciągłej dostawy

CI / CD oferuje wiele korzyści. Jednak proces budowy potoku CI / CD może być czasochłonny, a ponadto wymaga zaangażowania zespołu i kierownictwa wykonawczego.

Niektóre zalety CI / CD obejmują:

  • Dokładne zautomatyzowane testowanie: nawet najprostsza implementacja CI / CD wymaga solidnego zestawu testów, który można uruchomić z kodem za każdym razem, gdy programista wprowadza zmiany w głównej gałęzi. Przyspieszona pętla sprzężenia zwrotnego: programiści otrzymują natychmiastowe sprzężenie zwrotne za pomocą CI / CD. Automatyczne testy i integracje zdarzeń zakończą się niepowodzeniem przed scaleniem nowego kodu. Oznacza to, że programiści mogą skrócić cykl programowania i szybciej wdrażać funkcje. Zmniejszony konflikt interpersonalny: automatyzacja procesów i zmniejszenie tarcia między zespołami zachęca do bardziej wspólnego środowiska pracy, w którym programiści robią to, co robią najlepiej: rozwiązania inżynierskie. Niezawodny proces wdrażania: każdy, kto wycofał wdrożenie w piątek po południu, może powiedzieć, jak ważne jest, aby wdrożenia przebiegały bezproblemowo. Ciągła integracja zapewnia, że ​​kod jest dobrze przetestowany i działa niezawodnie w środowisku produkcyjnym, zanim dotrze do użytkownika końcowego.

Wdrażanie ciągłej integracji i ciągłej dostawy

CI / CD jest zakorzeniony w zwinnych metodologiach. Powinieneś pomyśleć o implementacji CI / CD jako procesu iteracyjnego. Każdy zespół może skorzystać z wersji CI / CD, ale dostosowanie ogólnej filozofii będzie w dużym stopniu zależeć od aktualnego stosu technologii (języków, ram, narzędzi i technologii) i kultury.

Ciągła integracja

Zespoły, które ćwiczą ciągłą integrację (CI), łączą zmiany kodu z powrotem do gałęzi głównej lub programistycznej tak często, jak to możliwe. CI zwykle używa narzędzia integracyjnego do sprawdzania poprawności kompilacji i uruchamiania automatycznych testów nowego kodu.

Proces CI pozwala programistom w zespole pracować na tym samym obszarze bazy kodu, jednocześnie minimalizując zmiany i unikając masowych konfliktów scalania.

Aby wdrożyć ciągłą integrację:

  • Napisz automatyczne testy dla każdej funkcji. Zapobiega to wdrażaniu błędów w środowisku produkcyjnym. Skonfiguruj serwer CI. Serwer monitoruje główne repozytorium pod kątem zmian i uruchamia automatyczne testy po wypchnięciu nowych zatwierdzeń. Twój serwer CI powinien być w stanie szybko uruchamiać testy. Zaktualizuj nawyki programistów. Programiści muszą często łączyć zmiany z powrotem do głównej bazy kodu. Połączenie to powinno odbywać się co najmniej raz dziennie.

Ciągła dostawa

Ciągłe dostarczanie jest krokiem w górę od CI, ponieważ programiści traktują każdą zmianę w kodzie jako dostarczalną. Jednak w przeciwieństwie do ciągłego wdrażania wydanie musi zostać uruchomione przez człowieka, a zmiana może nie zostać natychmiast dostarczona użytkownikowi końcowemu.

Zamiast tego wdrożenia są zautomatyzowane, a programiści mogą scalić i wdrożyć swój kod za pomocą jednego przycisku. Wykonując małe, często dostarczane iteracje, zespół zapewnia, że ​​mogą łatwo rozwiązywać problemy.

Po przejściu kodu i automatycznym testowaniu zespół może wdrożyć kod w dowolnym określonym przez siebie środowisku, takim jak kontrola jakości lub przemieszczanie. Często peer ręcznie sprawdza kod, zanim inżynier połączy go z gałęzią wersji produkcyjnej.

Aby wdrożyć ciągłą dostawę:

  • Mają mocne podstawy w CI. Zautomatyzowany pakiet testowy powinien rosnąć wraz z rozwojem funkcji i należy dodawać testy za każdym razem, gdy zgłaszany jest błąd. Zautomatyzuj wydania. Człowiek nadal inicjuje wdrożenia, ale wydanie powinno być procesem jednoetapowym - jednym kliknięciem przycisku. Rozważ flagi funkcji. Flagi funkcji ukrywają niekompletne funkcje przed konkretnymi użytkownikami, zapewniając, że Twoi rówieśnicy i klienci widzą tylko pożądaną funkcjonalność.

Ciągłe wdrażanie

Ciągłe wdrażanie zapewnia ciągłą dostawę nawet o krok dalej niż ciągłe dostarczanie. Każda zmiana, która przechodzi przez cały proces wydania produkcyjnego, jest wdrażana. Zgadza się: kod jest wprowadzany bezpośrednio do produkcji.

Ciągłe wdrażanie eliminuje interwencję człowieka w procesie wdrażania i wymaga całkowicie zautomatyzowanego zestawu testów.

Aby wdrożyć ciągłe wdrażanie:

  • Utrzymaj silną kulturę testowania. Powinieneś rozważyć testowanie jako kluczową część procesu rozwoju. Dokumentuj nowe funkcje. Automatyczne wersje nie powinny wyprzedzać dokumentacji API. Koordynuj z innymi działami. Zaangażuj takie działy jak marketing i sukces klienta, aby zapewnić płynny proces wdrażania.
  1. BusinessOperations Management Top 10 pułapek DevOps: dlaczego Twoje projekty oprogramowania zawodzą

Emily Freeman

Wspieranie kultury DevOps i wybieranie narzędzi wspierających podejście DevOps przyniesie korzyści Twojej organizacji. Podejście DevOps ożywia zespół inżynierów i skupia rozwój produktu na kliencie.

Jednak za każdym razem, gdy próbujesz dokonać ogromnej zmiany w prądzie bieżącym swojej organizacji, napotykasz wyzwania i musisz radzić sobie z niepowodzeniami. Po przejściu na DevOps odkryjesz wyjątkowe progi zwalniające dla siebie i swojego zespołu.

Chociaż nie możesz przewidzieć wszystkich przeszkód, które napotkasz, ten artykuł przygotuje Cię na dziesięć najczęstszych pułapek DevOps. Pamiętaj, że niezależnie od tego, jak podejdziesz do praktyki DevOps, twoje priorytety powinny pozostać skoncentrowane na ludziach, procesach i technologii - w tej kolejności.

Brak priorytetu kultury w projekcie DevOps

Ponad wszystko DevOps to ruch kulturowy. Kultura, którą budujesz w swojej organizacji, sprawi, że przerwiesz praktykę DevOps. Wasza kultura DevOps musi kłaść nacisk na współpracę, zaufanie i wsparcie inżynieryjne. Jeśli gwoździsz automatyzację, ale tęsknisz za tymi elementami kultury, prawdopodobnie zawiedziesz.

W rzeczywistości oprzyrządowanie nie ma aż tak wielkiego znaczenia. Narzędzia, które masz do dyspozycji, są bardziej podobne niż nie. Chociaż rozwiązywane przez nich problemy są ważne, żaden z tych problemów nie może się równać z prawie niekończącą się frustracją związaną z próbą zjednoczenia programistów i pracowników operacyjnych - a także innych zespołów, takich jak bezpieczeństwo - w tradycyjnej organizacji inżynierskiej.

DevOps dąży do ocynkowania inżynierów (a także grup biznesowych). Tworzy fundament, na którym każdy może się uczyć, dzielić i rozwijać. To osobiste przyspieszenie przyspieszy całą Twoją inżynierię, aby szybciej tworzyć lepsze oprogramowanie DevOps. Inżynierowie, których masz w zespole, są najcenniejszym zasobem, jaki masz. Traktuj ich dobrze, dając im szacunek i przestrzeń do robienia tego, co robią najlepiej - rozwiązań inżynieryjnych.

Pozostawiając innych w tyle, gdy idziesz do przodu z DevOps

Wewnętrzne uzasadnienie DevOps określi typ fundamentu, który zbudujesz dla swojej kultury. Poszukaj żyznej gleby. Jeśli poruszasz się zbyt szybko i nie przekonujesz kluczowych osób o znaczeniu transformacji DevOps, ludzie będą obserwować twoje ruchy ze sceptycyzmem i skaczą przy pierwszej okazji, aby pokazać wszystkim, że się mylisz. To nie jest fajna pozycja i nigdy nie chcesz rozpocząć tej podróży z ludźmi, którzy czekają na ciebie.

Aby odnieść sukces, potrzebujesz wszystkich na pokładzie statku DevOps, nawet naysayers i sceptycy. Inżynierowie mogą być sceptyczni. Po dekadzie lub dwóch w tej branży zobaczyli wiele pomysłów i nowych rozwiązań. Mogą łatwo zlekceważyć DevOps jako „po prostu kolejne nieudane podejście” do tych samych starych problemów. A jeśli źle go zaimplementujesz, DevOps rzeczywiście będzie tylko kolejnym nieudanym podejściem. Ty i Twój zespół musicie przekonać innych o potencjale i podjąć działania w sposób, który zaprosi wszystkich do stołu.

Spróbuj przekonać kadrę kierowniczą danymi i potencjalnie przyspieszonym dostarczaniem oprogramowania. Ale inżynierowie muszą wiedzieć, w jaki sposób DevOps sprawi, że ich praca będzie przyjemniejsza. Pokaż im, w jaki sposób DevOps dostosowuje się do potrzeb biznesowych i zmniejsza tarcie w procesie dostarczania oprogramowania.

Pamiętaj tylko, aby nie przeceniać tej koncepcji. Wydarzą się wyzwania DevOps. DevOps nie jest srebrną kulą i na początku wymaga intensywnej pracy, aby zapewnić, że zespół tworzy kulturę uczenia się, w której inżynierowie mogą popełniać błędy i rozwijać się.

Po osiągnięciu horyzontu wydarzeń, w którym wystarczająca liczba osób wierzy w DevOps, możesz przejść ze świadomością, że masz wsparcie swojej organizacji i osób w niej działających.

Zapominając o wyrównaniu zachęt w projekcie DevOps

Jeśli nie zamierzasz dostosowywać zachęt do oczekiwań od niektórych zespołów lub konkretnych inżynierów, pojawiają się kolejne wyzwania. Prawdziwym narzędziem DevOps, jeśli potrafisz je opanować, jest inicjacja. Chcesz wzmocnić swoich inżynierów, aby dobrze wykonywali swoje zadania, bez zakłóceń. Zatrudniałeś utalentowanych inżynierów, więc zaufaj ich zdolności do wypełniania swoich obowiązków.

Na przykład, gdy programiści obsługują rotację na żądanie, niektóre organizacje traktują to jako karę. „Zbudowałeś go, wspierasz”, nie wypełnia ludzi radosnymi uczuciami. Zamiast tego wydaje się, że jest to kolejna forma wyciszonej odpowiedzialności. Ale humanitarna i równomiernie rozmieszczona rotacja na wezwanie nie tylko umożliwia programistom przejęcie odpowiedzialności za ich pracę, ale także stwarza możliwości uczenia się dla całego zespołu.

W DevOps nie karze się inżynierów za niedoskonałą pracę; zamiast tego dzielisz się odpowiedzialnością i kultywujesz organizację, która ceni naukę i pozwala wszystkim być ciekawym, a także uczestniczyć w obszarach techniki, w których są mniej zaznajomieni.

Dostosowanie zachęt i stworzenie możliwości współpracy przyczynia się do ulepszenia twoich produktów i lepszej obsługi klientów. Jeśli wszyscy będą dążyć do stworzenia niesamowitych usług dla swoich klientów za pośrednictwem DevOps, zobaczysz, że grupa zaczyna galwanizować.

Milczenie na temat projektu DevOps

DevOps to przeciwieństwo tajemnic i negocjacji na zapleczu. Zamiast tego kładzie wszystko na stole i zmusza do zaufania uczciwości ludzi w organizacji. Kiedy po raz pierwszy wprowadzasz otwartą komunikację, konflikt może wydawać się nasilać. Tak nie jest. Zamiast tego po raz pierwszy widzisz punkty tarcia. Zamiast pozostawiać konflikt w zaparzaniu pod powierzchnią, ludzie czują się wystarczająco bezpiecznie, aby wyrazić swoje obawy i wyrazić swoje opinie.

Ważnym aspektem otwartej komunikacji jest utrzymanie jej przez cały cykl życia produktu - od idei do produkcji. Musisz uwzględniać inżynierów w planowaniu dyskusji, decyzjach dotyczących architektury, aktualizacjach postępu rozwoju i wdrożeniach.

Chociaż nacisk kładziony na komunikację stwarza bardziej szczegółowe dyskusje, umożliwia także inżynierom widoczność poza ich głównym obszarem wiedzy specjalistycznej, co z kolei umożliwia im doradzanie innym, mając jednocześnie kontekst niezbędny do podejmowania trafnych decyzji.

Utrzymuj klienta - i tego, czego oczekują od produktu, który budujesz - w centrum każdej dyskusji i decyzji. Jeśli pozostaniesz wyrównany do tego celu, z pewnością będziesz iść do przodu jako jedna jednostka.

Zapomniałeś zmierzyć swoje postępy DevOps

Mierzenie postępów jest kluczowe dla sukcesu DevOps. Umożliwia walidację podczas argumentowania DevOps w wątpliwych interesariuszach, pomaga przekonać kierowników wstrzymujących się i przypomina zespołowi inżynierskiemu, jak wiele osiągnęli.

Przed wprowadzeniem jednej zmiany utwórz linię bazową. Wybierz mały zestaw danych, które chcesz śledzić przez cały proces. Te dane informują o twoich decyzjach i służą jako paliwo do dalszego przepychania, gdy napotkasz niepowodzenia. Potencjalne pomiary obejmują:

  • Satysfakcja Emstakeployee: Czy Twoi inżynierowie lubią pracować w Twojej organizacji? Miesięczne przychody cykliczne (MRR): Ile zarabiasz od klientów? Bilety klientów: ile błędów zgłaszają Twoi klienci? Częstotliwość wdrażania: ile wdrożeń masz w każdym tygodniu lub miesiącu? Średni czas do wyzdrowienia (MTTR): Jak długo trwa powrót do zdrowia po awarii usługi? Dostępność usługi: Jaki jest czas dostępności aplikacji? Czy osiągasz obecne umowy dotyczące poziomu usług? Nieudane wdrożenia: ile wydań powoduje zakłócenia usługi? Ile trzeba wycofać?

Mikrozarządzanie projektem DevOps

Jednym z najszybszych sposobów na osłabienie inżynierów jest mikrozarządzanie ich pracą. Dan Pink, autor książki Drive, uważa, że ​​motywacja w pracy zależy od trzech czynników:

  • Autonomia Mistrzostwo Cel, powód

Zewnętrzne czynniki motywujące, takie jak wysokie pensje, premie i opcje na akcje, mogą działać w krótkim okresie, ale długoterminowe zadowolenie z pracy zależy bardziej od rozwoju osobistego i zawodowego. Chcesz, aby Twoi inżynierowie istnieli w napięciu związanym z wyzwaniem, ale nie przytłoczeniem stresem. Ten słodki punkt jest inny dla każdej osoby. To wyzwanie DevOps, ale kiedyś może to zmienić świat, jeśli zostanie wykonane właściwie. Jeśli potrafisz wywołać czyjąś pasję, z pewnością będą pracować entuzjastycznie.

Zaufanie może być wyzwaniem DevOps. Jest to absolutnie niezbędne dla organizacji DevOps. Musisz zaufać swoim kolegom, kolegom, inżynierom, menedżerom i kierownictwu. Musisz także zaufać rolom i obowiązkom różnych działów w swojej organizacji - co nie znaczy, że nigdy nie będziesz mieć konfliktu. Oczywiście momenty tarcia wystąpią między ludźmi. Ale zminimalizowanie tych chwil i umożliwienie zdrowego rozwiązywania konfliktów odróżnia zespoły inżynierów skupione na DevOps od konkurencji.

Zmieniam za dużo, za szybko

Wiele zespołów zbyt szybko wprowadza zbyt wiele zmian. Ludzie nie lubią zmian. DevOps jest korzystny w dłuższej perspektywie, szybkie zmiany w normalnym sposobie robienia rzeczy mogą być dla inżynierów denerwujące.

Wadą DevOps jest to, że implikuje to, że wszyscy mieszkają na zielonym polu (nowe oprogramowanie) z tęczami i jednorożcami. Może to brzmieć: „Jeśli tylko zdołasz zmusić zespół do współpracy, tworzenie oprogramowania będzie łatwe!” To nieprawda. Inżynieria oprogramowania jest trudna i zawsze będzie trudna. To jedna z rzeczy, które lubi większość inżynierów. Lubisz wyzwania. Ale wyzwania powinny być stymulujące, a nie stresujące.

DevOps nie ma na celu usunięcia wszystkich intelektualnych wyzwań inżynierii. Zamiast tego oferuje zminimalizowanie tarcia między ludźmi, aby każdy mógł skoncentrować się na swojej pracy. Jeśli spróbujesz zbyt szybko wprowadzić zbyt wiele zmian, możesz znaleźć się w środku buntu - Bunt na Binarnym.

Niewłaściwy wybór narzędzi DevOps

Chociaż deprioryzujesz narzędzia w DevOps - i słusznie - oprzyrządowanie jest nadal ważnym czynnikiem. Nawet najmniej ważny aspekt DevOps przyczynia się do ogólnego sukcesu. Wybrane narzędzia powinny rozwiązać problemy występujące w zespole inżynierów, ale powinny również być zgodne ze stylem, wiedzą i komfortem istniejącego zespołu.

Nie bój się wypróbować kilku rozwiązań i przekonaj się, które z nich najlepiej pasuje. Poświęcenie kilku tygodni na minimum produktu (MVP) lub proof of concept (POC) w celu przetestowania narzędzia jest warte wysiłku. Nawet jeśli w końcu go wyrzucisz, „marnowanie” zasobów inżynieryjnych jest lepsze niż skupienie się na konkretnej technologii, aby dowiedzieć się rok później, że nie jest to dobre dopasowanie.

Obawa przed niepowodzeniem twojego projektu DevOps

Szybka porażka to krótki sposób na powiedzenie, że powinieneś ciągle powtarzać, aby identyfikować problemy na wczesnym etapie procesu, nie tracąc mnóstwo czasu i pieniędzy. Jest to coś, o czym mówi wiele osób technicznych, a niewiele z nich faktycznie wdraża, ponieważ wymaga to szybkiej iteracji w środowisku, w którym błędy mają mały promień wybuchu i można je łatwo poprawić. Zbyt często firmy twierdzą, że cechuje je szybka awaria, i zamiast tego zwalniają pierwszego inżyniera, aby usunąć produkcyjną bazę danych. (Tak jakby jakikolwiek inżynier tam nigdy nie usunął produkcyjnej bazy danych ...)

Jednak w kontekście DevOps lepiej jest zawieść dobrze niż szybko. Niepowodzenie w dobrym stanie oznacza, że ​​masz monitoring, który ostrzega o potencjalnych problemach na długo zanim sytuacja wpłynie na klientów. Niepowodzenie również oznacza, że ​​zaprojektowałeś swój system w sposób podzielony na segmenty, co zapobiega upadkowi jednej usługi, która przechodzi w awarię systemową. Ale organizacje, które dobrze sobie radzą, idą o krok dalej: nie obwiniają ludzi. Zamiast tego szukają awarii w systemach i procesach.

Kaizen to japońskie słowo określające ciągłe doskonalenie. W DevOps kaizen oznacza ciągłe doskonalenie procesów. To nie jest żadna seksowna transformacja, która ma początek i koniec. Celem nie jest przejście od zera do ideału. Zamiast tego DevOps zachęca do powolnej i stopniowej pracy nad ulepszaniem każdego dnia. Gdybyś co wieczór wychodził z pracy wiedząc, że tylko jeden mały aspekt pracy jest lepszy dzięki tobie, czy nie czułbyś się usatysfakcjonowany? Tak uważa wielu inżynierów.

Zamiast próbować uniknąć awarii za wszelką cenę, DevOps nalega na nastawienie na rozwój. Porażka nie jest oznaką głupoty lub złego przygotowania. Jest wskaźnikiem wzrostu i niezbędnym krokiem w dziedzinie innowacji. Innowacja jest rezultatem, do którego powinieneś dążyć, nawet jeśli oznacza to, że czasami ponosisz porażkę.

Bycie zbyt sztywnym spowoduje problemy z DevOps

DevOps nie jest nakazowy i to jest zarówno najlepsza, jak i najgorsza rzecz w tym. DevOps byłby o wiele łatwiejszy do wdrożenia, gdybyś miał listę dziesięciu kroków, które możesz zrobić, aby osiągnąć nirwanę DevOps. Gdyby to było takie proste! Ale ludzie nie działają w ten sposób, a grupy ludzi - na przykład w zespołach inżynieryjnych i w dużych organizacjach - stwarzają jeszcze więcej zawiłości, którymi należy się zająć.

Chociaż nie istnieje żaden plan budowy organizacji DevOps, możesz dostosować metodologię do praktyk, które działają dla Ciebie i Twojego zespołu. Znasz swoją organizację i jako doświadczony ekspert powinieneś myśleć nieszablonowo, stosując podstawy. Niektóre rzeczy w DevOps idealnie do ciebie pasują. Inni będą mieć ochotę na kurtkę, która jest tylko o jeden rozmiar za mała. W porządku

Popełnisz błędy. Nikt nie jest perfekcyjny. Ale jeśli trochę puścisz, wzmocnisz swoich inżynierów i zaufasz swojemu zespołowi, zobaczysz niesamowite wyniki. Po prostu zacznij. I pamiętaj: zaproś wszystkich do stołu, mierz swoje postępy, stawiaj na pierwszym miejscu kulturę nad technologią i zachęcaj inżynierów do robienia tego, co robią najlepiej.

  1. BusinessOperations Management Co to jest DevOps?

Emily Freeman

Co to jest DevOps? Trudno jest podać dokładną receptę DevOps - ponieważ żadna nie istnieje. DevOps to filozofia kierująca rozwojem oprogramowania, która priorytetowo traktuje ludzi przed procesem i procesem nad oprzyrządowaniem. DevOps buduje kulturę zaufania, współpracy i ciągłego doskonalenia.

Cykl DevOps

Jako kultura filozofia DevOps postrzega proces rozwoju w sposób holistyczny, biorąc pod uwagę wszystkich zaangażowanych: programistów, testerów, ludzi operacyjnych, bezpieczeństwa i inżynierów infrastruktury. DevOps nie stawia żadnej z tych grup nad innymi, ani nie ocenia znaczenia ich pracy. Zamiast tego firma DevOps traktuje cały zespół inżynierów jako kluczowy dla zapewnienia klientowi jak najlepszej obsługi.

DevOps ewoluował z Agile

W 2001 roku 17 inżynierów oprogramowania spotkało się i opublikowało „Manifest dla Agile Software Development”, w którym określono 12 zasad zarządzania projektami Agile. Ten nowy przepływ pracy był odpowiedzią na frustrację i brak elastyczności zespołów pracujących w procesie wodospadowym (liniowym).

Pracując zgodnie z zasadami Agile, inżynierowie nie muszą przestrzegać oryginalnych wymagań ani postępować zgodnie z liniowym procesem programowania, w którym każdy zespół przekazuje pracę następnemu. Zamiast tego są w stanie dostosować się do ciągle zmieniających się potrzeb firmy lub rynku, a czasem nawet do zmieniającej się technologii i narzędzi.

Chociaż Agile zrewolucjonizowało tworzenie oprogramowania na wiele sposobów, nie udało się rozwiązać konfliktu między programistami a specjalistami ds. Operacyjnych. Silosy wciąż rozwijały się wokół zestawów umiejętności technicznych i specjalizacji, a programiści nadal przekazywali kod ludziom operacyjnym w celu ich wdrożenia i wsparcia.

W 2008 roku Andrew Clay Shafer rozmawiał z Patrickiem Debois o swoich frustracjach związanych z ciągłym konfliktem między programistami i ludźmi z branży. Wspólnie zorganizowali pierwsze wydarzenie DevOpsDays w Belgii, aby stworzyć lepszy i bardziej zwinny sposób podejścia do rozwoju oprogramowania. Ta ewolucja Agile została utrzymana, a DevOps umożliwił firmom na całym świecie szybsze wytwarzanie lepszego oprogramowania (i zwykle tańsze). DevOps to nie moda. Jest to powszechnie akceptowana filozofia inżynierii.

DevOps koncentruje się na ludziach

Każdy, kto mówi, że DevOps polega na narzędziach, chce ci coś sprzedać. Przede wszystkim DevOps to filozofia, która koncentruje się na inżynierach i tym, jak mogą lepiej współpracować, aby tworzyć świetne oprogramowanie. Możesz wydawać miliony na każde narzędzie DevOps na świecie i nadal nie być bliżej nirwany DevOps.

Zamiast tego skup się na swoim najważniejszym zasobie inżynieryjnym: inżynierach. Szczęśliwi inżynierowie tworzą świetne oprogramowanie. Jak uczynić szczęśliwych inżynierów? Cóż, tworzysz środowisko pracy oparte na współpracy, w którym może się rozwijać wzajemny szacunek, wspólna wiedza i uznanie ciężkiej pracy.

Kultura firmy jest podstawą DevOps

Twoja firma ma kulturę, nawet jeśli pozostawiono jej rozwój poprzez bezwładność. Ta kultura ma większy wpływ na zadowolenie z pracy, produktywność i szybkość zespołu, niż się wydaje.

Kulturę firmy najlepiej opisać jako niewypowiedziane oczekiwania, zachowanie i wartości organizacji. Kultura mówi pracownikom, czy kierownictwo firmy jest otwarte na nowe pomysły. To właśnie decyduje o decyzji pracownika, czy zgłosić problem, czy zamiatać go pod dywan.

Kultura to coś, co należy zaprojektować i dopracować, a nie coś, co można pozostawić przypadkowi. Chociaż rzeczywista definicja różni się w zależności od firmy i osoby, DevOps stanowi kulturowe podejście do inżynierii.

Toksyczna kultura firmy zabije twoją podróż DevOps, zanim jeszcze się zacznie. Nawet jeśli Twój zespół inżynierów przyjmie podejście DevOps, postawy i wyzwania większej firmy będą krwawić do twojego środowiska.

Dzięki DevOps unikasz winy, zyskujesz zaufanie i koncentrujesz się na kliencie. Dajesz swoim inżynierom autonomię i upoważniasz ich do robienia tego, co robią najlepiej: rozwiązań inżynierskich. Kiedy zaczynasz wdrażać DevOps, dajesz swoim inżynierom czas i przestrzeń, aby się do nich dostosować, dając im możliwość lepszego poznania się i nawiązania kontaktu z inżynierami o różnych specjalnościach.

Ponadto mierzysz postępy i nagrody za osiągnięcia. Nigdy nie obwiniaj ludzi za niepowodzenia. Zamiast tego zespół powinien stale się ulepszać, a osiągnięcia powinny być świętowane i nagradzane.

Uczysz się, obserwując proces i zbierając dane

Obserwacja przepływu pracy bez oczekiwań jest potężną techniką pozwalającą realistycznie zobaczyć sukcesy i wyzwania związane z przepływem pracy. Ta obserwacja jest jedynym sposobem na znalezienie właściwego rozwiązania obszarów i problemów, które tworzą wąskie gardła w procesach.

Podobnie jak w przypadku oprogramowania, stuknięcie jakiegoś Kubernetesa (lub innego nowego narzędzia) w problem niekoniecznie go rozwiązuje. Musisz wiedzieć, gdzie są problemy, zanim je rozwiążesz. Kontynuując, gromadzisz dane - nie po to, by mierzyć sukces lub porażkę, ale śledzić wydajność zespołu. Ty decydujesz, co działa, a co nie i co wypróbować następnym razem.

Perswazja jest kluczem do przyjęcia DevOps

Sprzedaż idei DevOps liderom, współpracownikom i pracownikom nie jest łatwa. Proces ten nie zawsze jest intuicyjny dla inżynierów. Czy świetny pomysł nie powinien się po prostu sprzedać? Gdyby to było takie proste. Jednak kluczową koncepcją, o której należy pamiętać przy wdrażaniu DevOps, jest podkreślanie ludzi.

tak zwane „miękkie umiejętności” komunikacji i współpracy są kluczowe dla transformacji DevOps. Przekonanie innych członków zespołu i firmy do przyjęcia DevOps wymaga ćwiczenia dobrych umiejętności komunikacyjnych. Wczesne rozmowy ze współpracownikami na temat DevOps mogą pomóc Ci osiągnąć sukces na drodze - szczególnie, gdy osiągniesz nieoczekiwany spadek prędkości.

Małe, przyrostowe zmiany są bezcenne w DevOps

Aspekt DevOps, który kładzie nacisk na wprowadzanie zmian w małych, przyrostowych sposobach, ma swoje korzenie w oszczędnej produkcji, która obejmuje przyspieszone sprzężenie zwrotne, ciągłe doskonalenie i szybszy czas wprowadzania na rynek.

Woda jest dobrą metaforą transformacji DevOps. Woda jest jednym z najpotężniejszych pierwiastków na świecie. O ile ludzie nie patrzą, jak przed nimi płyną wody powodziowe, uważają je za stosunkowo nieszkodliwe. Rzeka Kolorado wyrzeźbiła Wielki Kanion. Powoli przez miliony lat woda przecinała kamień, odsłaniając prawie dwa miliardy lat gleby i skał.

Możesz być jak woda. Bądź powolną, nieustępliwą zmianą w swojej organizacji. Oto ten słynny cytat z wywiadu Bruce'a Lee, który Cię zainspirował:

Bądź bezkształtny, bezkształtny, jak woda. Teraz wkładasz wodę do kubka, staje się on kubkiem. Wlewasz wodę do butelki, która staje się butelką. Umieszczasz go w czajniczku, staje się czajnikiem. Teraz woda może płynąć lub może ulec awarii. Bądź wodą, przyjacielu.

Wprowadzanie zmian przyrostowych oznacza na przykład, że znajdziesz problem i naprawisz go. Następnie naprawisz następny. Nie bierzesz się za szybko i nie wybierasz każdej bitwy do walki. Rozumiesz, że niektóre walki nie są warte energii ani kapitału społecznego, które mogą cię kosztować.

Ostatecznie DevOps nie jest listą kroków, które można podjąć, ale jest raczej podejściem, które powinno kierować decyzjami, które podejmujesz w miarę rozwoju.

  1. BusinessOperations ManagementDevOps For Dummies Ściągawka
  2. BusinessOperations Management Baza cen transferowych na pełny koszt

Mark P. Holtzman

Firma może ustalić cenę transferu na pełny koszt (znany również jako koszt absorpcji), który jest sumą kosztów zmiennych i kosztów stałych na jednostkę. Aby zapewnić, że dział sprzedaży osiąga zysk, mogą również dodać znaczniki.

Załóżmy, że HOO Water Company produkuje zarówno wodę źródlaną, jak i napoje bezalkoholowe. Oddział Clor produkuje wodę źródlaną, a oddział Shpritz wytwarza napoje bezalkoholowe. Menedżerowie HOO zachęcają Clora i Shpritza do współpracy, aby dywizja Shpritz używa wody źródlanej oddziału Clor do przygotowywania napojów bezalkoholowych.

Jednak dział Clor sprzedaje również wodę zewnętrznym klientom za 0,75 USD za galon. Aby zminimalizować koszty, Shpritz może również kupować wodę od dostawców innych niż Spring.

W tym roku oddział Clor planuje wyprodukować 100 000 galonów wody źródlanej, ale ma możliwość wyprodukowania większej ilości wody, jeśli będzie w stanie ją sprzedać. Woda Clora niesie zmienny koszt 0,30 USD za galon i musi pokryć koszty stałe w wysokości 40 000 USD.

Oddział Shpritz planuje wyprodukować 60 000 galonów napojów bezalkoholowych; może kupować wodę od Shpritz lub od zewnętrznego dostawcy. Oprócz kosztów wody Shpritz musi zapłacić 0,40 USD za galon za aromaty i inne dodatki do wyprodukowania każdego galonu napoju bezalkoholowego. Shpritz pokrywa również koszty stałe w wysokości 30 000 USD rocznie. Bezalkoholowy napój Shpritza kosztuje 2 USD za galon.

Najpierw obliczyć pełny koszt Clora. Stałe koszty wynoszą 40 000 $ potrzebne do wyprodukowania 100 000 galonów wody źródlanej. Stały koszt jednostkowy wynosi zatem 0,40 USD za galon (40 000 ÷ 100 000 galonów). Koszty zmienne Clora wynoszą 0,30 USD za galon; dodaj to do stałego kosztu na jednostkę, aby uzyskać całkowity koszt 0,70 USD za galon, czyli cenę transferu.

Poniższy rysunek wyjaśnia, co się stanie, gdy Clor dostarczy Shpritzowi wodę źródlaną o wartości 60 000 za cenę transferu 0,70 USD za galon, a resztę klientom zewnętrznym za 0,75 USD za galon.

image0.jpg

Tutaj Clor otrzymuje 30 000 USD przychodów od klientów zewnętrznych i 42 000 USD przychodów od Shpritz. Odjęcie kosztów zmiennych Clora w wysokości 30 000 USD i kosztów stałych w wysokości 40 000 USD daje dochód netto w wysokości 2000 USD. Shpritz uzyskuje przychody w wysokości 120 000 USD z napojów bezalkoholowych.

Z tej kwoty musi zapłacić 42 000 USD Clor i 24 000 USD z tytułu innych kosztów zmiennych. Shpritz musi również zapłacić koszty stałe o wartości 30 000 USD, co daje dochód netto w wysokości 24 000 USD dla Shpritz. HOO Water, która jest właścicielem obu działów, zarabia 26 000 USD na obu produktach.

Decyzje dotyczące oparcia ceny transferu na pełnym koszcie mogą skłonić kierowników działów do podjęcia złych decyzji, które zaszkodzą ogólnej rentowności firmy. Załóżmy, że inna firma, Malcolm Water, sprzedaje wodę za 0,65 USD za galon. (Jeśli zastanawiasz się, Malcolm Water może pobierać mniej pieniędzy za wodę, ponieważ jej woda jest gorszej jakości.) Podział Shpritz musi wybrać między płaceniem 0,70 USD za galon w podziale Clor lub 0,65 USD za galon w przypadku Malcolm.

Z jednej strony Shpritz może preferować prowadzenie interesów z Clor tylko dlatego, że obie firmy mają tego samego rodzica. Jeśli jednak HOO płaci 0,70 USD za galon za wodę, ale tylko 0,65 USD za zakup od Malcolma, to czy HOO nie powinien po prostu kupować wody od tańszego dostawcy zewnętrznego i oszczędzać 0,05 USD za galon?

Niekoniecznie. Poniższy rysunek ilustruje fiasko, które ma miejsce, gdy Shpritz próbuje zaoszczędzić pieniądze, kupując wodę od Malcolma.

obraz1.jpg

Decyzja Shpritz o obniżeniu kosztów zmniejsza ogólną rentowność HOO Water o 21 000 USD. Nie ma co do tego wątpliwości: zyskowność Shpritza rośnie. Ponieważ decyzja o outsourcingu zmniejsza zmienny koszt zakupu wody z 42 000 USD do 39 000 USD, dochód netto Shpritz wzrasta do 27 000 USD.

Jednak decyzja Shpritza szkodzi Clorowi i ostatecznie obniża całkowitą rentowność HOO Water. Sprzedaż Clora do Shpritz w wysokości 42 000 $ całkowicie wyschła. Koszty zmienne również spadają z 30 000 USD do 12 000 USD.

Jednak stałe koszty Clor w wysokości 40 000 USD pozostają takie same, co zmusza Clor do straty w wysokości 22 000 USD. Całkowite zyski HOO Water spadają z 26 000 USD do zaledwie 5 000 USD. Oparcie ceny transferu na pełnym koszcie skłoniło Shpritz do podjęcia decyzji, które zaszkodzą ogólnej rentowności firmy.

  1. BusinessMarketing Marketing społecznościowy Jak znaleźć swoje kontakty na Instagramie
Instagram For Business For Dummies

Jennifer Herman, Eric Butow, Corey Walker

Jeśli dopiero zaczynasz korzystać z Instagrama, możesz zastanawiać się, od czego zacząć. Instagram (i jego tata, Facebook) chętnie pomogą Ci nawiązywać połączenia. Możesz znaleźć ludzi na kilka różnych sposobów.

Znajdowanie znajomych na Facebooku

Facebook ma szczególny interes w rozwijaniu Instagrama, więc stara się zachęcić cię do zebrania znajomych z Facebooka i przeniesienia ich na Instagram. To łatwy sposób na znalezienie ludzi.

Aby znaleźć znajomych na Facebooku, wykonaj następujące kroki:

  1. Przejdź do strony profilu na Instagramie, stukając zdjęcie w prawym dolnym rogu ekranu telefonu. Stuknij osobę z plusem (i ewentualnie czerwoną liczbą) w lewym górnym rogu. Stuknij link Facebook na górze ekranu. Potwierdź swój login na Facebooku, dotykając OK. Na ekranie wyświetlana jest liczba znajomych z serwisu Facebook na Instagramie. Stuknij opcję Obserwuj wszystko lub Obserwuj. Aby śledzić wszystkich znajomych na Facebooku na Instagramie, dotknij opcji Obserwuj wszystko. Jeśli wolisz być bardziej selektywny, szczególnie dlatego, że prawdopodobnie będziesz promować swój produkt lub usługę, możesz śledzić znajomych jeden po drugim. Po prostu dotknij opcji Obserwuj obok każdego znajomego, z którym chcesz się połączyć, i przewijaj i obserwuj!
znajdź znajomych na Facebooku Instagram

Niektórzy z twoich znajomych mogli ustawić swoje konta jako prywatne. W takim przypadku po kliknięciu opcji Śledź zobaczysz komunikat Żądane. Muszą Cię zatwierdzić, zanim będziesz mógł zobaczyć ich profil i posty.

Synchronizowanie listy kontaktów

Instagram może również łączyć się z kontaktami zapisanymi w telefonie lub tablecie. Po aktywowaniu tej funkcji kontakty są okresowo synchronizowane z serwerami Instagram. Instagram nie śledzi nikogo w twoim imieniu i możesz rozłączyć swoje kontakty w dowolnym momencie, aby Instagram nie miał do nich dostępu.

Ta funkcja może być najlepsza na początku w porównaniu do stałego połączenia w celu zachowania prywatności.

Aby połączyć swoje kontakty, wykonaj następujące kroki:

  1. Przejdź do strony profilu na Instagramie, stukając zdjęcie w prawym dolnym rogu ekranu telefonu. Stuknij małą osobę z plusem (i ewentualnie czerwoną liczbą) w lewym górnym rogu. Stuknij link Kontakty. Następny ekran pokazuje, że Instagram znajdzie osoby, które znasz, i masz możliwość ich śledzenia. Aby kontynuować, dotknij Połącz kontakty. Kolejne wyskakujące okienko pyta, czy Instagram może uzyskać dostęp do twoich kontaktów. Stuknij Zezwól na dostęp. Pojawi się wyskakujące okienko z prośbą o zezwolenie Instagramowi na dostęp do kontaktów. To Twoja ostatnia szansa na anulowanie decyzji o zezwoleniu Instagramowi na dostęp do twoich kontaktów. Stuknij OK. Wyskakujące okienko zniknie i pojawi się ekran Kontakty. Śledź wszystkie kontakty na Instagramie, dotykając opcji Śledź wszystkie lub wybierz kontakty, które chcesz śledzić, dotykając opcji Obserwuj obok każdego z nich.
kontakty na Instagramie

Jeśli w pewnym momencie zmienisz zdanie i chcesz zabronić Instagramowi dostępu do kontaktów, dotknij ikony koła na stronie profilu, przewiń w dół do Ustawień, a następnie dotknij Kontakty. Stuknij przełącznik Połącz kontakty, aby przywrócić go do białego koloru, co kończy dostęp do Instagrama.

  1. Zarządzanie BusinessOperations Wybór najlepszego dostawcy usług chmurowych, funkcji i narzędzi dla DevOps

Emily Freeman

Sukces inicjatywy DevOps zależy w dużej mierze od śledzenia tego procesu, ale ważne jest również, aby używać odpowiednich narzędzi. Wybór dostawcy usług w chmurze nie jest łatwym wyborem, szczególnie gdy DevOps jest Twoją motywacją do jazdy. GCP (Google Cloud Platform), AWS (Amazon Web Services) i Azure mają więcej wspólnego niż osobno.

Często twoja decyzja zależy bardziej od poziomu komfortu zespołu DevOps u konkretnego dostawcy chmury lub Twojego aktualnego stosu niż od samego dostawcy chmury. Po tym, jak zdecydujesz się przenieść do chmury, następną decyzją jest wybór dostawcy chmury, który odpowiada Twoim potrzebom DevOps. Oto kilka rzeczy, które należy wziąć pod uwagę, oceniając dostawców usług chmurowych z uwzględnieniem zasad DevOps:

  • Solidne osiągnięcia. Wybrana chmura powinna mieć historię odpowiedzialnych decyzji finansowych i wystarczający kapitał, aby móc obsługiwać i rozwijać duże centra danych na przestrzeni dziesięcioleci. Zgodność i zarządzanie ryzykiem. Formalna struktura i ustalone zasady zgodności są niezbędne, aby zapewnić bezpieczeństwo danych. Najlepiej sprawdzaj audyty przed podpisaniem umowy. Pozytywna reputacja Zaufanie klienta jest absolutnie kluczowe. Czy wierzysz, że możesz polegać na tym dostawcy usług w chmurze, aby nadal się rozwijać i wspierać zmieniające się potrzeby DevOps? Umowy o gwarantowanym poziomie usług (SLA). Jakiego poziomu usług potrzebujesz? Zazwyczaj dostawcy usług w chmurze oferują różne poziomy niezawodności w zależności od kosztów. Na przykład 99,9 procent czasu sprawności będzie znacznie tańszy niż 99,999 procent czasu dostępności. Metryki i monitorowanie. Jakie rodzaje analiz, monitorowania i telemetrii aplikacji dostarcza dostawca? Upewnij się, że możesz uzyskać odpowiedni poziom wglądu w swoje systemy w jak najbliższym czasie rzeczywistym.

Na koniec upewnij się, że wybrany dostawca chmury ma doskonałe możliwości techniczne, które zapewniają usługi, które spełniają określone potrzeby DevOps. Ogólnie szukaj

  • Możliwości obliczeniowe Rozwiązania do przechowywania Funkcje wdrażania Logowanie i monitorowanie Przyjazne interfejsy użytkownika

Powinieneś także potwierdzić możliwość wdrożenia rozwiązania chmury hybrydowej, jeśli zajdzie taka potrzeba, a także nawiązywać połączenia HTTP z innymi interfejsami API i usługami.

Trzej główni dostawcy usług w chmurze to Google Cloud Platform (GCP), Microsoft Azure i Amazon Web Services (AWS). Możesz także znaleźć mniejszych dostawców chmur i z pewnością wielu prywatnych dostawców chmur, ale większość tego, co musisz wiedzieć, pochodzi z porównania dostawców chmur publicznych.

Amazon Web Services (AWS)

Podobnie jak inni główni dostawcy chmur publicznych, AWS zapewnia obliczenia na żądanie w ramach subskrypcji płatnej zgodnie z rzeczywistym użyciem. Użytkownicy AWS mogą subskrybować dowolną liczbę usług i zasobów obliczeniowych. Amazon jest obecnie liderem rynku wśród dostawców usług w chmurze, posiadając większość abonentów chmury.

Oferuje solidny zestaw funkcji i usług w regionach na całym świecie. Dwie najbardziej znane usługi to Amazon Elastic Compute Cloud (EC2) i Amazon Simple Storage Service (Amazon S3). Podobnie jak w przypadku innych dostawców usług w chmurze, usługi są dostępne, a infrastruktura jest udostępniana za pośrednictwem interfejsów API.

Microsoft Azure

Zanim Microsoft uruchomił tego dostawcę chmury jako Microsoft Azure, nazywał się Windows Azure. Microsoft zaprojektował go tak, aby robił to, co sama nazwa wskazuje - służył jako dostawca chmury dla tradycyjnie organizacji informatycznych Windows. Ale gdy rynek stał się bardziej konkurencyjny, a Microsoft zaczął lepiej rozumieć krajobraz inżynierii, platforma Azure dostosowała się, rozwijała i ewoluowała.

Mimo że Azure jest prawdopodobnie mniej odporny niż AWS, Azure jest wszechstronnym dostawcą chmury, który koncentruje się na doświadczeniu użytkownika. Poprzez różne premiery i przejęcia produktów - w szczególności GitHub - Microsoft zainwestował znaczne środki w infrastrukturę Linuksa, co pozwoliło jej zapewnić bardziej niezawodne usługi szerszej publiczności.

Google Cloud Platform (GCP)

Google Cloud Platform (GCP) ma najmniejszy udział w rynku spośród trzech głównych dostawców chmur publicznych, ale oferuje znaczny zestaw usług chmurowych w prawie dwóch tuzinach regionów geograficznych.

Być może najbardziej atrakcyjnym aspektem GCP jest to, że oferuje użytkownikom tę samą infrastrukturę, z której Google korzysta wewnętrznie. Ta infrastruktura obejmuje niezwykle wydajne usługi komputerowe, magazynowe, analityczne i uczenia maszynowego. W zależności od konkretnego produktu GCP może mieć specjalistyczne narzędzia, których brakuje (lub jest mniej dojrzały) w AWS i Azure.

Znajdowanie narzędzi i usług DevOps w chmurze

Dosłownie setki narzędzi i usług są do Państwa dyspozycji za pośrednictwem głównych dostawców chmury. Te narzędzia i usługi są ogólnie podzielone na następujące kategorie:

  • Obliczać Przechowywanie Sieć Zarządzanie zasobami Cloud Artificial Intelligence (AI) Tożsamość Bezpieczeństwo Bez serwera IoT

Poniżej znajduje się lista najczęściej używanych usług we wszystkich trzech głównych dostawcach chmury. Usługi te obejmują wdrażanie aplikacji, zarządzanie maszyną wirtualną (VM), aranżację kontenerów, funkcje bez serwera, pamięć i bazy danych.

Uwzględniono dodatkowe usługi, takie jak zarządzanie tożsamością, przechowywanie bloków, chmura prywatna, przechowywanie sekretów i inne. Nie jest to wyczerpująca lista, ale może być dla Ciebie solidnym fundamentem, gdy zaczniesz badać swoje opcje i poczujesz, co wyróżnia dostawców chmury.

  • Wdrażanie aplikacji: platforma jako usługa (PaaS) do wdrażania aplikacji w różnych językach, w tym Java, .NET, Python, Node.js, C #, Ruby i Go Azure: Azure Cloud Services AWS: AWS Elastic Beanstalk GCP: Google App Engine
  • Zarządzanie maszyną wirtualną (VM): opcja Infrastruktura jako usługa (IaaS) do uruchamiania maszyn wirtualnych (VM) w systemie Linux lub Windows Azure: Azure Virtual Machines AWS: Amazon EC2 GCP: Google Compute Engine
  • Zarządzane Kubernetes: Umożliwia lepsze zarządzanie kontenerami za pośrednictwem popularnego orkiestratora Kubernetes Azure: Azure Kubernetes Service (AKS) AWS: Amazon Elastic Container Service (ECS) dla Kubernetes GCP: Google Kubernetes Engine
  • Bez serwera: umożliwia użytkownikom tworzenie logicznych przepływów pracy funkcji bez serwera Azure: Azure Functions AWS: AWS Lambda GCP: funkcje Google Cloud
  • Przechowywanie w chmurze: Niestrukturalne przechowywanie obiektów z buforowaniem Azure: Azure Blob Storage AWS: Amazon S3 GCP: Google Cloud Storage
  • Bazy danych: bazy danych SQL i NoSQL na żądanie Azure: Azure Cosmos DB AWS: Amazon Relational Database Service (RDS) i Amazon DynamoDB (NoSQL) GCP: Google Cloud SQL i Google Cloud BigTable (NoSQL)

Podczas eksploracji trzech głównych dostawców usług w chmurze zauważasz długą listę usług. Możesz czuć się przytłoczony setkami dostępnych opcji. Jeśli przypadkiem nie możesz znaleźć tego, czego potrzebujesz, rynek prawdopodobnie zapewni coś podobnego. Rynek jest miejscem, gdzie niezależni programiści oferują usługi podłączane do chmury - hostowane przez Azure, AWS lub GCP.

W poniższej tabeli wymieniono dodatkowe usługi świadczone przez większość, jeśli nie wszystkich, dostawców usług w chmurze.

Kategoria usługiFunkcjonalność
Zablokuj pamięćPrzechowywanie danych w środowiskach sieci pamięci masowej (SAN). Blokowanie pamięci jest podobne do przechowywania danych na dysku twardym.
Virtual Private Cloud (VPC)Logicznie izolowane, współdzielone zasoby komputerowe.
Zapora ogniowaBezpieczeństwo sieci kontrolujące ruch.
Sieć dostarczania treści (CDN)Dostarczanie treści na podstawie lokalizacji użytkownika. Zwykle wykorzystuje buforowanie, równoważenie obciążenia i analizy.
System nazw domen (DNS)Tłumacz nazw domen na adresy IP dla przeglądarek.
Pojedyncze logowanie (SSO)Kontrola dostępu do wielu systemów lub aplikacji korzystających z tych samych poświadczeń. Jeśli zalogowałeś się w niezależnej aplikacji przy użyciu poświadczeń Google, Twitter lub GitHub, używałeś jednokrotnego logowania.
Zarządzanie tożsamością i dostępem (IAM)Zarządzanie dostępem użytkowników oparte na rolach. Wstępnie określone role mają dostęp do określonej grupy funkcji; użytkownicy mają przypisane role.
Telemetria, monitorowanie i rejestrowanieNarzędzia zapewniające wgląd aplikacji w wydajność, obciążenie serwera, zużycie pamięci i inne.
WdrożeniaNarzędzia do zarządzania konfiguracją, infrastrukturą i wydaniami.
Powłoka chmurowaDostęp do powłoki z interfejsu wiersza polecenia (CLI) w przeglądarce.
Przechowywanie sekretówBezpieczne przechowywanie kluczy, tokenów, haseł, certyfikatów i innych tajemnic.
Kolejki wiadomościDynamicznie skalowani brokerzy wiadomości.
Uczenie maszynowe (ML)Ramy i narzędzia do głębokiego uczenia się dla badaczy danych.
IoTPodłączenie urządzenia i zarządzanie.