Czym jest Symfony Cloud?
W roku 2016 podczas konferencji SymfonyCon w Berlinie ogłoszono wydanie SensioCloud. Było to pierwsze narzędzie od SensioLabs, które zostało skierowane do firm z dużymi potrzebami. Usługa odniosła duży sukces. Co jednak z rozwiązaniami tworzonymi w chmurze, które będą przystępne niemal dla każdego? Wielu programistom przydałoby się narzędzie, które wspierałoby ich podczas rozwijania aplikacji od początkowego szkicu po końcowy webowy projekt. Właśnie z tego powodu powstało SymfonyCloud. Jest to platforma stworzona przez developerów Symfony dla innych programistów Symfony.
SymfonyCloud – czym dokładnie jest?
SymfonyCloud jest opisywane przez producentów jako PaaS, czyli Platform-as-a-Service (platforma jako usługa). Jest zoptymalizowana pod developerów Symfony. Rozwiązanie to jest mocno zintegrowane z ekosystemem Symfony, a jego rozwiązania wspierają produktywność programistów. SymfonyCloud można opisać jako hostingowy framework dla Symfony. Platforma zarządza infrastrukturą projektu – sam programista nie musi instalować ani konfigurować serwerów webowych, czy baz danych MySQL.
SymfonyCloud jest zbudowane na jednej głównej idei: infrastruktura serwerowa jest częścią Twojej aplikacji, więc powinna być kontrolowana wraz z wersją aplikacji. Każda gałąź, jaka znajdzie się w repozytorium Git, może przynieść ze sobą naprawy błędów, nowe cechy oraz zmiany w infrastrukturze. Wszystko może być następnie niezależnie testowane, wliczając w to kod aplikacji oraz wszystkie usługi wraz z ich bazami danych. SymfonyCloud pozwala sprawdzić, jak będzie wyglądała tworzona strona internetowa, jeśli w czasie pracy wprowadzimy wybrane zmiany.
Główne korzyści SymfonyCloud
Oto główne korzyści, jakie oferuje SymfonyCloud:
- Szybkie uruchamianie projektów - wystarczy kilka sekund, aby uruchomić produkt i na nim działać. SymfonyCloud zostało zbudowane z myślą o CLI. Projekt może być migrowany do SymfonyCloud poprzez zwykłe przeniesienie kodu z 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 rozwój aplikacji - 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 Symfony Cloud możesz mieć kontrolę z poziomu terminalu – tworzyć nowe środowiska, ustawiać zmienne środowiskowe, dodawać integracje, wdrażać, skalować i wiele więcej.
Jak działa SymfonyCloud?
W omawianej platformie projekt jest połączony z repozytorium Git. Projekt z kolei składa się z jednej lub większej ilości aplikacji. Aplikacja jest katalogiem w repozytorium Git z określoną konfiguracją SymfonyCloud. Projekty są wdrażane w środowiskach. Środowisko jest samodzielną kopią aplikacji, która może być użyta do testowania, Q&A, wdrażania nowych funkcji, usuwania błędów itp.
Każdy projekt wdrażany na SymfonyCloud jest budowany jako wirtualny klaster (virtual cluster), zawierający serię kontenerów. Główna gałąź repozytorium Git jest zawsze wdrażana jako klaster produkcyjny. Każda inna gałąź może być wdrożona jako klaster rozwojowy.
Tworzenie aplikacji
Podczas budowy aplikacji wszystkie potrzebne pliki są instalowane w kontenerach aplikacji. Etap ten można dostosować do swoich potrzeb poprzez zastosowanie hooka. Warto zaznaczyć, że podczas tego procesu nie zmienia się działanie aktualnie modyfikowanej strony.
Wdrożenie aplikacji
Przed wdrożeniem aplikacji, wszystkie przychodzące zapytania są zatrzymywane, dzięki czemu nie dochodzi do opóźnień. Następnie aktualnie działające kontenery są zatrzymywane, a do działania wprowadza się nowe. Później otwierane są połączenia sieciowe pomiędzy różnymi kontenerami wedle tego, jak zostało to określone w plikach konfiguracyjnych.
Informacje o połączeniach dla każdej usługi są dostępne jako zmienne środowiskowe.
Jeśli chodzi o etap budowy, istnieje możliwość zdefiniowania odpowiedniego hooka w celu przygotowania aplikacji. Tworzona aplikacja ma pełny dostęp do wszystkich usług, ale system plików, w którym funkcjonuje kod, jest teraz tylko do odczytu. Na końcu zdejmuje się blokadę z przychodzących zapytań, dzięki czemu właśnie wdrożona aplikacja może z powodzeniem działać.
Podsumowanie
SymfonyCloud to niewątpliwie ciekawe i przydatne rozwiązanie, które znakomicie spełnia potrzeby kreatywnych programistów. Warto bliżej przyjrzeć się jego możliwościom.