Java

Spring Boot #24 – Budowanie profili konfiguracyjnych

Spring Boot

Profilowanie polega na powoływaniu wielu wersji instancji tworzonej aplikacji.

Przykładowo możliwe jest stworzenie na bazie jednego kodu źródłowego aplikacji, która będzie miała profil np. developerski umożliwiający na łączenie się i operowanie z bazą danych H2, oraz profil produkcyjny, gdzie aplikacja będzie wykorzystywała bazę danych PostgreSQL.

Oczywiście możliwości profili idą dużo dalej. Oprócz zarządzania konfiguracją może jest również sterowanie przepływem działania aplikacji (kodu) w zależności od uruchomionego profilu – ten mechanizm zostanie opisany w następnym artykule tej serii.

Przykład

Aby stworzyć profil konfiguracyjny należy utworzyć plik z odpowiednim zarostkiem. Kwestia doboru zarostku należy do programisty. W momencie generowania nowego projektu dostępny jest profil ogólny. Można to zmienić dokonując modyfikacji pliku konfiguracyjnego z application.properties na application-dev.properties i application-prod.properties. Wówczas zostaną utworzone dwa profile dev i prod. Oba mogą mieć różną konfiguracje np.

application-dev.properties:

spring.datasource.url=jdbc:h2:file:./databaseDev
spring.h2.console.enabled=true
spring.h2.console.path=/console
server.port=8081

application-prod.properties:

spring.datasource.url=jdbc:h2:file:./databaseProd
spring.h2.console.enabled=true
spring.h2.console.path=/console
server.port=8082

Teraz w zależności od uruchomionego profilu zostanie utworzona instancja dev lub instancja prod. Różnią się między sobą wykorzystywaną bazą danych, oraz uruchamiają się na różnych portach.

Uruchomienie

Jeśli aplikacja zostanie uruchomiona w standardowy sposobów, to działanie takie zakończy się błędem jeśli nie pozostawiliśmy profilu ogólnego (z plikiem application.properties).
Dlatego ważne jest podanie dodatkowej flagi z informacją, który profil ma zostać uruchomiony. Np.:
spring.profiles.active=dev
Możliwe jest to wywołanie z poziomu parametrów przekazywanych w VM options, wówczas trzeba podać przedrostek -D:
-Dspring.profiles.active=dev

Podsumowanie

Profilowanie to silne narzędzie, które na podstawie jednej wersji kodu umożliwia tworzyć różne wersje aplikacji. W tym artykule została opisana możliwość zarządzania aplikacją w zależności od konfiguracji i tym samym wytworzenia wersji developerskiej i produkcyjnej.

Możliwe jest również tworzenie wersji aplikacji podzielonej na funkcjonalności np. aplikacja w wersji freemium/optimum/premium – gdzie w zależności od zakupionej przez klienta wersji aplikacji dostarczamy mu tylko te funkcjonalności, za które zapłacił. Przykład ten zostanie opisany w następnej części.

Jeśli decydujemy się na zmianę konfiguracji w zależności od instancji to warto zmieniać porty oraz customizować baner. Zapobiegnie to dużej ilości wpadek jakie często powstają przy produkcji oprogramowania. Tak, aby developer nie pomyślał „To ja działałem na produkcji!? Myślałem, że działam na instancji developerskiej” 😀

Tags:
Show Buttons
Hide Buttons