To był tydzień pt. „U mnie działa”. Jak zwykle to sprawdzone w boju powiedzenie dało się we znaki. Wszystko za sprawą wdrożenia wszystkich komponentów związanych z projektem Dogevents do chmury Azure. I bynajmniej nie była to sprawka Azure tylko złego podejścia w projekcie i braku zaimplementowanych pewnych mechanizmów takich jak np. konfiguracja. I jeszcze jedno, dlaczego Azure? Bo nie mam możliwości pracy z nim na co dzień a zawsze chciałem go wypróbować, aby zdobyć jakieś doświadczenie i dlatego, że mam tam jakąś kasę do wykorzystania 😁
Architektura
Powyższy diagram przedstawia aktualną architekturę aplikacji, jakie komponenty Azure zostały wykorzystane. Było to moje pierwsze spotkanie z chmurą Microsoftu więc nie obyło się bez problemów ale już teraz mogę powiedzieć, że jest to bardzo wygodne rozwiązanie a automatyczny deploy z github’a to jest po prostu bajka!
Wdrażanie poszczególnych składników zacząłem od backendu czyli tych podstawowych rzeczy, które są wymagane do działania. Opiszę każdy składnik ogólnie. Szczegółowy opis znajdzie się w kolejnych postach.
#1 Resource Group
Coś co nie zostało wymienione na diagramie a z czego korzystają wszystkie usługi Azure. Grupa zasobów pozwala m.in na monitorowanie, zarządzanie, kontrolę dostępu podpiętych do niej usług. Utworzyłem jedną podstawową „Dogevents” do której podpiąłem wszystkie swoje usługi.
|
Dogevents – Azure resource group |
#2 Mongo DB
Azure udostępnia wiele usług bazodanowych – ja wybrałem tą najprostszą „Database as a Service for MongoDB”. Mamy całkiem fajny panel do zarządzania m.in kolekcjami, przeglądania danych, wykonywania zapytań. Jest także sekcja „Connection string”, z której możemy pobrać konfigurację połączenia do bazy danych.
|
Azure – MongoDB connection string |
#3 Dogevents API + Mgmt
Ta część dostarcza dla mnie panel do zarządzania aplikacją oraz udostępnia REST API dla warstwy klienckiej. Wykorzystana technologia ASP.NET Core MVC. Utworzyłem nową aplikację typu Web App i skonfigurowałem automatyczny deploy z github’a. Ta opcja to jest po prostu petarda! Żadnego ręcznego przepychania plików (ech te czasy FTP 😉 ) – wszystko wykonuje się z automatu.
|
Azure – deployment options |
|
Azure – deployment from github |
To jest podstawowa konfiguracja, która wystarcza do wykonania deploy z repoytorium na github. Jest możliwość bardziej zaawansowanej kontroli poprzez skrypty .deployment. Dość przystępnie zostało to opisane
tutaj
#4 Dogevent web client
Kolejny już składnik to aplikacja kliencka wykonana z użyciem Node.js,Vue.js oraz Webpack. Konfiguracja tej usługi przysporzyła mi najwięcej problemów ale to raczej z racji małej jak dotąd znajomości środowiska Node.js i Azure. Największym problemem było to, że ta aplikacja zawiera się w tym samym repozytorium co Dogevents API i deploy uparcie wdrażał właśnie ten projekt. Z pomocą przyszedł Scott Hanselmann i jego post
„Deploying TWO websites to Windows Azure from one Git Repository”. Po wskazaniu, który konkretny projekt (możliwe jest wskazanie na .csproj lub folder) ma zostać wdrożony problem został rozwiązany.
|
Azure – deploy specific project |
Na chwilę obecną brakuje jeszcze jednej rzeczy. Tak aby npm build wykonywał się po stronie Azure. Do tego będę potrzebował wspominanego skryptu .deployment.
#5 DNS zone
Strefa dns potrzebna była aby podpiąć domenę
dogevents.pl pod właściwy adres. To była dla mnie jedna z prostszych rzeczy może dlatego, że pamiętam swoje początki w IT i wszelkie babranie się z Bind pod linuksem 😃Cała procedura zamyka się w kilku krokach:
- Zmiany serwera DNS u rejestratora domeny na serwery nazw Azure: ns1-02.azure-dns.com, ns2-02.azure-dns.net
- Utworzenie strefy DNS
|
Azure – Create DNS zone |
Ta operacja spowoduje przeniesienie domeny na serwer Azure. Aby wskazywała na konkretny zasób – aplikację web, trzeba utworzyć rekord typu A wskazujący na adres IP. Można go odnaleźć w sekcji „Custom domains” aplikacji.
|
Azure – IP adress A record |
Wracamy do konfiguracji utworzonej strefy. Na tym etapie należy wykonać dwie czynności:
- Utworzenie rekordu typu A (Opcja „+ Record set”)
Aby utworzyć podstawowy rekord wystarczy w pole „IP Address” wpisać adres IP naszej aplikacji. Gdybyście byli zainteresowani co oznaczają pozostałe opcję lub co nam daje pole „Name” odsyłam do internetów
|
Azure – create A record |
- Utworzenie rekordu typu TXT wksazującego na pierwotną domenę naszej aplikacji – tą, którą zawsze generuje Azure. Ma ona format nazwa_aplikacji.azurewebsites.net
Tak przygotowaną strefę DNS można podpiąć do aplikacji. Opcja można znaleźć w konfiguracji jako „Custom domains”. Niestety nie jest ona dostępna dla zasobów typu „free” – bezpłatnych.
Podsumowanie
Naprawdę w wielkim skrócie opisałem moją drogę do wdrożenia wszystkich składników projektu Dogevents do chmury Azure. Niestety czasu jest mało a implementacja musi jakoś iść w parze z blogiem 🙂 Gdybyście mieli uwagi, podpowiedzi co można by było rozwiązać inaczej zapraszam do komentowania.
Przydatne linki: