sobota, 23 czerwca 2018

Apka Node.JS na platformie Heroku

Zabawy z technologią MEAN Stack ciąg dalszy. Tym razem parę słów na temat wdrożenia. Znalazłem doskonałą platformę stworzoną właśnie do takich zadań - Heroku. Mamy tu możliwość uruchamiania aplikacji różnego typu, w tym Node.JS.

Istnieje kilka metod przesyłania kodu aplikacji na platformę: za pomocą Heroku Gita, za pomocą importu repozytorium z GitHuba, za pomocą importu z Dropboxa oraz za pomocą Container Registry. Ja wybrałem pierwszą metodę. Polega na wysłaniu kodu (git push) ze swego lokalnego repozytorium do repozytorium Gita na platformie Heroku.

Aplikacja, którą napisałem, potrzebuje bazy. Bazę mongoDB tworzę i przechowuję z kolei na platformie mLab. Gdy baza jest gotowa, tworzymy dla niej użytkownika. Dostęp do bazy uzyskujemy poprzez connection string, który zawiera nazwę hosta, numer portu, nazwę bazy, nazwę użytkownika i hasło.

Kod naszej aplikacji musi zatem posługiwać się takim stringiem. Jednak aby tych informacji nie przechowywać wprost w kodzie aplikacji - który jest przecież trzymany i potem przeglądany w repozytorium Gita - zapisałem je w zmiennych systemowych, które się tworzy z poziomu platformy Heroku.

W efekcie mamy w pełni działającą aplikację w chmurze. Wszystko odbywa się prosto, szybko i wygodnie. Do uruchomienia nie potrzebujemy ani serwera, ani hostingu, ani nawet własnej domeny. Opisane powyżej czynności ująłem w prostym tutorialu obrazkowym, który zintegrowałem z działającą aplikacją - zapraszam do zapoznania się: https://mean-stack-web.herokuapp.com.

wtorek, 6 lutego 2018

MEAN Stack

Od jakiegoś czasu interesuje mnie temat MEAN Stack-a, czyli stosu technologicznego MongoDB + Express.js + Angular + Node.js. Chciałem bliżej zapoznać się z tymi groźnie brzmiącymi terminami. Angulara już co prawda poznałem - napisałem nawet za jego pomocą apkę (Projekt Angular) - ale pozostałe elementy były dla mnie obce.

Zacznijmy od bazy danych. Przez całe życie - no, może przez pół - używałem relacyjnych baz danych, a konkretnie SQL Server, MySQL. Natura tych baz zapewniała mi z jednej strony elastyczność w projektowaniu modelu aplikacji, a z drugiej dawała możliwość tworzenia złożonych zapytań, dzięki którym dostawałem potrzebne dane. Te cechy sprawiały, że nie wyobrażałem sobie stosowania w aplikacji bazy NoSQL. Ale czy na pewno? Może baza nierelacyjna podoła takiemu zadaniu? No i chciałem to sprawdzić w praktyce.

Stworzyłem projekt aplikacji opartej na bazie MongoDB. Potrzebowałem jeszcze hostingu, platformy, na której to wdrożę. Skorzystałem z OpenShift, który oferuje postawienie aplikacji Node.js na darmowym koncie. A dlaczego Node.js? Bo chciałem pobawić się JavaScriptem na backendzie. Chciałem zobaczyć, jak JavaScript sprawdza się nie tylko w przeglądarkach, ale również na serwerach. No i jak dla mnie bomba! Rewelacja! Mam ulubiony język programowania w każdej warstwie aplikacji! A jeśli dodam, że w całej aplikacji używamy genialnego formatu przesyłania danych JSON, zaczynam czuć się jak w domu!

Ogromnym ułatwieniem przy tworzeniu aplikacji są frameworki. Część serwerową bierze na siebie Express.js. Zapewnia routing, obsługę requestów, komunikację z bazą danych, wysyłanie danych i komunikatów do przeglądarki użytkownika. A wszystko w JavaScript i JSON! Część kliencką bierze na siebie Angular. Zapewnia powiązanie danych z elementami interfejsu, manipulację na widokach, zarządzanie szablonami HTML.

Gdy zebrałem to wszystko do kupy, powstała zgrabna aplikacja-demo typu ToDoList, którą możecie obejrzeć pod linkiem MEAN Stack Auth App, i której kod znajdziecie na GitHubie pod linkiem MEAN Stack App.