Czym jest Symfony Cloud?
W idealnym świecie wszystko – commit kodu, testy, staging – dałoby się zrobić jednym poleceniem i z poziomu jednej platformy. SymfonyCloud w dużej mierze to umożliwia oraz eliminuje konieczność budowania i utrzymywania własnej infrastruktury. Jeśli należysz do 600 tysięcy użytkowników Symfony i chcesz przyspieszyć cały cykl wdrożeniowy bez wchodzenia w szczegóły konfiguracji serwerów i baz SQLowych – warto znać tę platformę.

SymfonyCloud – czym dokładnie jest?
SymfonyCloud – czym dokładnie jest?
SymfonyCloud jest określane przez producentów jako PaaS, czyli Platform-as-a-Service (platforma jako usługa). Można je opisać jako hosting zoptymalizowany pod Symfony lub PaaS z pełną integracją z tym ekosystemem. Platforma zarządza infrastrukturą projektu – sam programista nie musi samodzielnie instalować ani konfigurować serwerów webowych czy baz danych, wystarczy zadeklarować potrzebne usługi w pliku konfiguracyjnym. Całość jest silnie zintegrowana z Symfony; wykorzystuje jego modułową konstrukcję, umożliwia integrację z zewnętrznymi systemami cache i wspiera funkcje autowiringu.
SymfonyCloud powstało na jednej głównej idei: infrastruktura serwerowa jest częścią Twojej aplikacji, więc powinna ewoluować razem z kodem.
Każda gałąź w repozytorium Git może wprowadzać nie tylko zmiany w logice aplikacji, ale również modyfikacje środowiska – jak nowe usługi, aktualizacje baz danych czy poprawki konfiguracyjne. Plus, SymfonyCloud umożliwia tworzenie izolowanych środowisk testowych dla każdej gałęzi, co pozwala niezależnie sprawdzać działanie aplikacji oraz powiązanych z nią usług jeszcze przed wdrożeniem. W ten sposób platforma pozwala np. na bieżąco weryfikować, jak będzie wyglądała tworzona strona internetowa, jeśli w czasie pracy wprowadzisz mniejsze lub większe zmiany.
Główne korzyści SymfonyCloud
Główne korzyści SymfonyCloud
Jakie są zalety SymfonyCloud i samego wdrażania aplikacji Symfony w chmurze z perspektywy developerów (oraz project managerów)?

- Szybkie uruchamianie projektów – wystarczy kilka sekund, aby uruchomić produkt i na nim działać. SymfonyCloud jest zbudowane z myślą o CLI. Projekt może być migrowany do SymfonyCloud poprzez zwykłe przeniesienie kodu i bazy danych.
- Synchronizacja z repozytorium Git – należy skorzystać z opisowego pliku konfiguracyjnego przechowywanego bezpośrednio w repozytorium Git, aby zmienić i śledzić wymagania infrastrukturalne wraz z kodem.
- Wielowarstwowy system plików wspierający produkcję i optymalizację aplikacji Symfony – bazując na technologii Ceph, możesz stworzyć wiele natychmiastowych klonów tworzonej aplikacji. Każda nowo utworzona „warstwa” projektu zawiera wszystkie zmiany (konfigurację, kod i zawartość) na szczycie istniejącego systemu plików.
- Brak potrzeby instalowania usługi na swojej maszynie – z lokalnej maszyny możesz utworzyć „tunel” do infrastruktury SymfonyCloud. Pozwala to przetestować swój kod z usługami na żywo i dokładną kopią danych powstałych w trakcie tworzenia. Nie musisz instalować, konfigurować ani zarządzać żadnymi dodatkowymi usługami.
- Kontrola z poziomu terminalu – dzięki SymfonyCloud możesz tworzyć nowe środowiska, ustawiać zmienne środowiskowe, dodawać integracje, wdrażać, skalować i wiele więcej.
- Wsparcie dla najnowszych wersji Symfony i PHP – platforma jest rozwijana równolegle z ekosystemem Symfony, dlatego SymfonyCloud wspiera wszystkie aktualne wersje frameworka oraz samego języka PHP – w tym także wydania LTS (Long-Term Support).
- Zintegrowane i elastyczne procesy CI/CD – platforma wspiera automatyzację procesu wdrażania dzięki integracji z systemem kontroli wersji Git. Każda nowa gałąź automatycznie generuje środowisko testowe, w którym można uruchomić predefiniowane buildy i testy. Deployment sprowadza się wtedy do scalania gałęzi. Plus, możliwa jest też integracja z zewnętrznymi narzędziami CI/CD (np. GitHub Actions, GitLab CI, CircleCI).
- Duża skalowalność – SymfonyCloud pozwala w każdej chwili zwiększyć liczbę instancji lub dodać nowe usługi (kolejki, cache, bazy danych), a dzięki wbudowanemu load balancingowi, automatycznie rozłoży ruch między instancjami.
- Przewidywalne modele cenowe – co ważne, SymfonyCloud ma bardzo transparentny model rozliczeń oparty na zużyciu zasobów – płacisz za określoną z góry liczbę instancji, pamięć RAM i przestrzeń na dysku.
Jak działa SymfonyCloud?
Jak działa SymfonyCloud?
SymfonyCloud jest w zasadzie kompletną platformą do zarządzania cyklem życia aplikacji. Opiera się m.in. na repozytorium Git, konteneryzacji, ale też na narzędziach z szerszego środowiska Symfony. Poniżej sprawdzisz, jak to wszystko działa w praktyce.
Integracja z Git i struktura projektu
Integracja z Git i struktura projektu
Sercem całego projektu jest repozytorium Git. Przechowywany jest tam nie tylko kod aplikacji, ale także konfiguracja infrastruktury (np. w pliku .symfony.cloud.yaml). Każdy projekt może składać się z wielu aplikacji (np. frontend, backend API, worker), zarządzanych niezależnie – ale wciąż w ramach jednego repozytorium.
Co chyba najważniejsze, każda gałąź Git automatycznie generuje nowe, izolowane środowisko – co pozwala testować zmiany w kodzie i konfiguracji bez wpływu na inne instancje. Środowiska te dziedziczą ustawienia i konfigurację z głównej gałęzi (np. produkcyjnej), ale można je łatwo dostosowywać pod konkretne cele (np. testy A/B, sandboxy dla klienta, hotfixy).
Konteneryzacja i wirtualne klastry
Konteneryzacja i wirtualne klastry
Każda aplikacja i usługa uruchamiana na SymfonyCloud działa w odizolowanym kontenerze. Takie podejście gwarantuje pełną spójność środowisk oraz większe bezpieczeństwo. Zbiór kontenerów połączonych w ramach jednego środowiska (np. aplikacja Symfony + PostgreSQL + Redis) tworzy tzw. wirtualny klaster.
Dla każdej gałęzi Git tworzony jest osobny klaster – z własną instancją aplikacji i usług towarzyszących. Główna gałąź (main, master lub dowolnie wyznaczona przez developera) staje się środowiskiem produkcyjnym, podczas gdy pozostałe działają jako wersje testowe, stagingowe lub rozwojowe.
Proces budowy aplikacji
Proces budowy aplikacji
Gdy tylko wykonasz git push, SymfonyCloud wykryje aktualizację wybranej gałęzi i automatycznie uruchomi proces budowy aplikacji w pełnej izolacji od działającego środowiska. Wszystkie zależności PHP (np. przez Composer, npm/yarn), assety frontendowe i inne operacje zdefiniowane w hookach buildowych (build i build:assets w .symfony.cloud.yaml) będą wykonywane w tymczasowym build enviroment.
Po zakończeniu builda platforma stworzy gotowy do wdrożenia, skonteneryzowany artefakt, który można automatycznie audostępnić w wybranym środowisku.
Proces wdrażania aplikacji
Proces wdrażania aplikacji
SymfonyCloud umożliwia też stosowanie hooków deploymentowych (deploy, post_deploy). Można w nich uruchomić np. migracje bazy danych, czyszczenie cache czy inne operacje związane z wdrożeniem aplikacji.
Platforma automatycznie zarządza przełączaniem wersji aplikacji; nowa instancja aktywuje się tylko wtedy, gdy cały proces wdrożenia zakończy się sukcesem – to zmniejsza ryzyko przestojów w dostępie do aplikacji.
Zarządzanie usługami i konfiguracją
Zarządzanie usługami i konfiguracją
Sporą zaletą jest to, że platforma umożliwia łatwe zarządzanie usługami zewnętrznymi – bazami danych (PostgreSQL, MySQL), systemami cache (Redis), message brokers (RabbitMQ) czy wyszukiwarkami (Elasticsearch).
Połączenia są automatycznie konfigurowane przez platformę, a dane wrażliwe (np. hasła, klucze API) bezpiecznie przechowywane jako sekrety. Można je dodawać i edytować za pomocą CLI lub dashboardu; są zaszyfrowane i dostępne wyłącznie dla wybranych środowisk, zgodnie z zasadą minimalnego dostępu (principle of least privilege).
Dostęp i interakcja z środowiskami
Dostęp i interakcja z środowiskami
Środowiskami można w 100% zarządzać z poziomu Symfony CLI – terminala do monitorowania logów, przeglądania statusów buildów i deploymentów, dodawania zmiennych oraz kontrolowania przepływu ruchu.
W razie potrzeby można połączyć się bezpośrednio z kontenerem aplikacji przez SSH, aby wykonać diagnostykę lub uruchomić ręczne komendy (np. php bin/console). Platforma umożliwia również tunelowanie usług (np. bazy danych) na urządzenie lokalne, więc możesz testować aplikację na swoim sprzęcie z danymi ze środowiska stagingowego lub produkcyjnego.