W poprzedniej części naszego cyklu udało nam się z sukcesem przenieść naszą aplikację pod postacią obrazu Docker’owego na Azure. Jednak na Heroku wciąż pozostała baza danych, co sugeruje, że nasza migracja jest wciąż niepełna. W tym artykule chciałbym skupić się na postawieniu dedykowanej bazy danych w chmurze Microsoft’u.
W portalu po wpisaniu frazy Azure Database for PostgreSQL będziemy mogli wybrać jeden z czterech rodzajów wdrożeń. Każdy z nich różni się skalą, możliwościami i kosztami.
Dla przykładowej aplikacji zrealizowanej przez nas w tym cyklu artykułów interesuje nas pojedynczy serwer, który powinien wytrzymać obciążenie aplikacji prototypowej.
Kolejne ekrany pozwolą na dokonfigurowanie wybranej opcji.Pamiętajmy, że w naszym przykładzie zagadnienia security spłycam do minimum, zatem starajcie się chronić hasła które ustawiacie.
Aprowizacja bazy potrwa chwilę, jednak jak się można domyślić utworzona przez nas baza będzie posiadała tylko użytkownika administracyjnego. Odwiedzenie bazy danych pozwoli na lekkie poluzowanie polityki bezpieczeństwa. Zacznijmy od lekkiej liberalizacji ustawień Firewall’a poprzez zezwolenie na dostęp z innych usług Azure. Jeśli chcemy pracować z naszym klientem bazy danych(psql) powinniśmy także odblokować nasz adres IP.
Do dalszej konfiguracji konieczny już będzie klient psql, ale jeśli nie chcemy go instalować wystarczy, że skorzystamy z AzureCLI otrzymamy wygodny terminal zaszyty w przeglądarce internetowej.
Nie ma znaczenia czy dalszą konfigurację wykonamy z terminala, czy z przeglądarki, do połączenia potrzebujemy jednak klienta psql:
% psql --host=<mój host>.postgres.database.azure.com --port=5432 --username=<mój admin>@<mój host> --dbname=postgres
Następnie należy utworzyć kolejno bazę danych, rolę i odpowiednie przywileje:
postgres=> CREATE DATABASE sgdevblog;
CREATE DATABASE
postgres=> CREATE ROLE sgdevblogger WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<moje hasło>';
CREATE ROLE
postgres=> GRANT ALL PRIVILEGES ON DATABASE sgdevblog TO sgdevblogger;
GRANT
Po utworzeniu nowej roli, możemy zaktualizować nasze połączenia. Przykładowy connection string będzie wyglądał następująco:
jdbc:postgresql://<nasza instancja bazy>.postgres.database.azure.com:5432/<baza danych>
I tyle, po restarcie nasza aplikacja powinna już uruchamiać się i korzystać z bazy świeżo utworzonej w Azure.
Jeśli dotrwaliście aż dotąd, można uznać że to ostatni punkt migracji. Jedyną pozostałością jaka została po Heroku, to dług w postaci dziwnie podzielonych properties zawierających poświadczenia bazodanowe.