Nowe potrzeby

Przygotowania do wyjazdu bywają ciężkie, podobnie jak laptopy. Mimo że nasze komputery są wystarczająco mocne do deweloperki, ich waga przeszkadzałaby nam w trakcie wyjazdu. Dużo prościej podróżuje się z nowym MacBookiem, który waży niecałe 1,5kg. Jak przy każdej zmianie, postanowiliśmy wprowadzić kilka nowych usprawnień do naszego środowiska.

 

Lekki komputer, lekkie środowisko – Docker

Dotychczas w naszej pracy używaliśmy Vagranta. Pomimo że spełniał swoje zadanie (wirtualizacja środowiska), maszyny zabierały dużo zasobów systemowych. Na nowych komputerach postanowiliśmy użyć Dockera. Dodatkowo do repozytorium podpięliśmy jako submoduły Gita wszystkie rozwijane przez nas serwisy, co zdecydowanie uprościło konfigurację i mapowanie katalogów z kodem.

W przypadku Dockera, kontenery zabierają dużo mniej zasobów. Zmiana ta pozwoliła nam również na rozdzielenie używanych serwisów i dużo łatwiejsze symulowanie warunków produkcyjnych. Obecnie nasze środowisko składa się z kontenerów PHP (w różnych wersjach) + Apache, osobne kontenery odpowiadają za usługi typu baza danych (MariaDB) i cache (Memcache, Redis). W celu lepszej symulacji środowiska produkcyjnego przed kontenerami z Apache postawiliśmy dodatkowy kontener z HAProxy. Pozwala nam to na bindowanie tylko jednego portu z jednego kontenera, który przekazuje żądania do pozostałych.

Dodaliśmy również kontener ze skonfigurowanym stackiem ELK (Elasticsearch, Logstash, Kibana), co znacząco ułatwia nam dostęp i przeszukiwanie logów z pozostałych kontenerów.

Cała konfiguracja powstała w krótkim pliku compose. Wszystkie serwisy komunikują się ze sobą używając nazwy serwerowej, dzięki czemu nie musimy bindować pozostałych portów, a zmiana któregokolwiek z kontenerów odbywa się bez zmian w konfiguracji pozostałych. Nowe serwisy (np. Elasticsearch do obsługi coraz większej ilości wyszukiwanych danych) są izolowane i możemy je testować bez strachu o błędy w konfiguracji/instalacji, które mogłyby skutkować przestojem w pracy.

Z uwagi na ograniczenia czasowe, konfiguracja aplikacji została napisana w skryptach bash. W planach mamy przeniesienie do plików Dockerfile tworzonych per kontener.

Oczywiście nie obyło się bez problemów. Okazało się, że na systemie macOS w przypadku użycia Dockera utrudniony jest dostęp do hosta. Rozwiązaniem okazało się aliasowanie interfejsu LoopBack hosta na dodatkowy adres IP. Tego typu rozwiązanie było nam potrzebne do połączenia debuggera (Xdebug) z używanym IDE.

 

Przemyślenia

Postanowiłem wstrzymać się z tym wpisem przez kilka dni. Osobiście bardzo lubię nowe rzeczy i często przez pierwszy dzień lub dwa nie zauważam problemów, które wynikają z takiej czy innej technologii, zrzucając je na brak wcześniejszego obycia się z nią.

W przypadku Dockera, przy naszym użyciu, nie zauważyłem większych problemów. W dalszym ciągu możemy zalogować się na maszynę po SSH i używać wszystkiego podobnie jak na Vagrancie. Jedynym mankamentem była konieczność mapowania niektórych folderów w celu przechowania danych (wgrywanie czystej bazy przy każdym starcie było dosyć uciążliwe), przez co lokalnie na hoście mamy pliki bazodanowe.

Jeżeli chodzi o samego MacBooka, to możliwość wielogodzinnej pracy bez konieczności podłączenia zasilania zdecydowanie wynagradza konieczność nauki nowych skrótów klawiszowych. 🙂

 

opisał Hubert Jędrzejek

Czytaj kolejną część historii