Chmura Azure i DevOps
Infrastruktura jako kod, pipeline'y wdrażające kilka razy dziennie, bazowy poziom bezpieczeństwa w modelu „odmowa domyślna” (deny-by-default) i przewidywalny rachunek. Tak budujemy środowisko chmurowe i tak prowadzimy własne.
Sama praca DevOps
- Pipeline'y. Build, testy, skan bezpieczeństwa i wdrożenie w GitHub Actions, z federacyjnymi poświadczeniami zamiast przechowywanych sekretów i każdą akcją przypiętą przez hash.
- Infrastruktura jako kod. Terraform dla wszystkiego, sprawdzany jako plan przed zastosowaniem, z cyklicznym wykrywaniem dryfu konfiguracji, które zgłasza, co ktoś zmienił ręcznie.
- Wdrażanie baz danych. Zmiany schematu jako wersjonowane migracje uruchamiane w pipeline, więc wdrożenie, które dostarcza kod bez jego schematu, nie może się zdarzyć.
- Monitoring i alerty. Logi, metryki i ślady w jednym obszarze roboczym, z alertami, które docierają do człowieka tylko wtedy, gdy programista może coś z nimi zrobić.
- Kontrola kosztów. Dobrane do potrzeb poziomy usług, rozliczanie według zużycia tam, gdzie obciążenie skacze, i miesięczny rachunek, który ktoś naprawdę czyta.
W czym budujemy
Każdy zasób jest deklarowany w Terraform i wdrażany z GitHub Actions z federacyjnymi poświadczeniami. Nic nie jest „sklikane” w portalu, ani w naszych środowiskach, ani w Państwa.
Obliczenia
Azure Functions na izolowanym workerze .NET 10 dla API i 40 zadań cyklicznych; Container Apps Jobs uruchamiają wdrożenia baz danych i migracje EF Core.
Dane
Azure SQL z zabezpieczeniami na poziomie wierszy i kolumnami Always Encrypted na kluczach zarządzanych przez klienta w Key Vault; Blob Storage dla dokumentów i podpisanych plików PDF.
Frontendy
Dwie aplikacje Static Web Apps, portal i ta strona, obie serwowane z restrykcyjną polityką Content Security Policy i prerenderowane tam, gdzie roboty indeksujące potrzebują HTML.
Tożsamość
Entra ID dla osób i grup, tożsamości zarządzane przypisane przez użytkownika dla każdego obciążenia, OIDC z GitHub Actions. Brak długo żyjących poświadczeń w pipeline.
Obserwowalność
Application Insights i Log Analytics z regułami alertów docierającymi do zespołu jako wiadomości w Teams. Alertami stają się tylko sygnały, z którymi programista może coś zrobić.
Zarządzanie i zgodność
Polityki grup zasobów, blokady zarządzania, ochrona przed czyszczeniem (purge protection) i ustawienia diagnostyczne, wszystko deklarowane w Terraform, z uzasadnieniem przy każdej regule.
Dyscyplina kosztowa
Nasze zasady inżynieryjne układają priorytety w stałej kolejności: najpierw koszt, potem bezpieczeństwo, potem nowoczesność, potem wydajność. Pułap kosztów ustalamy, zanim narysujemy architekturę, i każdą decyzję projektową sprawdzamy względem niego. W praktyce oznacza to rozliczanie według zużycia zamiast stale działających serwerów tam, gdzie obciążenie skacze, poziom bazy danych dobrany do potrzeb, a nie ten rekomendowany przez dostawcę, oraz alerty zbudowane z usług, które już są w subskrypcji, zamiast płatnego produktu do dyżurów.
Bazowy poziom bezpieczeństwa
- Zapory domyślnie odmawiają dostępu; do SQL można dotrzeć tylko z podsieci Functions.
- Sekrety istnieją tylko w Key Vault i są odczytywane przez tożsamości zarządzane.
- Kolumny z danymi osobowymi i finansowymi są chronione przez Always Encrypted, więc nawet administrator bazy danych nie może ich odczytać.
- Akcje i obrazy kontenerów są przypięte przez hash; aktualizacje zależności przychodzą jako recenzowane pull requesty, a ostrzeżenie bezpieczeństwa jest bezwarunkowym powodem do aktualizacji.
- CodeQL działa przy każdym pushu, plany Terraform są walidowane przed zastosowaniem, a dryf konfiguracji jest wykrywany według harmonogramu.
Nasz dorobek w chmurze
Zbudowano ponad 20 pipeline'ów CI/CD, wydania co dwa tygodnie zamieniono w codzienne wdrożenia, czas wydania skrócono z czterech godzin do 25 minut, a wydatki na Azure na jednej platformie zmniejszono o 30 procent. Liczby z naszej historii realizacji.
Rekrutujemy pod to, a nie improwizujemy
DevOps to rola, pod którą rekrutujemy świadomie: w naszej historii ofert pracy był inżynier DevOps i osobna osoba prowadząca rozmowy techniczne z DevOps, więc kandydatów ocenia ktoś, kto wykonuje tę pracę, a nie generalista czytający listę kontrolną.
Chcą Państwo mieć środowisko Azure w kodzie i mniejszy rachunek?
Prosimy o przesłanie dostępu tylko do odczytu do subskrypcji lub opisu tego, co gdzie działa. Pisemną ocenę i plan otrzymają Państwo w ciągu jednego dnia roboczego.