Podsumowanie prac wdrożeniowych i architektonicznych
W ramach ostatnich prac zrealizowano kompleksowe przygotowanie aplikacji (Backend w Go, Frontend i Dashboard w SvelteKit) do wdrożenia produkcyjnego. Skupiono się na konteneryzacji, rozwiązaniu problemów z budowaniem oraz wdrożeniu solidnej architektury bezpieczeństwa.
1. Konteneryzacja i Optymalizacja (Docker)
- Multi-stage builds: Stworzono zoptymalizowane pliki
Dockerfiledla wszystkich trzech serwisów, wykorzystując wieloetapowe budowanie obrazów w celu zminimalizowania ich rozmiaru końcowego. - Aktualizacja środowiska Node.js: Zaktualizowano obrazy bazowe dla aplikacji SvelteKit z
node:20-alpinenanode:24-alpine(LTS), co pozwoliło na wyeliminowanie 7 krytycznych podatności bezpieczeństwa (vulnerabilities). - Odchudzenie backendu: Usunięto z procesu budowania backendu przestarzałe zależności (templ, Tailwind, pliki statyczne), redukując obraz końcowy do minimalistycznego środowiska Alpine uruchamiającego wyłącznie skompilowany plik binarny Go.
2. Dostosowanie SvelteKit do środowiska produkcyjnego
- Zmiana adaptera: Zmieniono domyślny
@sveltejs/adapter-autona@sveltejs/adapter-nodewe frontendzie i dashboardzie. Rozwiązało to problem braku katalogu/app/buildpodczas budowania kontenerów i pozwoliło na poprawne uruchomienie aplikacji w środowisku Node.js. - Synchronizacja zależności: Rozwiązano problemy z komendą
npm ciw środowisku CI/CD poprzez synchronizację plikówpackage.jsonipackage-lock.json. - Konfiguracja portów: Ustandaryzowano przekazywanie portów (np.
PORT=3000) poprzez zmienne środowiskowe dla aplikacji SvelteKit.
3. Architektura Bezpieczeństwa (API Key & CORS)
Zaprojektowano i wdrożono bezpieczny model komunikacji Server-to-Server (S2S) pomiędzy aplikacjami SvelteKit a publicznie dostępnym API w Go.
- Zabezpieczenie Backendu (Go):
- Zaimplementowano dedykowany middleware sprawdzający obecność i poprawność nagłówka
X-API-Keyw każdym żądaniu HTTP. - Skonfigurowano restrykcyjną politykę CORS (
github.com/go-chi/cors), zezwalającą na zapytania wyłącznie z zaufanych domen (frontendu i dashboardu).
- Zaimplementowano dedykowany middleware sprawdzający obecność i poprawność nagłówka
- Integracja we Frontendzie i Dashboardzie (SvelteKit):
- Zmodyfikowano warstwę SDK (m.in.
BaseService,api.ts,authService.ts). - Aplikacje SvelteKit, działające w trybie Server-Side Rendering (SSR), automatycznie wstrzykują nagłówek
X-API-Key(pobierany z bezpiecznych zmiennych środowiskowych$env/dynamic/private) do każdego zapytaniafetchkierowanego do backendu. - Izolacja sekretów: Dzięki architekturze SSR, klucz API nigdy nie trafia do przeglądarki użytkownika, co gwarantuje najwyższy poziom bezpieczeństwa.
- Zmodyfikowano warstwę SDK (m.in.
4. Operacje na repozytorium (Git)
- Czyszczenie historii: Rozwiązano problem z wypychaniem (push) repozytorium backendu na GitHub. Użyto narzędzia
git filter-branchdo usunięcia z historii gita dużego pliku binarnego (tmp/main.exe- 13MB), który blokował synchronizację. - Weryfikacja
.gitignore: Upewniono się, że pliki.envzawierające sekrety są poprawnie ignorowane i nie trafiają do repozytorium.
5. Gotowość na skalowanie (Aplikacja Mobilna)
Przyjęta architektura (publiczny backend zabezpieczony kluczem API) jest w pełni gotowa na przyszłą rozbudowę systemu. W przypadku tworzenia aplikacji mobilnej, wystarczy zaszyć w niej ten sam API_KEY (lub wygenerować osobny klucz dla platform mobilnych), co pozwoli na bezpośrednią i bezpieczną komunikację z backendem bez konieczności przebudowywania obecnej infrastruktury.



Sekcja komentarzy
Ale ciakawe