W pierwszym poście poruszyliśmy podstawowe zagadnienia, lecz teraz musimy przyjrzećsiędokładniej poszczególnym konceptom i zrozumieć, że na wytwarzanie oprogramowania składająsiędwa obszary. **Development (rozwój)**, gdzie programiści(developerzy) tworzą i testują aplikację. Oraz **Operations (utrzymanie)**, gdzie aplikacja jest wdrażana i utrzymywana na serwerze.
Aby zrozumiećDevOps i zadania, za które Inżynier DevOps jest odpowiedzialny, musimy zrozumiećnarzędzia lub procesy związane z tym, jak te dwa światy sięłączą.
Developerzy tworząoprogramowanie, mogąto robićz użyciem wielu różnych stacków technologicznych, w późniejszych rozdziałach poświęcimy temu procesowi więcej uwagi. Wytwarzanie oprogramowania może wiązaćsięz użyciem wielu różnych języków programowania, narzędzi do budowania aplikacji, repozytoriów kodu itd.
Jako DevOps engineer nie będziesz programowaćsamej aplikacji, ale dobre zrozumienie konceptów, z którymi pracujądeveloperzy, oraz zrozumienie systemów, narzędzi i procesów z jakich korzystająjest kluczem do osiągnięcia sukcesu.
Wysokopoziomowo, będziesz potrzebowaćwiedziećo tym jak aplikacja jest skonfigurowana, by móc rozmawiaćz wszystkimi wymaganymi serwisami, oraz znaćwymogi tego, jak takąkomunikacjętestować.
Aplikacja musi byćgdzieśwdrożona, dla uproszczenia przyjmijmy, że jest to serwer, nieważne jaki, po prostu serwer. Zakładamy również, że ten serwer powinien byćdostępny dla klienta lub użytkowanika końcowego aplikacji.
Ten serwer musi istniećw jakiejśokreślonej konfiguracji – on premises, w publicznym cloudzie, serverless (Ok, wybiegamy tutaj trochęza daleko, ten projekt nie pokrywa serverless, jednak jest to jedna z możliwości i coraz więcej firm wybiera ten model). Ktośmusi te serwery stworzyć i skonfigurować, aby przygotowaćje do hostowania aplikacji. Ten obszar, skonfigurowania i wdrożenia tych serwerów, może leżećw zakresie twoich obowiązków jako DevOps Engineera.
Na tych serwerach uruchomiony jest jakiśsystem operacyjny, zazwyczaj jest to Linux, poświęcimy całą sekcję/tydzień na pokrycie podstawowej wiedzy, jaką powinienieś/aśzdobyćw tym obszarze.
Prawdopodobne jest również, że dany serwer będzie potrzebował komunikowaćsięz innymi serwisami w naszej sieci lub środowisku, więc będziemy równieżpotrzebowaćodpowiedniej wiedzy z zakresu sieci i ich konfiguracji, jako, że ten obszar równieżbędzie znajdowaćsięw kometencjach DevOps Engineera. Bardziej szczegółowe informacje znajdziesz w odpowiednich sekcjach, gdzie będizemy mówićo wszystkim związanym z DNSami, DHCP, Load Balancigiem itd.
Na tym etapie należałoby zaznaczyć, że nie potrzebujesz eksperckiej wiedzy z zakresu sieci, czy infrastruktury. Potrzebujesz jedynie podstawowej wiedzy na temat tego, jak skonfigurowaćwszystko co jest potrzebne, żeby poszczególne zasoby mogły działaći rozmawiaćze sobąnawzajem. Podobnie jest z wiedząw zakresie języków programowania. Nie musisz byćdeveloperem. Jednak możesz przejśćdo DevOpsu jako specjalista w danym obszarze i możę to byćświetna podstawa do zaadaptowania do innych obszarów.
Mówiliśmy o sewerach, ale prawdopodobnie twoja aplikacja będzie tworzona z myśląo działaniu w kontenerach, które równieżzazwyczaj działająna serwerze, ale w tym przypadku równieżmusisz rozumieć koncepty takie jak wirtualizacja, chmurowe Infrastructure as a Service (IaaS), ale równieżkonteneryzacji. Podczas tych 90 dni skupimy sięprzede wszystkim na kontenerach.
Z drugiej strony, mamy jakiegośrodzaju środowisko, infrastrukturęi serwery, które należy skonfigurować i którymi trzeba zarządzać, aby były w stanie obsługiwaćtęaplikacjęi komunikowaćsięze wszystkimi wymaganymi usługami i serwisami
W takiej sytuacji należy zadaćsobie pytanie, w jaki sposób chcemy zaimplementowaćte funkcjonalności i poprawki do naszego produktu i sprawić, by były dostępne dla użytkowników końcowych?
W jaki sposób chcemy wypuścićnowąwersjęaplikacji? To jedno z głównych zadań inżyniera DevOps, co ważne, nie polega to jedynie na znalezieniu jednorazowego rozwiązania, ale musimy robićto w sposób ciągły zautomatyzowany i efektywny, oraz włączyćdo całego procesu testowanie tego oprogramowania.
Na tym etapie zakończymy dzisiejszy dzień nauki, mając nadzieję, że ta wiedza była przydatna. Następne kilka dni poświęcimy na głębsze spojrzenie na poszczególne obszary DevOps oraz spojrzymy dokładniej na narzędzia, procesy i korzyści z takich rozwiązań.