Zarządzanie usługami i konfiguracja środowisk
Większość awarii zaczyna się od konfiguracji, która po cichu się rozjechała. Dbamy o to, żeby Twoje środowiska były spójne, aktualne i opisane na tyle dobrze, by zmiana przestała być loterią.
Konfiguracja się rozjeżdża, a potem pęka
Systemy rzadko psują się dlatego, że ktoś podjął złą decyzję. Psują się dlatego, że seria drobnych, rozsądnych decyzji nigdy nie została zapisana. Ustawienie zmienione ręcznie podczas awarii i nigdy nieprzywrócone. Biblioteka przypięta do starej wersji, żeby obejść błąd sprzed trzech lat. Środowisko testowe działające na innej wersji Node'a niż produkcja, więc to, co przeszło testy, zachowuje się inaczej po wdrożeniu.
Każda z tych rzeczy z osobna jest nieszkodliwa. Razem tworzą system, który rozumie jedna osoba, i ta osoba jest na urlopie, kiedy coś przestaje działać. Sens zarządzania środowiskami nie polega na elegancji. Polega na tym, żeby stan Twoich systemów dało się poznać bez prac wykopaliskowych.
Konfiguracja, którą da się przeczytać
Pierwsze, co robimy, to opisanie obecnego stanu wprost. Czyli spisanie, jak faktycznie skonfigurowane jest każde środowisko, łącznie z ręcznymi krokami, których nikt nie udokumentował, bo miały być tymczasowe.
Tam, gdzie ma to sens, ten opis trafia do kodu. Infrastruktura jako kod ma realną korzyść i realny koszt. Korzyść: zmiany da się przejrzeć, powtórzyć i cofnąć. Koszt: ktoś musi utrzymywać narzędzia. Przy trzech środowiskach i regularnych zmianach korzyść wyraźnie wygrywa. Przy jednym małym serwerze zmienianym dwa razy w roku uczciwą odpowiedzią jest dobrze napisana strona w dokumentacji. Tak właśnie Ci powiemy, zamiast sprzedawać moduł Terraforma, którego nie potrzebujesz.
Sam opis daje efekt, jeszcze zanim cokolwiek zautomatyzujesz. Kiedy konfiguracja jest zapisana, rozmowa o zmianie przestaje być rozmową o tym, kto co pamięta. Widać, czym różni się produkcja od testów, i widać, które ustawienia ktoś kiedyś dodał doraźnie i nigdy nie usunął.
Aktualizacje jako rutyna, nie jako wydarzenie
Odkładane aktualizacje kumulują się nieliniowo. Zależność opóźniona o pół roku to szybka podmiana wersji. Ta sama zależność opóźniona o trzy lata to projekt, bo wersje pomiędzy zmieniły rzeczy, na których opiera się Twój kod.
Dlatego rozsądne jest utrzymanie rytmu. Rutynowe aktualizacje wchodzą regularnie i małymi partiami, dzięki czemu każdą łatwo przetestować i łatwo wskazać winowajcę, gdy coś przestanie działać. Większe skoki wersji planujemy osobno, testujemy poza produkcją i umawiamy na moment, w którym firma zniesie ewentualną niespodziankę. Rytm ustalamy z Tobą, bo platformy przyjmującej zamówienia całą dobę nie utrzymuje się tak samo jak narzędzia wewnętrznego.
Jest w tym jeszcze jedna, bardzo praktyczna korzyść. Małe partie ułatwiają ustalenie przyczyny. Kiedy w jednym wdrożeniu podnosisz czterdzieści zależności i coś przestaje działać, zostaje żmudne szukanie. Kiedy podnosisz cztery, odpowiedź zwykle widać od razu.
Efekt jest prosty: aktualizacje przestają być straszne. To ważniejsze, niż brzmi, bo zespół, który boi się aktualizować, w końcu przestaje aktualizować. Tak właśnie powstają systemy, w których nie da się już niczego zmienić.
Kiedy dostawca zmienia zasady
Duża część nieoczekiwanych awarii przychodzi z zewnątrz. Operator płatności wycofuje wersję API. Dostawca chmury zmienia domyślne ustawienie. Biblioteka wypuszcza zmianę łamiącą kompatybilność w wydaniu, które wygląda na drobne. Wystawca certyfikatów zmienia sposób weryfikacji.
Prawie zawsze jest to zapowiadane wcześniej. Problem polega na tym, że informacja o wycofaniu przychodzi na osiem miesięcy przed terminem, czyli w momencie, gdy nic się nie dzieje, i ląduje w folderze „później”. Śledzimy takie zapowiedzi dla usług w Twoim stacku, ustalamy, które realnie dotkną Twojego kodu, i wpisujemy migrację do harmonogramu, dopóki jest jeszcze zaplanowaną zmianą, a nie incydentem.
Rozbudowa bez przebudowy
Praca nad konfiguracją obejmuje też nudne elementy rozwoju: dodanie środowiska dla nowego zespołu, wydzielenie usługi, która wyrosła ze swojej instancji, podłączenie kolejnego narzędzia zewnętrznego, zmianę sposobu dystrybucji sekretów.
Do tej samej kategorii należą zmiany wymuszone z zewnątrz: nowy wymóg zgodności, przeniesienie danych do innego regionu, zmiana operatora poczty transakcyjnej. Żadna z nich nie rozwija produktu, każda musi zostać zrobiona i każda zostawia w konfiguracji ślad, który trzeba opisać.
Robione w ramach stałego utrzymania są rutyną. Robione doraźnie przez osobę, która akurat ma czas, są początkiem kolejnego rozjazdu. Dokumentacja jest aktualizowana w tym samym przebiegu co zmiana, bo tylko tak dokumentacja przeżywa zderzenie z pracowitym kwartałem.
Co dostajesz
Konfiguracja środowisk w repozytorium
Ustawienia każdego środowiska trzymamy w repozytorium, a nie w czyjejś pamięci. Widać, co się zmieniło, kiedy i po co.
Spójne środowiska
Środowisko deweloperskie, testowe i produkcyjne działają na tych samych wersjach i w tym samym układzie konfiguracji. Dopiero wtedy wynik testu coś znaczy.
Rytm aktualizacji
Wersje języków, biblioteki, pakiety systemowe i wersje platform aktualizujemy w ustalonym rytmie, a nie w panice po tym, jak coś przestało działać.
Reakcja na zmiany u dostawców
Śledzimy zmiany i zapowiedzi wycofania w usługach, z których korzystasz, i planujemy migrację, dopóki jest jeszcze czas na planowanie.
Zarządzanie sekretami i konfiguracją
Klucze API i zmienne środowiskowe są przechowywane, rotowane i podawane systemom jak należy, zamiast krążyć między lokalnymi plikami a panelem hostingu.
Wdrożenia z drogą powrotu
Wdrożenia idą ustaloną ścieżką, z możliwością cofnięcia zmiany. Świadomość, że da się wrócić, sprawia, że wdrażanie w czwartek przestaje być nierozsądne.
Jak pracujemy
- 01
Ustalamy stan obecny
Opisujemy, jak dziś skonfigurowane jest każde środowisko, łącznie z ręcznymi krokami, których nikt nie spisał, i zaznaczamy miejsca, w których środowiska się rozjechały.
- 02
Bierzemy konfigurację pod kontrolę
Konfiguracja trafia do kodu albo do opisanych, powtarzalnych kroków. Tam, gdzie pełna automatyzacja się nie opłaca, mówimy to wprost, zamiast budować ją mimo wszystko.
- 03
Zmniejszamy różnice między środowiskami
Wyrównujemy wersje, zależności i ustawienia, żeby środowisko testowe przestało być optymistycznym przybliżeniem produkcji.
- 04
Ustalamy rytm aktualizacji
Umawiamy się, jak często wchodzą rutynowe aktualizacje i jak obsługujemy większe skoki wersji, a potem po prostu prowadzimy ten cykl, zamiast liczyć na czyjąś pamięć.
- 05
Wspieramy zmiany i rozbudowę
Nowa usługa, dodatkowe środowisko, wzrost ruchu albo zmiana konfiguracji mieszczą się w tej samej współpracy, a dokumentacja jest aktualizowana przy okazji.
Narzędzia i technologie
Tam, gdzie istnieje dobre narzędzie open source, wybieramy je zamiast zamkniętego. Bez uzależnienia od jednego dostawcy i z kosztami, które da się przewidzieć.
- OpenTofu
- Terraform
- Ansible
- Docker
- Kubernetes
- Renovate
- Supabase
- GitHub Actions
- Vercel
- AWS
- Cloudflare
- 1Password
Najczęściej zadawane pytania
Powiązane realizacje
Pozostałe usługi w tej kategorii
Porządkowanie infrastruktury
Infrastruktura, która rosła decyzja po decyzji, źle znosi zmiany. Sprawdzamy, co naprawdę masz, wyłączamy to, czego nikt nie pilnuje, a resztę opisujemy.
Wsparcie istniejących rozwiązań
Nie każdy system trzeba wymieniać. Większość potrzebuje kogoś, kto wie, jak działa, pilnuje aktualizacji i naprawia usterki, zanim staną się pilne.
Monitoring i szybka reakcja na problemy
Monitoring ma sens tylko wtedy, gdy ktoś na niego reaguje. Wyposażamy utrzymywane przez nas systemy w monitoring, pilnujemy, by alerty pozostały wiarygodne, i obsługujemy to, co wychwycą.
Przeczytaj opinie firm, które nam zaufały
Dostarczone znacznie wcześniej niż termin.
Indywidualne podejście ZanReal jest imponujące.
Wiedza i intuicja biznesowa czynią ich wartościowym partnerem.
Szybkie rozwiązania, które obniżyły koszty o 99%.
+20% dostarczalności dla naszych kampanii e-mail.

Najnowsze
Poradniki techniczne, bezpieczeństwo i nasze doświadczenia z budowania rozwiązań AI.
Wiesz, czym Twoja produkcja różni się od środowiska testowego?
Napisz do nasNapisz, na czym stoją Twoje systemy i gdzie są hostowane, a zaproponujemy, jak wziąć konfigurację pod kontrolę i ustalić rytm aktualizacji dopasowany do tego, jak z nich korzystasz.
Nie nadążasz za zmianami w świecie AI?
Pozwól, że weźmiemy to na siebie. Co tydzień destylujemy najważniejsze wydarzenia ze świata AI w skupiony, 5-minutowy przegląd — żebyś był na bieżąco bez szumu.
Dowiedz się więcej