DevOps staje się coraz bardziej popularnym sposobem budowania i wdrażania aplikacji, co przełożyło się na rosnące zapotrzebowanie na specjalistów DevOps.
W tym artykule omówimy niektóre z najczęściej zadawanych pytań do wywiadów DevOps i odpowiedzi na nie. Używanie tych pytań jako podstawowych do nauki może zwiększyć twoje szanse na zatrudnienie, a jeśli jesteś rekruterem, mogą ci pomóc w procesie rekrutacji.
Spis treści:
Często zadawane pytania i odpowiedzi podczas wywiadu DevOps
Czym jest dla Ciebie DevOps?
DevOps to podejście mające na celu usprawnienie pracy w całym cyklu życia oprogramowania. Proces DevOps jest przedstawiony jako nieskończona pętla, składająca się z etapów planowania, kodowania, budowania, testowania, zwalniania, wdrażania, obsługi i monitorowania.
DevOps wpływa na cykl życia aplikacji na wszystkich etapach planowania, opracowywania, dostarczania i eksploatacji. Każda faza zależy od innych, a fazy nie są specyficzne dla roli. W prawdziwej kulturze DevOps każda rola jest do pewnego stopnia zaangażowana w każdą fazę.
Dlaczego DevOps jest ważny?
Zespoły, które stosują podejście DevOps, zwykle szybciej wykonują swoje projekty. W ten sposób unika się błędów komunikacyjnych, ułatwiając szybkie wdrażanie ulepszeń i innych niezbędnych zmian. Podejście DevOps zachęca do większej współpracy między zespołami programistycznymi i operacyjnymi, gdzie cele wszystkich z nich są bardziej wyrównane. Możesz podsumować niektóre korzyści w następujący sposób:
- Udoskonalona komunikacja
- Praca zespołowa i spójność
- Lepsza współpraca
- Szybsza dostawa produktów wysokiej jakości
- Zmniejszona złożoność i szybkie rozwiązywanie problemów
- Większa skalowalność i elastyczność w dodawaniu nowego kodu
- Bardziej stabilne środowiska pracy
- Większa automatyzacja
- Redukcja kosztów i wykorzystanie zasobów
- Bezpieczeństwo dzięki zintegrowanym i zautomatyzowanym narzędziom
Jakie są codzienne zadania DevOps?
Niektóre z codziennych zadań, o których możesz wspomnieć, to:
- Zapewnij ciągłą integrację i wdrażanie
- Przydziel i komunikuj zadania do wykonania
- Projektuj i zamawiaj protokoły badań
- Monitorowanie i zbieranie metryk infrastruktury i aplikacji
- Analiza wyników uzyskanych w każdej fazie rozwoju
- Zmniejsz wskaźnik błędów i czas odzyskiwania w przypadku błędów
- Skróć czas dostawy
Jak DevOps pomaga deweloperom?
Po wdrożeniu metodologii DevOps programiści nie muszą już czekać na informacje zwrotne od zespołu operacyjnego, aby naprawić błędy w swoim kodzie. Ale teraz mogą rozwiązywać te problemy szybciej, ponieważ mają ciągłe informacje zwrotne na temat swojego kodu.
Co to jest kontrola wersji?
Kontrola wersji to praktyka, która pozwala nam śledzić zmiany, które wprowadzamy w pliku lub zestawie plików w czasie, dzięki czemu można później pobrać określone wersje. Narzędzie do kontroli wersji pozwala nam łatwo śledzić postęp prac programistycznych i zapisywać różne wersje kodu źródłowego, aby w razie potrzeby wrócić do poprzedniej. Jednym z najczęściej używanych narzędzi na tym etapie tworzenia oprogramowania jest Git.
Co to jest CI/CD i jakie są jego zalety?
Ciągła integracja (CI)
CI łączy narzędzia i praktyki, które ułatwiają dostarczanie wysokiej jakości, szybkiego oprogramowania. W ten sposób eliminuje się wąskie gardła i unika się problemów technicznych w fazach uruchamiania.
Ciągłe dostarczanie (CD)
Ta praktyka automatyzuje dostarczanie zmian w kodzie, zapewniając, że kod może być szybko uzupełniony w środowisku produkcyjnym, a aplikacje działają poprawnie.
Ciągłe wdrażanie (CD)
W przeciwieństwie do ciągłego dostarczania, celem tej praktyki jest brak interwencji człowieka podczas wdrażania oprogramowania w środowisku produkcyjnym. Publikowanie nowego lub zmienionego kodu do produkcji jest zautomatyzowane.
CI/CD implementuje DevOps w całym cyklu życia aplikacji. Te praktyki pomagają poprawić produktywność na różnych etapach procesu tworzenia oprogramowania poprzez ich usprawnienie i automatyzację.
Co to jest ciągłe monitorowanie
Ciągłe monitorowanie to praktyka DevOps, która obejmuje monitorowanie, alertowanie i podejmowanie działań zarówno w kodzie, jak i infrastrukturze. Dzięki temu problem, który może pojawić się we wdrożeniu jest szybko wykrywany i identyfikowany, skracając czas rozwiązywania problemów.
Dlaczego ciągłe testowanie jest ważne?
Testowanie ciągłe to automatyzacja testów wcześnie, stopniowo i odpowiednio w potoku rozwoju. Jest niezbędny, ponieważ pozwala zapewnić jakość kodu. Błędy są wykrywane wcześnie, a informacja zwrotna o kodzie odbywa się szybciej.
Wyjaśnij kilka rodzajów testów stosowanych w DevOps?
Testy jednostkowe
Testują konkretny fragment kodu w izolacji. Testy jednostkowe nie mogą być połączone z bazą danych, korzystać z systemu plików, rozmawiać z systemami zewnętrznymi ani wchodzić w interakcje z komponentami systemu. Pozwala im działać szybko i otrzymujesz szybką informację zwrotną, jeśli zmiany zakłócą istniejącą funkcjonalność.
Testy komponentów
Testują duże grupy funkcji, aby móc zidentyfikować takie problemy. Zwykle są wolniejsze, wymagają bardziej złożonej konfiguracji i większej liczby połączeń we/wy z bazą danych, systemem plików lub innymi systemami.
Testy wdrożeniowe
Takie testy sprawdzają, czy wdrożenie zadziałało, innymi słowy, czy aplikacja jest poprawnie zainstalowana, skonfigurowana, ma dostęp do wszystkich potrzebnych usług i odpowiada.
Oprócz tego prowadzone są również testy eksploatacyjne i użytkowe. Aby dowiedzieć się więcej o testowaniu, zapoznaj się z artykułem o rodzajach testowania aplikacji.
Czym jest architektura mikroserwisów i czym różni się od architektury tradycyjnej?
Tradycyjna metoda pisania oprogramowania jest monolityczna. Oznacza to, że wszystkie funkcje aplikacji są zebrane w jednym bloku. W przypadku wystąpienia błędów lub konieczności aktualizacji, analizowany jest kod, który rządzi całym produktem.
Generuje zatrzymania, a nawet awarie i stanowi duże zagrożenie dla zachowania kodu. Dla klientów oznacza to straty i bóle głowy.
W architekturze mikrousług funkcje aplikacji reprezentują niezależnie opracowaną i zintegrowaną usługę. Komponenty są oddzielne, ale współpracują ze sobą, aby wykonać skorelowane zadania.
W ten sposób każda niezależna usługa działa bez ingerencji w pozostałe, co dotyczy również przypadków awarii. Jeśli funkcja ulegnie awarii, można ją dostosować bez narażania działania całej aplikacji.
Pojawiają się mikrousługi, które sprawiają, że metodyka DevOps jest jeszcze bardziej sprawna i wydajna, przyspieszając kompleksowe tworzenie i czyniąc aplikacje jeszcze bardziej skalowalnymi.
Czym jest infrastruktura jako kod?
Infrastructure as code to podejście do definiowania infrastruktury obliczeniowej i sieciowej, które wykorzystuje techniki zarządzania kodem źródłowym i jest traktowane jak każdy system oprogramowania.
Ten kod może być utrzymywany pod kontrolą źródła, aby umożliwić słyszalność i powtarzalność konstrukcji, z zastrzeżeniem praktyk testowych i pełnej dyscypliny ciągłego dostarczania.
Infrastructure as code opiera się na kilku praktykach:
- Użyj plików definicji
- Samodokumentowane systemy i procesy
- Wersja wszystkie elementy
- Ciągłe testowanie systemów i procesów
- Małe zmiany zamiast partii
- Utrzymuj dostępność usług w sposób ciągły
Narzędzia do automatyzacji kompilacji określają, w jaki sposób oprogramowanie powinno być budowane (jakie kroki należy wykonać i w jakiej kolejności) oraz jakie zależności są wymagane (jakie inne oprogramowanie musi być obecne, aby kompilacja zakończyła się sukcesem).
Niektóre narzędzia lepiej nadają się do projektów w określonych językach programowania, takich jak Maven i Apache’s Ant, które choć technologii mogą być używane z innymi językami, są najczęściej używane w projektach Java. Inne, takie jak Hudson czy Jenkins, mogą być szerzej wykorzystywane w różnych projektach.
Co to jest potok DevOps?
Potok DevOps to proces, który obejmuje kilka kroków przed wydaniem nowego oprogramowania. Może być stosowany we wszystkich fazach projektu, od integracji i testowania po dostawę i wdrożenie. Generalnie przechodzi przez następujące etapy i zespoły:
- Wizja produktu: określa cechy produktu;
- Zespół deweloperski: rozwija się iteracyjnie i przyrostowo;
- Obszar działania: wdraża i utrzymuje stabilne środowiska;
- Monitorowanie i informacja zwrotna: dążenie do generowania wartości i wykorzystania przez klienta.
Jakie są różne etapy potoku CI/CD?
Kroki składające się na potok CI/CD to kilka zgrupowanych zadań nazywanych etapem potoku. W skrócie są to:
- Kompilacja: etap kompilacji aplikacji;
- Test: etap, na którym testowany jest kod. Tutaj automatyzacja oszczędza czas i wysiłek;
- Uruchom: gdy aplikacja zostanie wysłana do repozytorium;
- Wdrożenie: kod jest wdrażany w środowisku produkcyjnym;
- Walidacja i zgodność: Możesz użyć narzędzi do weryfikacji bezpieczeństwa obrazu, takich jak Clair, aby zapewnić jakość swoich obrazów, porównując je ze znanymi lukami (CVE).
Są to najczęstsze etapy potoku DevOps. Jednak każda firma ma swoje specyficzne potrzeby i rurociąg.
Co oznacza wirtualizacja platformy i jakie są jej zalety?
Wirtualizacja platformy oznacza symulację całego systemu komputerowego w celu jednoczesnego uruchamiania wielu instancji systemów operacyjnych na jednej fizycznej maszynie.
W tej konfiguracji monitor maszyny wirtualnej (VMM) lub hiperwizor ma pełną kontrolę nad zasobami sprzętowymi maszyny fizycznej. Systemy operacyjne gościa działają na maszynach wirtualnych, którymi zarządza program VMM. Wirtualizacja środowiska polega na symulowaniu jednej lub więcej maszyn wirtualnych oraz połączeń sieciowych między nimi.
Wirtualizacja może na kilka sposobów pomóc skrócić czas poświęcany na wdrożenie i związane z nim ryzyko. Wykorzystanie maszyn wirtualnych we wdrożeniu jest ogromną pomocą w osiągnięciu efektywnego zarządzania konfiguracją w pionie i poziomie w Twoich systemach.
W szczególności zastosowanie wirtualizacji przynosi następujące korzyści:
- Szybka reakcja na zmieniające się wymagania
- Konsolidacja
- Normalizacja
- Łatwość utrzymania linii bazowych
Jaka jest różnica między kontenerami a maszynami wirtualnymi?
Zarówno kontener, jak i maszyna wirtualna współpracują z wirtualizacją i izolacją środowisk w celu promowania przetwarzania niezależnie od aplikacji. Mimo to Kontenery tworzą izolowane środowiska, w których różne aplikacje mogą działać jednocześnie, ponieważ podział dokonywany jest na poziomie dostępnych zasobów, takich jak pamięć i przetwarzanie. Z drugiej strony maszyna wirtualna umożliwia maszynie fizycznej umieszczenie innych z różnymi systemami operacyjnymi, dyskami twardymi i sprzętem niezależnie od oryginalnych.
Jaka jest główna różnica między platformą Docker a Kubernetes?
Docker jest jednym z najczęściej używanych narzędzi kontenerowych DevOps. Koncentruje się na przenośności aplikacji, umieszczaniu ich w pojemnikach technologicznych i systemach pakowania oraz przenoszeniu ich na różne platformy.
Jednocześnie Kubernetes to narzędzie do aranżacji kontenerów, które może grupować kontenery według logicznej kategoryzacji. Może być wdrażany na wielu komputerach poprzez zautomatyzowaną dystrybucję.
Przeczytaj więcej o Kubernetes vs. Doker.
Jakie są niektóre metryki telemetrii w DevOps?
- Poziom biznesowy: Przykłady obejmują liczbę transakcji sprzedaży, przychody z transakcji sprzedaży, rejestracje użytkowników, wskaźnik rezygnacji i wyniki testów A/B.
- Poziom aplikacji: Przykłady obejmują czasy transakcji, czasy odpowiedzi użytkownika i awarie aplikacji.
- Poziom infrastruktury: Przykłady obejmują ruch na serwerze WWW, obciążenie procesora i użycie dysku.
- Poziom oprogramowania klienckiego: Przykłady obejmują błędy aplikacji, awarie i mierzone przez użytkownika czasy transakcji.
- Poziom potoku wdrażania: Przykłady obejmują stan potoku kompilacji (czerwony lub zielony dla różnych zautomatyzowanych zestawów testów), zmianę terminów wdrożenia, częstotliwości wdrażania, promocje środowiska testowego i stan środowiska.
Jakich technologii używasz do DevOps?
To pytanie ma na celu poznanie technologii, których możesz użyć do wdrożenia kultury DevOps w organizacji. Niektóre z najpopularniejszych technologii, z których może korzystać DevOps, to:
- Ciągły rozwój: Git, SVN, Mercurial, CVS, Jira
- Ciągła integracja: Jenkins, Bamboo, Hudson
- Ciągły rozwój: Nexus, Archiwum, Tomcat
- Ciągłe wdrażanie: Puppet, Chef, Docker
- Ciągłe monitorowanie: Splunk, ELK Stack, Continuous Nagios
- Testowanie: Selenium, Katalon Studio
Opowiedz nam o swoim doświadczeniu w zarządzaniu projektami DevOps
Umiejętności DevOps to nie tylko wiedza techniczna i wymagają umiejętności ludzkich i menedżerskich często spotykanych wśród menedżerów, dyrektorów programów i kierowników projektów.
Niezbędna jest wiedza, jak zarządzać i wspierać zmiany, zapewnić bramę ułatwiającą przenoszenie nowych wersji kodu na stronę operacyjną, oceniać i monitorować różne platformy i narzędzia do mierzenia wydajności oraz analizować i udostępniać wyniki w celu poprawy przyszłych dostaw itp.
Podejdź do tego pytania metodologicznie i wyjaśnij swoją podróż w rozwiązywaniu złożonych problemów. Jak zamierzasz poprawić funkcjonowanie infrastruktury? Jak planujesz współpracować z programistami front, middle i back-office? Jakie narzędzia do monitorowania opanowujesz? Zastanów się również nad dzieleniem się swoimi doświadczeniami z rozwiązywaniem konfliktów w swoim zespole.
Aby dowiedzieć się więcej, możesz rozważyć zapisanie się na jeden z tych kursów DevOps.