Grupa AF
Łukasz Fuszara
Backend Developer

DevOps i programista. Specjalizuje się w Dockerze, złożonych systemach uczenia maszynowego oraz programowaniu backendu aplikacji internetowych. Od wielu lat miłośnik Linuksa, zwłaszcza dystrybucji Ubuntu.


Docker ponad językami

Procesy w programowaniu, mimo że wydają się abstrakcyjne, mogą mieć wiele wspólnego z rzeczywistością. Nowoczesne technologie, które poprawiają jakość naszego życia, wykorzystują też w swojej pracy programiści. Poniżej skupimy się na zautomatyzowaniu procesu wdrażania oprogramowania, który nie jest wolny od błędów. Tę czynność można swobodnie porównać do przyrządzania dowolnej potrawy. My przykładowo upieczemy ciasto.

Pieczenie ciasta a programowanie

Podejmując się próby kulinarnej lub napisania własnego kodu, w pierwszej kolejności musisz określić skalę projektu: czy pieczemy tylko dla siebie, czy dla kilkunastu gości; czy jest to zwykłe spotkanie przy kawie, czy też weselny tort dla przyjaciół; czy preferujesz ciasta drożdżowe, czy kruche. Możliwości jest sporo. Podobne pytania zadaje sobie programista, stając przed wyborem języka programowania dla swojego projektu czy fragmentu kodu. Zaplanowany projekt wymaga rozpoczęcia działań. W zależności od tego, czy pieczesz czy programujesz – potrzebny jest ci plan działania. W przypadku programisty pierwszym krokiem będzie zrobienie niezbędnych bibliotek. Jest to zestaw narzędzi, które okażą się niezbędne lub co najmniej bardzo pomocne w całym procesie wdrażania nowej funkcjonalności.

Pieczenie ciasta jest prostsze – na tym etapie robisz listę zakupów i weryfikujesz, które narzędzia i składniki już posiadasz. Po etapie planowania czas na konkretne działania. Mając już niezbędne składniki do pieczenia ciasta lub kodowania, zaczynamy realizować wcześniej założony plan. Osoba piekąca ciasto wyrobi masę, którą następnie przełoży do blachy. Jednak najpierw dokładnie przygotuje formę, smarując ją tłuszczem i posypując bułką tartą. Wszystko po to, żeby ciasto nie przywarło. Programista także musi poczynić pewne przygotowania, zanim rozpocznie pisanie kodu. Żeby zapobiec niepowodzeniom, pisze i testuje konfigurację serwera WWW. Jeśli w obu przypadkach nie pojawiają się błędy, wszystko wydaje się działać i wyglądać poprawnie, kod trafia na Linux Server niczym ciasto do piekarnika. Po jego wyjęciu – przerzuceniu treści na serwer – można podzielić się ze znajomymi efektem swojej pracy.

Ups, znowu coś nie wyszło

Jednak, jak wszędzie, może pojawić się nagła zmiana okoliczności. Na przykład pojawia się nagle więcej bardzo ważnych zamówień na różnorakie ciasta, które wymagają różnej temperatury pieczenia. W programowaniu też może się tak zdarzyć – po napisaniu kodu, podczas prób wdrożenia, okazuje się, że na serwerze został już wcześniej użyty inny język programowania – podobny, ale występujący w innej wersji. Wszystko wydaje się być takie samo, zmienia się jedynie jeden, z pozoru nic nieznaczący parametr. Zarówno osoba piekąca ciasto jak i programista, mają w tej sytuacji kilka możliwości. Piekarz (cukiernik) może kupić dodatkowy piekarnik, piec ciasta kolejno po sobie, zaryzykować upieczenie ich razem, wybrać inne ciasto lub poprosić o pomoc sąsiada, tudzież zlecić wykonanie ciast komuś innemu.

Programista w sytuacji rozbieżności może wykupić dodatkowy serwer. Utrzymywać jedną wersję interpretera kodu na serwerze na raz, napisać ponownie kod w kompatybilnej wersji, zaryzykować instalację kodu niekompatybilnego – a nuż przejdzie – lub po prostu zlecić  zadanie komuś innemu, kto ma wymaganą wersję serwera. Jednak najlepszą decyzją w tej sytuacji byłoby wykorzystanie Dockera – jest to wirtualny system, który działa na wszystkich serwerach, w tym Linux Server. Co istotne, Docker nie jest wirtualną maszyną!

Docker na ratunek

Dockera można porównać do piekarnika dwukomorowego. Umożliwia przyrządzenie dwóch zupełnie różnych potraw w tym samym czasie, dostosowując temperaturę lub izolując zapachy. Innymi słowy, daje możliwość łączenia różnych potraw/języków programowania i korzystania z nich w tym samym czasie. To wirtualny system, a od wirtualnej maszyny odróżnia go współdzielenie niektórych składników systemu, jednak warstwa sprzętowa jest taka sama dla Dockera, jak i dla systemu gospodarza. Warto tutaj wspomnieć o ograniczeniach maszyn wirtualnych, które zużywały duże ilości pamięci i mocy obliczeniowej komputerów. Osoby, które na nich pracowały, wpadły na pomysł, żeby wydzielić część wspólną dla systemu gospodarza i maszyny wirtualnej. Były to pierwsze podejścia do powstania Dockera. Pierwotne wersje przyszłego Dockera były na zamkniętej licencji. Firma, która opracowała prawną koncepcję, zbankrutowała, jednak udało jej się jeszcze wypuścić na rynek swoją platformę na otwartej licencji. Platforma przyjęła się i zyskała na popularności.

Obecnie Docker jest znaną marką na całym świecie, posiada swój ekosystem gotowych aplikacji zwaną DockerHub. Aplikacje Dockera są nazywane kontenerami, jeden kontener to jedna aplikacja np. MySQL, PHP, Python, PostgreSQL, połączone ze sobą poprzez sieć. Takie rozwiązanie umożliwia rozdzielenie fragmentów i złożonych projektów na pojedyncze usługi. Połączone w sposób uporządkowany, zapewniający bezpieczeństwo, gwarantuje dokładnie zdefiniowane środowisko uruchomienia usług. Odpowiednie zarządzanie Dockerem umożliwia uruchomienie na jednym serwerze PHP 7.1, 7.2, 7.3 bez tworzenia konfliktów w wersjach. Docker tutaj znacznie ułatwia zarządzanie wersjami. Jeden kontener to jedna wersja PHP, podpięta pod określoną aplikację typu Laravel, WordPress, itp.

Innymi słowy, zarówno w codziennym życiu jak i w programowaniu, wprowadzanie usprawnień, inwestowanie w lepszy sprzęt i wiedzę, może ułatwić wiele czynności, zwiększając ich efektywność. Osoba piekąca ciasto, wykorzystując robota kuchennego lub piekarnik dwukomorowy, w szybszym czasie i z mniejszym nakładem pracy będzie mogła delektować się ciastem. Programista natomiast szybciej wdroży kod na serwer. Udostępni go w globalnej sieci Internetu, dając innym użytkownikom możliwość dzielenia się treścią.

Więcej z tej kategorii...
Najnowsze artykuły i komunikaty prasowe
Powrót do strony głównej
Powrót