Zastanawiasz się, jakie zagadnienia mogą pojawić się na rozmowie kwalifikacyjnej na stanowisko DevOps? Skorzystaj z naszego praktycznego przewodnika, który pomoże Ci się przygotować.
Choć termin DevOps pojawił się już w latach 2007-2008, obecnie jest to jedna z najbardziej pożądanych ścieżek kariery w inżynierii oprogramowania. DevOps to filozofia, która wpływa na każdy aspekt procesu tworzenia i utrzymania oprogramowania, łącząc programowanie z operacjami.
Współpraca dwóch zespołów, deweloperskiego i operacyjnego, odbywa się na każdym etapie – od planowania i budowy, aż po monitorowanie i wprowadzanie ulepszeń. Jeśli rozważasz pracę jako inżynier DevOps, poniżej znajdziesz najczęściej zadawane pytania, z którymi możesz się spotkać.
Co kryje się pod pojęciem DevOps?
DevOps to skrót od Development i Operations, oznaczający połączenie rozwoju i operacji. To podejście w inżynierii oprogramowania, które integruje zespoły programistyczne i operacyjne, dążąc do automatyzacji wszystkich etapów projektu. Zespół DevOps skupia się na efektywnym zarządzaniu zasobami, otwartej komunikacji i ścisłej współpracy.
Jakie etapy wyróżniamy w metodyce DevOps?
- Ciągły rozwój (Continuous Development). To faza projektowania i pisania kodu.
- Ciągła integracja (Continuous Integration). W tym etapie programiści łączą różne elementy kodu, dbając o jego spójność.
- Ciągłe testowanie (Continuous Testing). Jest to zaplanowany i zautomatyzowany etap, który weryfikuje jakość oprogramowania.
- Ciągłe wdrażanie (Continuous Deployment). Faza ta zapewnia płynne wprowadzanie zmian, nie zakłócając działania aplikacji.
- Ciągłe monitorowanie (Continuous Monitoring). Etap ten ma na celu ocenę ogólnej wydajności i niezawodności aplikacji.
- Ciągła informacja zwrotna (Continuous Feedback). Analiza zgłoszeń i opinii użytkowników końcowych pozwala na identyfikację problemów i potrzeb.
- Ciągłe operacje (Continuous Operations). Umożliwia deweloperom tworzenie ulepszonych wersji produktu i szybkie reagowanie na pojawiające się trudności.
Jakie korzyści przynosi wdrożenie DevOps?
- Szybsze i efektywniejsze wprowadzanie produktów na rynek.
- Zwiększona skalowalność systemów.
- Szybkie rozwiązywanie problemów.
- Optymalne wykorzystanie dostępnych zasobów.
Jakie kluczowe wskaźniki efektywności (KPI) stosuje się w DevOps?
- Częstotliwość wdrażania (Deployment Frequency).
- Wielkość zmian (Change Volume).
- Czas wdrożenia (Lead Time for Changes).
- Wskaźnik nieudanych wdrożeń (Failed Deployments Rate).
- Czas wykrycia awarii (Mean Time To Detection).
- Współczynnik defektów (Defect Escape Rate).
Czym różni się DevOps od Agile?
DevOps to kultura organizacyjna, która wspiera współpracę między wszystkimi członkami zespołu zaangażowanymi w tworzenie i utrzymanie oprogramowania.
Agile to metodyka programowania, która ma na celu zwiększenie produktywności zespołów i dostarczanie kolejnych wersji oprogramowania w oparciu o zmieniające się wymagania.
Jaką rolę pełni AWS w DevOps?
AWS oferuje zbiór elastycznych usług, które ułatwiają firmom szybkie i niezawodne tworzenie aplikacji. Usługi AWS upraszczają proces wdrażania kodu, zarządzania infrastrukturą, automatyzacji wydań oprogramowania oraz monitorowania wydajności systemów.
Do czego służy SSH?
SSH (Secure Shell) to protokół, który umożliwia bezpieczne połączenie między komputerami. SSH oferuje między innymi: silne uwierzytelnianie, szyfrowanie, integralność połączenia, stabilność oraz bezpieczeństwo.
Co oznacza ciągła integracja?
Ciągła integracja umożliwia programistom scalanie ich kodu w centralnym repozytorium. Kod ten jest następnie automatycznie kompilowany i testowany.
Co kryje się pod pojęciem zarządzania konfiguracją?
Jest to proces inżynierii systemowej, mający na celu zapewnienie i utrzymanie spójności wydajności systemu/produktu oraz atrybutów funkcjonalnych i fizycznych w trakcie całego cyklu życia.
Czym jest ciągłe testowanie?
To zaplanowany i zautomatyzowany proces testowania aplikacji podczas jej rozwoju.
Co to jest Git?
Git to darmowe narzędzie do zarządzania kodem źródłowym o otwartym kodzie. Sprawdza się zarówno w małych, jak i dużych projektach.
Jakie są podstawowe polecenia Gita?
git clone <https://nazwa-linku-do-repozytorium>
git branch <nazwa-gałęzi>
git checkout <nazwa-twojej-gałęzi>
git add <plik>
git commit -m "wiadomość zatwierdzenia"
git push <zdalne> <nazwa-gałęzi>
git pull <zdalne>
Wyjaśnij różnicę między git merge i git rebase.
Polecenie `git merge` umożliwia połączenie różnych gałęzi Gita, zachowując historię zmian każdej z nich.
Polecenie `git rebase` pozwala zintegrować zmiany z jednej gałęzi do drugiej, modyfikując przy tym historię zatwierdzeń.
Jaka jest różnica między git fetch a git pull?
`Git fetch` informuje Gita o potrzebie pobrania najnowszych metadanych ze zdalnego repozytorium, ale nie przenosi plików, a jedynie weryfikuje zmiany.
`Git pull` weryfikuje i przenosi zmiany ze zdalnego repozytorium do lokalnego projektu.
Co to jest konflikt scalania?
Konflikty scalania powstają, gdy scalane są dwie gałęzie z konkurencyjnymi zmianami. Zazwyczaj dzieje się tak, gdy różni programiści modyfikują ten sam wiersz kodu lub plik.
Co to jest kontrola wersji i jakie są jej rodzaje?
Kontrola wersji (kontrola źródła) to proces śledzenia i zarządzania zmianami w kodzie oprogramowania.
Wyróżniamy dwa główne rodzaje kontroli wersji:
- Scentralizowane – posiadają jedną centralną kopię kodu źródłowego na serwerze, a wszystkie zmiany są wprowadzane do tej kopii. Przykłady to Subversion (SVN) i Perforce.
- Rozproszone (DVCS) – nie mają centralnego serwera, na którym przechowywane są wszystkie pliki projektu. Przykłady to Git i Mercurial.
Jakie korzyści płyną z używania kontroli wersji?
- Zwiększa efektywność i elastyczność programistów.
- Zapewnia pełną historię każdej zmiany w projekcie/pliku.
- Ułatwia identyfikację zmian i ich autorów.
- Wspomaga zarządzanie scalaniem i rozgałęzieniem.
- Umożliwia pracę zespołową.
Co oznacza rozgałęzienie?
Rozgałęzienie to tworzenie oddzielnej/nowej wersji głównego repozytorium. Gałęzie pozwalają pracować nad różnymi aspektami projektu, nie wpływając na główną gałąź.
Co to są strategie rozgałęzień?
Strategie rozgałęzień to metodologie stosowane przez zespoły programistyczne podczas tworzenia, scalania i wdrażania kodu. Zapewniają one, że błędy są naprawiane w gałęziach przed scaleniem ich z głównym projektem.
Co to jest testowanie automatyczne i jak je zaimplementować w DevOps?
Testy automatyczne to metoda automatycznego przeglądania i sprawdzania poprawności kodu. Mają one na celu ocenę, czy spełnione są standardy jakości w zakresie funkcjonalności, stylu kodu oraz doświadczenia użytkownika.
Testy automatyczne realizowane są przy pomocy narzędzi takich jak Selenium i Katalon.
Czym jest Jenkinsfile?
Jenkinsfile to plik tekstowy, w którym definiuje się potok Jenkinsa. Jest on przechowywany w repozytorium kontroli źródła. Umożliwia śledzenie historii zmian, przegląd kodu i iterację w potoku oraz zapewnia jedno źródło informacji o potoku.
Wyjaśnij architekturę Jenkinsa.
Jenkins ma architekturę typu „master-slave”, gdzie jeden „master” zarządza wieloma „slave”. Dzięki temu Jenkins może wykonywać testy w różnych środowiskach, a wyniki są zbierane i łączone w węźle master w celu monitorowania.
Jakie są najpopularniejsze wtyczki Jenkinsa?
- Wtyczka Blue Ocean.
- Wtyczka Mailer.
- Wtyczka Git.
- Wtyczka Jira.
- Wtyczka Docker.
- Wtyczka integracji Maven.
- Wtyczka Kubernetes.
- Wtyczka SonarQube.
- Wtyczka Amazon EC2.
Co to jest Selenium IDE?
Selenium IDE to narzędzie, które rejestruje interakcje przeglądarki dla przypadków testowych. W zintegrowanym środowisku programistycznym Selenium można ustawiać punkty przerwania oraz sprawdzać i wstrzymywać zmienne w przypadku wystąpienia błędów.
Jakie są różne komponenty Selenium?
Jakie typy testów można przeprowadzać w Selenium?
- Testy end-to-end.
- Testy regresyjne.
- Testy systemowe.
- Testy wydajnościowe.
- Testy kompatybilności.
Jakie wyjątki mogą wystąpić w Selenium?
- ElementNotSelectableException.
- NoAlertPresentException.
- InvalidSelectorException.
- NoSuchSessionException.
- StaleElementReferenceException.
- NoSuchWindowException.
- NoSuchFrameException.
- NoSuchElementException.
- Wyjątek limitu czasu.
- ElementNotVisibleException.
Czym różnią się driver.close() i driver.quit() w WebDriver?
Polecenie `driver.close()` zamyka okno przeglądarki, które jest aktualnie aktywne. Jeśli otwarta jest tylko jedna przeglądarka, zamyka całą sesję przeglądarki.
Polecenie `driver.quit()` zamyka całą sesję przeglądarki, w tym wszystkie okna, karty i wyskakujące okienka.
Czym jest Dockerfile?
Dockerfile to plik tekstowy zawierający polecenia, które służą do budowania obrazu Dockera.
Jakie są różnice między obrazami Docker a kontenerem Docker?
Obrazy Docker to szablony tylko do odczytu, zawierające kod źródłowy, narzędzia, biblioteki, zależności i inne pliki, które są niezbędne do uruchomienia aplikacji w dowolnym systemie operacyjnym lub platformie.
Kontener Docker to środowisko uruchomieniowe dla obrazu Dockera.
Omów architekturę Dockera.
Docker działa w architekturze klient-serwer i obejmuje Docker Client, Docker Host i Docker Registry.
Docker Client używa interfejsów API REST i poleceń do komunikacji z serwerem (Docker Daemon).
Docker Client wykorzystuje interfejs CLI do wykonywania poleceń:
docker build
docker pull
docker run
- Docker Host zapewnia środowisko do uruchamiania aplikacji. Składa się z demona Dockera, magazynu danych, obrazów, kontenerów i sieci.
- Docker Registry przechowuje i zarządza obrazami Dockera.
Jakie platformy chmurowe obsługują Dockera?
Platformy, które umożliwiają hosting Dockera to m.in.:
Co to jest Nagios?
Nagios to narzędzie do monitorowania infrastruktury IT, które zapewnia prawidłowe działanie procesów biznesowych, systemów, usług i aplikacji.
Jak działa Nagios?
- Monitorowanie: Nagios monitoruje protokoły sieciowe, metryki systemowe, aplikacje, infrastrukturę sieciową, usługi i serwery.
- Alarmowanie: Nagios wysyła alerty w przypadku awarii. Alerty mogą być wysyłane przez SMS, e-mail lub niestandardowy kod.
- Reagowanie: Zespół IT potwierdza alerty i podejmuje odpowiednie działania.
- Raportowanie: Generowane są raporty zawierające historię powiadomień, przestojów i reakcji na alerty.
- Konserwacja: Planowane przestoje zapobiegają wysyłaniu alertów podczas konserwacji.
Jakie wtyczki można wykorzystać w Nagios?
- Oficjalne wtyczki Nagios, opracowywane i utrzymywane przez oficjalny zespół.
- Niestandardowe wtyczki, tworzone przez osoby lub firmy w celu zaspokojenia specyficznych potrzeb.
- Wtyczki społecznościowe, rozwijane przez społeczność Nagios.
Jak Nagios radzi sobie z wirtualizacją?
Nagios umożliwia monitorowanie różnych wskaźników na różnych platformach wirtualizacyjnych, takich jak Xen, Amazon EC2, VMware i Microsoft Virtual PC.
Jak Nagios pomaga w monitorowaniu?
Nagios używa agentów, takich jak NRPE, check_mk lub SNMP, do zbierania statystyk na serwerze i wysyłania alertów, jeśli dane przekroczą predefiniowany próg.
Jakich numerów portów używa Nagios do monitorowania?
Nagios wykorzystuje porty 161 i 162 protokołu SNMP.
Co to jest analizator sieci Nagios?
Analizator sieci Nagios to narzędzie do analizy danych sflow, które pozwala użytkownikom na proaktywne rozwiązywanie problemów, awarii i zagrożeń bezpieczeństwa, zanim wpłyną na działalność firmy. Oferuje on zaawansowany wgląd w ruch sieciowy i infrastrukturę IT.
Jakie zmienne wpływają na dziedziczenie i rekursję w Nagios?
- `name` – nazwa szablonu, który może dziedziczyć zmienne/właściwości obiektu.
- `use` – określa nazwę obiektu szablonu, z którego chcemy dziedziczyć zmienne/właściwości.
- `register` – wskazuje, czy nazwa obiektu szablonu powinna być zarejestrowana w Nagios.
Co to jest Puppet?
Puppet to narzędzie open-source do zarządzania konfiguracją oprogramowania i jego wdrażania.
Co to jest manifest Puppet?
Manifest Puppet to plik zawierający kod w języku Puppet, który opisuje konfigurację zasobów.
Czym jest kod Puppet?
Kod Puppet jest deklaratywny, co oznacza, że opisuje pożądany stan systemu, a nie kroki, które należy wykonać, aby go osiągnąć.
Co to jest Chef?
Chef to narzędzie do zarządzania konfiguracją, które traktuje infrastrukturę jako kod. Narzędzie to koncentruje się na pisaniu kodu zamiast procesów manualnych.
Jak działa Chef?
Praca z Chefem rozpoczyna się, gdy administratorzy systemu lub programiści określą zadania do zautomatyzowania. Następnie tworzone są książki kucharskie i przepisy (małe programy napisane w języku specyficznym dla domeny) i testowane przy użyciu narzędzi takich jak Test Kitchen, ChefSpec i Foodcritic.
Gdy kod jest gotowy, książki kucharskie i przepisy są wdrażane na serwerze Chef za pomocą narzędzi wiersza poleceń knife i chef. Proces wdrożenia obejmuje serwer Chef, stacje robocze i węzły. Możesz wybierać spośród tysięcy gotowych szablonów książek kucharskich i dostosowywać je do swoich potrzeb.
Podsumowanie
Zgodnie z danymi Glassdoor, średnia roczna pensja inżyniera DevOps w USA wynosi 104 281 dolarów. Pomimo tego, że DevOps to stosunkowo nowa ścieżka kariery, coraz więcej firm poszukuje specjalistów w tej dziedzinie i publikuje różnorodne kursy, które pomagają zdobyć niezbędne umiejętności. Powyżej przedstawiliśmy kilka przykładowych pytań, które możesz spotkać na rozmowie kwalifikacyjnej na stanowisko DevOps.
Zachęcamy również do zapoznania się z kursami online, które pozwolą Ci zgłębić wiedzę na temat DevOps.