Udostępnij za pośrednictwem


Jak firma Microsoft obsługuje niezawodne systemy za pomocą metodyki DevOps

Firma Microsoft obsługuje złożone platformy online od najwcześniejszych dni komercyjnego Internetu. Po drodze ewoluowaliśmy znaczący zestaw rozwiązań, aby zapewnić dostępność systemów, kondycję i bezpieczeństwo. Te praktyki są częścią większej inicjatywy mającej na celu utrzymanie i ulepszanie kultury witryn na żywo.

Kultura witryny na żywo

Kultura witryn na żywo koncentruje się na organizacji, aby określić priorytety środowiska i niezawodności witryny na żywo nad wszystkim innym. W końcu klienci mogą dość łatwo przenosić się między dostawcami usług w dzisiejszych czasach przy użyciu usług w chmurze i internetowych, co znacznie zwiększa znaczenie zaufania klientów. Witryna na żywo musi być zawsze dostępna i działać zgodnie z obietnicą dla klientów.

Istnieją różne czynniki, które przyczyniają się do pomyślnej kultury witryny na żywo.

Diagram of Microsoft's live site culture.

Pierwsza witryna na żywo

Pierwsze wprowadzenie środowiska witryny na żywo jest integralną częścią udanej platformy. Zespoły nie mogą skupić się na nowych, błyszczących funkcjach i lekceważyć alei, w której te funkcje są prezentowane użytkownikom. Opieramy się na bezpiecznych rozwiązaniach wdrażania, które pomagają zapewnić naszym klientom nieprzerwany dostęp do platformy. Może to być szczególnie skomplikowane, jeśli chodzi o wydawanie aktualizacji usługi w wersji bez przestojów.

Kontrolowanie ekspozycji za pomocą flag funkcji

W miarę wdrażania za pośrednictwem pierścieni i etapów kontrolowanie ekspozycji za pomocą flag funkcji od czasu do czasu odkrywamy problem w środowisku produkcyjnym. Pomimo wszystkich naszych automatyzacji i przeglądów, rzeczy czasami się zdarzają. Jak mówią, nie ma miejsca jak produkcja!

Zazwyczaj monitorowanie kondycji i telemetria ostrzegają nas, gdy coś nie jest w porządku. Deweloper może utworzyć gałąź wyłączoną main, wprowadzić poprawkę i zażądać jej ściągnięcia do programu main. Utrzymywanie tego samego ogólnego przepływu pracy oznacza, że deweloperzy nie muszą przełączać kontekstu ani uczyć się innego procesu zmiany kodu.

Aby rozwiązać problem z wdrożeniem poprawek, wymagany jest jeszcze jeden krok, który polega na wyczernianiu zmiany w gałęzi wydania. Uruchamiamy wdrożenie poprawek z bieżącej gałęzi wydania każdego dnia powszedniego rano, ale możemy to zrobić również na żądanie w przypadku pilnych poprawek. Poprawka rzeczywiście uderza w produkcję z gałęzi wydania najpierw. Jednak ponieważ programujemy w main pierwszej kolejności, wiemy, że nie będzie to regresji następnego przebiegu, gdy zostanie utworzona nowa gałąź wydania na podstawie mainelementu .

Wydania produktów lokalnych są w dużej mierze takie same, choć bez pierścieni i etapów wdrażania. Ponadto, ponieważ przeprowadzamy więcej testów ręcznych na różnych konfiguracjach i kształtach danych, istnieje dłuższy ogon między cięciem gałęzi wydania i umieszczeniem produktu w rękach klientów.

Bezpieczeństwo należy podjąć osobiście

Celem jest uczynienie luk w zabezpieczeniach prawdziwymi i osobistymi. Zapewnia to, że ludzie naprawdę dbają. Korzystamy również z gier wojennych, aby znaleźć i rozwiązać zagrożenia bezpieczeństwa w całym systemie, niezależnie od tego, czy są w kodzie, czy nie. Gdy czerwony zespół może pokazać, że dostał się do kodu, zamieniając okno dialogowe do góry nogami, naprawdę motywuje właściciela kodu do rozwiązania problemu i upewnij się, że nie dzieje się to ponownie nigdzie indziej. Taka konkurencja jest o wiele bardziej realna i osobista niż ostrzeżenie analizy statycznej o potencjalnym ryzyku XSS. Tworzymy tego rodzaju kulturę i dynamikę poprzez gry wojenne i inne ćwiczenia bezpieczeństwa. Osoby szczycić się włamaniem do kodu siebie lub jest w stanie zablokować próby. Spowoduje to wprowadzenie bezpiecznej kultury kodu.

Nie możemy zaplanować każdego wektora ataku, ale możemy założyć, że dojdzie do naruszenia zabezpieczeń i zaplanujemy, jak szybko możemy zareagować na to naruszenie. Wiele prac nad bezpieczeństwem było wokół tego dla naszych zespołów.

Wreszcie ludzie popełniają błędy. Czasami są leniwi i robią takie rzeczy jak przechowywanie haseł w udziałach plików. Możemy im nie powiedzieć i możemy wysłać je do szkolenia zabezpieczeń i możemy zrobić różne inne rzeczy. Większość ludzi uczy się, ale wymaga tylko jednej osoby, aby złamać system. Możesz mieć różnego rodzaju listy najlepszych rozwiązań, ale jeśli nie robisz tego rzeczywistego, musisz założyć, że ludzie będą popełniać błędy. Wymaga to pewnego poziomu nadzoru, aby zapewnić przestrzeganie krytycznych procesów.

Inżynieria jest czymś więcej niż partnerem ds. operacji

Dowiedzieliśmy się na początku, aby witryna na żywo stanowiła ważną część obowiązków zespołu inżynieryjnego. To było ogromne dla nas, ponieważ w przeszłości jedna osoba mogła coś wdrożyć, opuścić weekend i wrócić w poniedziałek, aby znaleźć 900 problemów klientów, z którymi dział pomocy technicznej i zespoły operacyjne zajmowały się przez cały weekend. Ważne jest, aby inżynieria płaciła cenę za problemy z witryną na żywo. W przeciwnym razie nie ma zachęty do tworzenia systemów, które unikają tych problemów. Kiedy zadzwonisz o 2 rano, aby naprawić coś, co złamałeś, pamiętasz.

W miarę rozwoju tej odpowiedzialności , witryna Live jest najważniejszą rzeczą, którą zrobiliśmy , stała się mantrą całego zespołu. Jest to środowisko klienta, które mają teraz i nie tylko podatek. To jest coś, na co ludzie liczą od nas i jesteśmy z tego dumni. Musi to być cecha wyróżniająca naszego produktu.

Telemetria produkcyjna to puls twojej usługi

Aby przetrwać w szybko realizowanym świecie, w którym praktycznie wszystko może pójść źle, potrzebujemy świetnych systemów alertów. Niezaakceptowalne alerty, nadmiarowe alerty lub przytłaczające woluminy alertów sprawiają, że ignorujesz wszystkie alerty. Łatwo jest utworzyć zbyt wiele alertów, więc proces jest naprawdę destyluje do prostego pytania: Czy ten alert można wykonać akcję? Gwarantuje to, że angażujemy się w odpowiednie problemy klientów i jak najszybciej je obsługujemy.

Gdy zespół inżynierów zerował w zakresie alertów z możliwością działania, zauważyli, że wiele problemów, które pojawiają się, zwłaszcza w środku nocy, mają tendencję do podobnych poprawek, przynajmniej tymczasowo. Doprowadziło to do skupienia się na systemach, które były lepsze w pracy w trybie failover i samonaprawieniu. Teraz występują problemy, zgłaszaj alerty, a następnie naprawiaj się wystarczająco dobrze, aby zespół inżynierów czekał do rana, aby rozwiązać problem. Nie stałoby się to, gdyby zespół inżynierów po prostu wypchnął bity, które trzymały innych ludzi w nocy. Teraz pracują nad zrównoważeniem tych ulepszeń w ramach nie tylko szybkości funkcji, ale także szybkości inżynierii.

Podsumowanie

Wdrożenie kultury witryny na żywo miało wpływ na sposób, w jaki firma Microsoft tworzy i dostarcza oprogramowanie. Dzięki dokonaniu przez zespoły inżynieryjne kluczowej części zabezpieczeń i operacji jakość naszego kodu i środowiska użytkownika końcowego znacznie się poprawiła. Bycie pełnym uczestnikiem operacji sprawiło, że inżynieryjnie był kluczowym uczestnikiem projektu, co spowodowało, że systemy zostały zaprojektowane pod kątem lepszych operacji.