Próżność architekta
Herve Hildenbrand spędził sześć miesięcy na czytaniu RFC i budowaniu backbone'u opartego na RSVP-TE. Inżynierowie, którzy go zastąpili, zdemontowali go w tydzień. I mieli rację.
Autor połączył sieci w jeden IGP, dodał MPLS RSVP-TE i ręcznie zaprojektowałem każdy LSP. Deployment był bezbłędny. Tabele routingu – arcydzieło.
I właśnie na tym polegał problem. Traffic engineering działał perfekcyjnie, ale wynik biznesowy był prawie niezauważalny. Zbudował system o wyraźnie wyższej złożoności operacyjnej, który osiągał efekty zbliżone do znacznie prostszego rozwiązania.
Każda zmiana wymagała głębokiego zrozumienia nie tylko projektu, ale intencji stojącej za każdym wyjątkiem. Nie było automatyzacji. Był za to jeden punkt wiedzy: Autor.
Kiedy przeszedł do innej roli, następcy odziedziczyli system technicznie elegancki i operacyjnie kruchy. Wymienili inżynierską perfekcję na coś cenniejszego – zdolność do przeżycia bez autora.
Mam teraz nazwę dla tego rodzaju długu: próżność architektoniczna. To dług, który powstaje, gdy budujesz sieć, którą chcesz projektować, zamiast sieci, której faktycznie potrzebuje biznes.
Trzy pytania, które zadaj sobie przed kolejnym projektem
Zanim zdefiniujesz architekturę, odpowiedz uczciwie:
- Bus factor: Jeśli jutro odejdziesz, czy architektura pozostanie biznesowym aktywem – czy stanie się operacyjnym ciężarem?
- Motyw: Rozwiązujesz realny problem biznesowy, czy dajesz swojej technicznej ciekawości uprawnienia produkcyjne?
- Reguła 3 w nocy: Czy kompetentny mid-level engineer zdebuguje incydent bez dzwonienia do ciebie?
Jeśli odpowiedź na którekolwiek pytanie brzmi „nie" – możliwe, że nie budujesz odporności. Budujesz zależność.
docker run vs docker start
docker run to operacja twórz i uruchom. Za każdym razem, gdy je wywołujesz, Docker tworzy nowy kontener z obrazu — niezależnie od tego, czy identyczny już istnieje na dysku. Jeśli użyłeś flagi --name, dostaniesz błąd kolizji nazw. Jeśli nie — Docker bezgłośnie powołuje kolejny kontener z losową nazwą i pożera zasoby.
docker start to operacja uruchom istniejący. Kontener zatrzymany przez docker stop nadal rezyduje na dysku w stanie uśpienia. To jego jedyna słuszna metoda powrotu do życia.
# Tworzy kontener — wywołuj tylko raz
docker run -itd --name moj-target debian /bin/bash
# Zatrzymuje bez usuwania
docker stop moj-target
# Przywraca do działania — to wołaj po każdym restarcie
docker start moj-targetW środowiskach testowych i CI/CD ten błąd jest szczególnie kosztowny. Zapomniane kontenery zajmują przestrzeń dyskową, mogą trzymać otwarte porty i powodować trudne do debugowania konflikty sieciowe. Jeden szybki audyt pozwala ocenić skalę problemu:
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.CreatedAt}}"
Jeśli widzisz wiele kontenerów w stanie Exited z losowymi nazwami — masz dokładnie ten problem.
Czyszczenie środowiska sprowadza się do dwóch poleceń: docker container prune usuwa wszystkie zatrzymane kontenery, a docker system prune idzie dalej i czyści również nieużywane obrazy i wolumeny. Używaj drugiego z rozwagą w środowiskach współdzielonych.
Zasada jest prosta: docker run wywołujesz raz przy inicjalizacji, docker start — przy każdym kolejnym uruchomieniu. Jeśli zarządzasz wieloma środowiskami, rozważ przeniesienie definicji kontenerów do docker-compose.yml — docker compose up i docker compose down eliminują tę dwuznaczność całkowicie, bo stan środowiska jest deklaratywny i powtarzalny.
BNG z zewnętrzym DHCP
Repozytorium zawiera konfiguracje i pliki związane z implementacją DHCP Relay w środowisku BNG (Broadband Network Gateway) z użyciem NOS TiMOS oraz narzędzia bngblaster. Znajdziesz tu m.in. pliki konfiguracyjne DHCP Server i DHCP Relay w formacie YAML, skrypty do testów wydajnościowych oraz schematy topologii i weryfikacji działania.
Automatyczne zarządzanie Cloudflare Tunnel
DockFlare to samoobsługowa platforma do zarządzania Cloudflare Tunnel, która automatycznie konfiguruje publiczny dostęp do kontenerów Docker bez ręcznej obsługi panelu Cloudflare. Dzięki integracji z metadanymi kontenerów i możliwością zarządzania regułami z poziomu interfejsu webowego, ułatwia szybkie i niezawodne wystawianie usług w sieci.
Router ID w sieciach IPv6-native
Przeczytaj całą historię
Zarejestruj się teraz, aby przeczytać całą historię i uzyskać dostęp do wszystkich postów za tylko dla płacących subskrybentów.
Subskrybuj