Spis treści
Od programisty do DevOpsa
W przypadku programowania wybierasz język, który wydaje się najbardziej interesujący i dostosowany do tego, co chcesz robić, albo… prosty w nauce. Kiedy poznasz podstawy składni, jedyne, co cię ogranicza, to twoja własna wyobraźnia. Na początku zastanawiasz się: „Co by tu napisać?”. Może kalkulator, może kółko i krzyżyk albo coś bardziej zaawansowanego z obsługą bazy danych lub zewnętrznych bibliotek?
Im więcej zrealizowanych projektów, tym więcej napotkanych wyzwań, a twoje umiejętności rosną z każdą kolejną linią kodu. Czujesz się biegle w składni, korzystasz już z zewnętrznych bibliotek, a na rozmowach o pracę możesz pochwalić się owocem swojej dotychczasowej nauki w postaci działających programów. Na kolejnym etapie zaczynasz obracać się w bardziej zaawansowanych projektach, które wymagają zastosowania i znajomości różnych podejść. Pojawiają się procesy, większy nacisk kładziony jest na jakość kodu, jego elastyczność, a z tym wiąże się nauka wzorców.
Błądzenie w chmurze – czyli od czego zacząć?
A jak to wygląda w przypadku chmury? Zarówno przy programowaniu, jak i tutaj możemy wyróżnić dwa główne etapy nauki. Pierwszym z nich jest nauka narzędzia (Azure), a drugim – wzorców i procesów. Jest to oczywiście uproszczenie, bo zarówno narzędzia, jak i wzorce można jeszcze precyzyjniej skategoryzować, ale wszystko to zależy od poszczególnych projektów i ich wymagań.
Usługa Azure DevOps – narzędzia
Zaczęliśmy od narzędzi i tutaj wybór może paść na dowolną chmurę: Microsoft Azure, AWS, GCP – to najwięksi obecnie dostawcy na rynku. To, którą chmurę wybierzesz, nie ma wielkiego znaczenia, gdyż oferują one podobne usługi i w większości przypadków rozwiązanie jednej firmy ma swój odpowiednik w rozwiązaniu oferowanym przez inną.
Od czego rozpocząć? Czyli „pakiet startowy” Azure DevOps
To, od czego możesz zacząć i co pozwoli ci rozwinąć skrzydła, to poznanie samej chmury i tego, co oferuje. Przykładami takich zasobów, które warto poznać w ramach Azure, mogą być np.:
- Virtual Machine
- Virtual Network
- Network Security Group
Nie bez powodu podałem akurat te. Chciałem w ten sposób pokazać, że zasoby, poza realizowanymi przez nie odpowiedzialnościami, są również w pewien sposób od siebie zależne i ze sobą powiązane.
Na powyższym przykładzie możemy to zobrazować tak, że Virtual Machine należy do podsieci zdefiniowanej w Virtual Network, a dostęp do niej zdefiniowany jest poprzez skonfigurowany Network Security Group.
Zasoby Azure DevOps – usługa Microsoft Learn
Kiedy poznasz poszczególne zasoby oferowane przez chmurę, będziesz już mieć świadomość tego, w jakich przypadkach możesz je wykorzystać i jak się ze sobą komunikują. A z pomocą w nauce przyjdzie ci platforma Microsoft Learn. Ma ona trzy ważne zalety, o których chciałbym wspomnieć.
1. Wybór ścieżki
Po pierwsze, pozwala na wybór ścieżki, w której chcesz się kształcić. Może to być jedna z wielu, np.:
- DevOps Engineer
- Solution Architect
- Administrator
W zależności od tego, którą ścieżkę obierzesz, będziesz mieć dostęp do modułów, które zapoznają cię z poszczególnymi zagadnieniami potrzebnymi w pracy na danym stanowisku. Zaletą takiego rozwiązania jest to, że nie musisz się zastanawiać, na czym spośród wielu możliwości się skupić, i możesz od razu zająć się zagadnieniami, które są ze sobą powiązane. Poznasz w ten sposób również charakter pracy w danej roli, dowiesz, czy jest to praca bardziej administracyjna, koncepcyjna lub developerska.
2. Certyfikacja
Po drugie – certyfikacja. Microsoft w zakresie wszystkich swoich rozwiązań oferuje ścieżkę certyfikacji. Nie jest ona darmowa, nie jest też prosta, a w wielu przypadkach wręcz można na niej pobłądzić. Jest to jednak najbardziej rozpoznawalne i uznawane potwierdzenie umiejętności na rynku pracy w zakresie technologii oferowanych przez Microsoft.
Jeżeli zależy ci na udokumentowaniu swojej wiedzy i umiejętności, możesz skorzystać z modułów, które przygotują cię do wybranego przez siebie certyfikatu, co na pewno ułatwi szukanie pracodawcy. Warto jest się dobrze zapoznać z dostępnymi ścieżkami certyfikacji i dowiedzieć, jaka wiedza jest sprawdzana na poszczególnych egzaminach. Na każdą ze ścieżek składa się kilka egzaminów o różnym zakresie i podziale tematycznym. W przypadku typowego DevOpsa w chmurze Azure (DevOps Engineer) polecam skupić się na AZ-900 Microsoft Azure Fundamentals. Certyfikat ten zapozna cię z koncepcją chmury oraz dostępnymi zasobami w Azure na podstawowym poziomie. Dalej możesz już obrać jedną z bardziej zaawansowanych ścieżek w zależności od tego, co cię interesuje. Wszystkie certyfikaty wraz z opisami dostępne są na oficjalnej stronie Microsoftu.
3. Ćwiczenie umiejętności
Trzecią zaletą tej platformy jest jej funkcjonalność. Wszystkie moduły są pogrupowane w poszczególne kategorie ze względu na technologię lub certyfikację, którą wybierzesz. Dodatkowo twoja aktywność jest na bieżąco śledzona i zapisywana, dzięki czemu wiesz, które materiały już przerobiłeś. Bardzo często na końcu każdego modułu lub ważnego zagadnienia umieszczane są linki do dodatkowych zasobów, które pozwolą ci pogłębić wiedzę odnośnie opisywanych zagadnień. Nie są one wymagane, ale na pewno pozwalają zdobyć bardziej szczegółowe pojęcie o zasobach i poznać możliwości, jakie oferują.
Oprócz lekcji w formie tekstowej pojawiają się również laboratoria. Są one zintegrowane ze stroną i można w prosty sposób poćwiczyć tworzenie i konfigurowanie zasobów tak, jak byśmy to robili w codziennej pracy.
A jak poznać proces DevOps?
Chmurę, na przykładzie Azure, można zatem poznać w dość przystępnej formie, którą opisałem powyżej. Inaczej sytuacja wygląda natomiast z samym procesem DevOps. Niestety w tym przypadku, chyba w każdej firmie trafimy na odstępstwa od modelowych procesów i trudno szukać miejsca, gdzie wszystko byłoby idealne. Warto jest zatem mieć ogólne pojęcie o tym, jak powinny przebiegać poszczególne procesy, jakie dają nam realne korzyści oraz kiedy powinniśmy je stosować.
Reszta zależy już od wielu składowych, takich jak: specyfika projektu, oczekiwania klienta, budżet, zaangażowanie i wiedza zespołów ze sobą współpracujących, a nawet narzędzia, których używają.
Jak wdrażać projekty? Pomocne wzorce
Z pomocą przyjdą nam wzorce, czyli podobnie jak w programowaniu, szablony, które stosujemy i które w czysty, zorganizowany sposób pozwalają nam budować strukturę projektu, który będzie elastyczny i reużywalny. O jakich zatem wzorcach / praktykach mowa?
- CI/CD
- IaaC
Wymieniłem właśnie te, ponieważ uważam je za najważniejsze i podstawowe – bez nich żadna infrastruktura nie powinna funkcjonować. Jest ich oczywiście znacznie więcej, np.: SecOps, monitoring, konteneryzacja, orkiestracja, ale moim zdaniem są to bardziej złożone procesy wynikające z przyjętej technologii oraz specyfiki projektu. Przyjrzyjmy się zatem nieco bliżej dwóm wybranym przeze mnie wzorcom.]
CI/CD (Continuous Integration / Continuous Delivery)
CI/CD (Continuous Integration / Continuous Delivery) – to szablon przepływu procesów w projekcie od momentu zaplanowania, przez wdrożenie, ciągłe utrzymywanie i monitorowanie. CI/CD to esencja kultury DevOps i warto go poznać, aby zrozumieć, jakie niesie ze sobą korzyści. Do jego składowych należą procesy:
- Plan
- Code
- Build
- Test
- Release
- Deploy
- Operate
- Monitor
Na każdy z nich można poświęcić jeden artykuł, dlatego zachęcam do skupienia się na tym wzorcu, który niewątpliwie stanowić będzie solidny fundament w rozwoju jako DevOps.
IaaC (Infrastructure-as-a-Code)
IaaC (Infrastructure-as-a-Code) – czyli infrastruktura jako kod, jest to wzorzec, dzięki któremu jesteśmy w stanie budować skalowalną infrastrukturę w sposób zautomatyzowany. Istnieje wiele podejść do tego tematu. Dostawcy zasobów chmurowych oferują swoje rozwiązania, ale istnieją również na rynku narzędzia firm zewnętrznych. Możemy wyróżnić tutaj podejście deklaratywne, jak i imperatywne – oba są mniej lub bardziej świadomie stosowane. Warto zatem zapoznać się z różnicami między nimi (poruszę ten temat w kolejnym artykule) oraz z dostępnymi na rynku narzędziami do tworzenia IaaC, takimi jak:
- Bicep
- Terraform
- Ansible
- Pulumi
- Chef
W przypadku platformy Azure, Bicep jest dedykowanym językiem do pisania deklaratywnego kodu infrastruktury. Nie zastosujemy go w przypadku innych chmur (np. AWS czy GCP). Jeżeli zależy ci zatem na narzędziu opisującym infrastrukturę deklaratywnie i ze wsparciem dla pozostałych rozwiązań chmurowych, to polecam Terraform.
Metodyki DevOps – podsumowanie
W dobie zwinnego rozwoju oprogramowania i coraz szybszej transformacji cyfrowej już nikt nie kwestionuje potrzeby posiadania w zespole specjalisty, który może nie tylko budować aplikacje w chmurze, ale też je wdrażać. Warto zainteresować się kulturą DevOps – dla wielu programistów jest to naturalna droga rozwoju.
Mam nadzieję, że po lekturze tego artykułu łatwiej będzie ci zrobić pierwszy krok w stronę rozwoju jako Azure DevOps. Jak widać powyżej, rola ta jest złożona i wymaga cierpliwości, ale jak to w życiu bywa, na wszystko potrzeba czasu. Powodzenia!