Nasza strona używa cookies. Dowiedz się więcej o celu ich używania i zmianie ustawień w przeglądarce. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

DevOps to must-have każdej firmy IT

Dominik Olszewski Konsultant IT
Zobacz, kim jest i czym zajmuje się Inżynier DevOps, jakie umiejętności powinien posiadać oraz dlaczego tak wiele firm z branży nie wyobraża sobie już pracy bez osób piastujących tę funkcję?
DevOps to must-have każdej firmy IT

Dziś większość firm IT na rynku nie wyobraża sobie pracy bez wsparcia inżyniera DevOps. Stanowisko, które niegdyś było rzadkością, obecnie pojawia się nawet w relatywnie niewielkich zespołach deweloperskich. Kim jednak jest osoba pracująca na tej pozycji, jakie umiejętności powinna posiadać oraz dlaczego tak wiele przedsiębiorstw z branży nie wyobraża sobie już pracy bez osób piastujących tę funkcję?


O samej definicji „DevOps” napisano wiele, a tak naprawdę pojawienie się specjalistów w tym zakresie ma dość prozaiczne podstawy. Niegdyś rynek wytwarzania oprogramowania, mówiąc ogólnikowo, można było podzielić na deweloperów frontend i backend, a także administratorów zarządzających infrastrukturą informatyczną danej firmy. W ten oto sposób na tych ostatnich spoczywał obowiązek utrzymywania i zarządzania serwerem/-ami.


Z czasem podejście do wytwarzania oprogramowania uległo zmianie. Zespoły się rozproszyły, infrastrukturę zaczęto dzierżawić, a pojęcie „aplikacje webowe” stało się codziennością w branży. Dodatkowo optymalizuje się dosłownie wszystko. Pracę, procesy czy infrastrukturę właśnie. Wygrywa ten, kto dostarczy soft szybciej i lepszej jakości (choć z tym bywa różnie). Często już nawet koszty nie są tak istotne (choć czasem dla nich poświęca się jakość właśnie). Programiści zajmują się programowaniem (i pisaniem testów jednostkowych), w większych zespołach pojawili się testerzy automatyczni i manualni, bezpieczeństwo testują pentesterzy, mamy PM-ów czy Scrum Masterów. Wraz z pojawieniem się nowych narzędzi i zmianą sposobu prowadzenia projektów nieunikniona stała się też ewolucja stanowiska administratora (sama rola administratora oczywiście pozostała). I tak oto zrodził się DevOps.


Kim więc jest „DevOps”? W telegraficznym skrócie jego rolę można zamknąć w słowie CAMS. Culture, Automation, Measurement, Sharing. Kultura, ponieważ ma usprawniać relację programistów i adminów. Automatyzacja od automatyzacji procesów wytwarzania, testowania czy deploymentu. Pomiar od monitorowania i analizy komponentów czy danych. Sharing od dzielenia się swoją pracą z różnymi zespołami. Piękna definicja, ale co właściwie trzeba potrafić, by zostać DevOpsem?


Po pierwsze: programowanie. Tu zdania są podzielone. Są tacy, którzy twierdzą, że umiejętność programowania nie jest do niczego potrzebna. Są oczywiście też tacy, którzy się z tym nie zgadzają. Ile osób, tyle opinii. Moim zdaniem podstawowa znajomość jednego z popularnych języków programowania jest zdecydowanie mile widziana na tym stanowisku, bo jak zrozumieć procesy zachodzące w wytwarzaniu oprogramowania, nie rozumiejąc na czym samo programowanie polega?


Po drugie: praktyczne umiejętności związane z samą logiką systemów operacyjnych. Zarządzanie procesami, wirtualizacja, wątki, systemy plików. Wszystko to i wiele więcej stanowi niezbędne podstawy w pracy inżyniera DevOps.


Kolejna kwestia to dobra znajomość Terminala. Często w ogłoszeniach pojawia się „bash”. To nic więcej jak powłoka systemu *nixowego, w której można pisać skrypty automatyzujące pewne procesy właśnie z poziomu Terminala. DevOps powinien również znać narzędzia do monitorowania sieci i systemu z jego poziomu, dbać o wydajność czy skompilować oprogramowanie ze źródeł (magicznie zamieniać kod w aplikacje).


Sieci. Temat rzeka. Dziś wszystko działa za pośrednictwem Internetu. HTTP, HTTPS, DNS, SSL – te wszystkie pojęcia nie powinny być mu obce. Podobnie jak kwestie związane z Proxy czy konfiguracją zapory sieciowej. Bez tych umiejętności — po otrzymaniu oprogramowania gotowego do publikacji online — całość po prostu by nie zadziałała.


Web Server. Wpisując adres WWW w wyszukiwarkę, wysyła ona zapytanie do serwera. Obecnie robi to najczęściej za pośrednictwem protokołu HTTP/HTTPS. Za pomocą DNS adres tekstowy (np. www.codementors.pl) jest zamieniany na ciąg znaków, dzięki którym wiadomo, gdzie wysłać zapytanie, żeby właściwy serwer nam odpowiedział i w naszej przeglądarce wyświetliła się strona. Na takim serwerze musi być zainstalowane oprogramowanie Web Server. Tu pojawiają się pojęcia takie jak Apache, Nginx czy Tomcat.


Mistyczne Infrastructure as Code. O ile poprzednie zagadnienia nie są obce również adminom, tu wchodzimy stricte na grunt DevOpsów. Dawniej było tak, że firma postawiła w piwnicy serwer, na którym była zainstalowana np. dystrybucja systemu GNU/Linux. Na niej działały usługi niezbędne danej firmie do prawidłowego funkcjonowania. Logika była taka, że im więcej serwerów, tym większa wydajność, a więc – zamiast wszystkich usług na jednym serwerze – na każdym serwerze mogła działać jedna usługa lub wręcz jeden konkretny proces. Oczywiście usługi mogły się też powtarzać. I to tyle. Obecnie logika jest inna. Nic nie stoi na przeszkodzie, by na jednym fizycznym serwerze działało wiele systemów operacyjnych jednocześnie (wirtualizacja) lub by odpalić wiele takich samych usług skonfigurowanych pod zupełnie różne potrzeby i współdzielących zasoby jednego systemu operacyjnego (kontenery). W zarządzaniu (orkiestracji) kontenerami pomoże nam np. Kubernetes. Co więcej, o logice serwerów myśli się raczej nie w ramach pojedynczej maszyny, ale pojedynczej instancji. Nic nie stoi na przeszkodzie, by jeden serwer logiczny działał na wielu fizycznych maszynach. Proste? Super!


Wróćmy teraz do tych instancji. Załóżmy, że chcemy je replikować. Tu z pomocą przychodzi Ansible. To narzędzie pozwala nam dokładnie odtworzyć konfigurację naszej instancji w innym miejscu (na innym „serwerze”). Nie mówimy tu o prostym automatycznym zainstalowaniu czegoś, a o sprawnym powieleniu zadanego stanu instancji i weryfikacji poprawności całego procesu. Cały ten stan przechowywany jest w formie kodu, dzięki temu można nim zarządzać jak kodem aplikacji właśnie.


Biorąc pod uwagę fakt, że serwery wyszły z piwnic, ważnym elementem wiedzy DevOpsa jest znajomość znanych usług chmurowych, takich jak: AWS, Google Cloud czy Azure. Sprawne poruszanie się po interfejsie jest tu kluczowe, przy czym każda firma raczej wykorzystuje jednego dostawcę naraz, tym samym nie jest konieczna doskonała znajomość Azure w miejscu, gdzie wykorzystywany jest AWS.


W rolę DevOpsa wpisane są nieodzownie jeszcze dwa kluczowe pojęcia. CI/CD, czyli Continuous Integration i Continuous Deployment. Narzędzi wspierających jest tu kilka, jednym z nich jest np. Jenkins. W skrócie chodzi tu o to, że obecnie nad jedną aplikacją pracuje przeważnie kilku lub więcej programistów. Mogą oni przecież wprowadzać zmiany w tych samych plikach aplikacji jednocześnie. Dzięki serwerowi CI każda wysłana przez dewelopera zmiana jest sprawdzana pod względem zgodności ze zmianami pozostałych programistów pracujących nad tymi samymi plikami. Dzieje się to automatycznie. Pojęcie automatyzacji pojawia się również w przypadku CD, którego to zastosowanie ma usprawnić publikowanie oprogramowania dla użytkowników końcowych (wdrażania na produkcję).


Zdecydowana większość zagadnień poruszona powyżej została uproszczona na potrzeby tekstu. Wniosek jest jednak jeden – rola specjalisty DevOps to przede wszystkim optymalizacja. Optymalizacja to czas, a czas to pieniądz. W branży mówi się często, że firmy dzielą się na dwie grupy: te, które jeszcze nie mają w swoim zespole osoby na stanowisku DevOps, oraz takie, które nie wiedzą, jak mogły dotąd nie mieć w swoim zespole osoby na stanowisku DevOps.

Zobacz też: jak skutecznie wdrożyć sieć urządzeń i usprawniać system dzięki procesom oraz narzędziom DevOps na przykładzie branży Retail

By jednak dowiedzieć się więcej o tym zagadnieniu, 25 września zapraszamy do Inkubatora Starter w Gdańsku na spotkanie IT for HR Meetup vol. 3 „DevOps”, na którym dowiecie się, jak wygląda praca DevOpsa, oraz zobaczycie, jak działają narzędzia wykorzystywane w jego codziennej pracy. Organizatorem wydarzenia są Codementors oraz Plenti. Więcej o wydarzeniu: https://itforhrmeetup.pl

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 120 tysiącami naszych czytelników

Dowiedz się więcej