Wsparcie i utrzymanie

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

  1. 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.

  2. 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.

  3. 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.

  4. 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ęć.

  5. 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

Przeczytaj opinie firm, które nam zaufały

Zawsze są kilka kroków do przodu.

Mikołaj

CEO & Founder, GBS®

Zobacz na Clutch
GBS® logo

Dostarczone znacznie wcześniej niż termin.

Yasniel

CEO, IMEGA Sp z o.o.

Zobacz na Clutch

Indywidualne podejście ZanReal jest imponujące.

Adam

Executive, w-studio.pl

Zobacz na Clutch

Wiedza i intuicja biznesowa czynią ich wartościowym partnerem.

Magda

Designer, DIGITALUNI

Zobacz na Clutch

Szybkie rozwiązania, które obniżyły koszty o 99%.

Andrei Kapytau

Team Lead, busel.uk

Zobacz na Clutch

+20% dostarczalności dla naszych kampanii e-mail.

Joan Calabria

Sales Director, 36NORTH

Zobacz na Clutch
36NORTH logo

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 nas

Napisz, 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.

Zanek

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
Tygodnik AIonline
Wyselekcjonowane wiadomości AI do porannej kawy. Co tydzień.
Wyślij mi swój email, żeby się zapisać.