1. Wprowadzenie
W tym poście dowiemy się,jak Cloud Run i MongoDB umożliwiają całkowicie bezserwerowe tworzenie aplikacji w stosie MEAN. Dowiesz się, jak utworzyć bezserwerową aplikację MEAN przy użyciu Cloud Run i MongoDB Atlas – platformy danych aplikacji wielochmurowych w MongoDB.
Co to jest Cloud Run?
Cloud Run umożliwia tworzenie i wdrażanie skalowalnych aplikacji skonteneryzowanych w dowolnym języku (w tym Go, Python, Java, Node.js, .NET i Ruby) na platformie w pełni zarządzanej. Cloud Run wyróżnia się na tle ligi, zapewniając:
- Kod pakietu w wielu bezstanowych kontenerach, które rozpoznają żądania i wywołują go za pomocą żądań HTTP
- Opłaty będą naliczane tylko za konkretne zasoby, z których korzystasz
- Obsługa dowolnego języka programowania, biblioteki systemu operacyjnego i dowolnej biblioteki
Kliknij ten link, aby zobaczyć więcej funkcji w pełnym kontekście.
Bezserwerowa baza danych z MongoDB Atlas
W celu rozwiązania tego problemu firma MongoDB wprowadziła instancje bezserwerowe, czyli nowe, w pełni zarządzane, bezserwerowe wdrożenie bazy danych w środowisku Atlas. Dzięki instancjom bezserwerowym nie musisz już zastanawiać się nad infrastrukturą. Wystarczy, że wdrożysz bazę danych, a będzie ona płynnie skalowana odpowiednio do zapotrzebowania, co nie wymaga bezpośredniego zarządzania. A najlepsze jest to, że płacisz tylko za prowadzone działania. Aby nasza architektura była naprawdę bezserwerowa, połączymy możliwości Cloud Run i MongoDB Atlas.
Stos MEAN
Stos MEAN to stos technologiczny służący wyłącznie do tworzenia pełnoekranowych aplikacji internetowych w językach JavaScript i JSON. Stos MEAN składa się z 4 głównych komponentów – MongoDB, Express, Angular i Node.js.
- Za przechowywanie danych odpowiada MongoDB.
- Express.js to platforma aplikacji internetowych Node.js do tworzenia interfejsów API.
- Angular to platforma JavaScript działająca po stronie klienta.
- Node.js to środowisko wykonawcze JavaScriptu po stronie serwera. Serwer używa sterownika MongoDB Node.js do łączenia się z bazą danych oraz pobierania i przechowywania danych.
Co utworzysz
Nauczysz się tworzyć pełny stos aplikacji w roli pracownika w ramach zadań w MongoDB, Express JS, Angular JS i Node JS. Zawiera ona:
- Aplikacja serwerowa w Node.js i Express JS, skonteneryzowana
- Aplikacja kliencka kompilacja w AngularJS, skonteneryzowana
- Obie aplikacje są wdrożone w Cloud Run
- Aplikacja serwera łączy się z bezserwerową instancją MongoDB za pomocą sterownika MongoDB NodeJS
- Interfejs API serwera wykonuje interakcje odczytu i zapisu z bazą danych
- Aplikacja kliencka to interfejs użytkownika aplikacji Employee-Job Role
Czego się nauczysz
- Jak utworzyć bezserwerowe instancje MongoDB
- Jak skonfigurować projekt Cloud Run
- Jak wdrażać aplikacje internetowe w Google Cloud Run
- Jak utworzyć i wdrożyć aplikację wykorzystującą stos MEAN
2. Wymagania
3. Tworzenie bezserwerowej instancji i bazy danych MongoDB
- Zacznij korzystać z MongoDB Atlas w Google Cloud.
- Po rejestracji kliknij „Utwórz bazę danych”. przycisk tworzenia nowej instancji bezserwerowej. Wybierz tę konfigurację:
- Po udostępnieniu instancji bezserwerowej powinna ona zacząć działać
- Kliknij „Połącz”. przycisk dodawania adresu IP połączenia i użytkownika bazy danych
- W tym ćwiczeniu w Codelabs użyjemy ustawienia „Zezwalaj na dostęp z dowolnego miejsca” . MongoDB Atlas oferuje zestaw funkcji zabezpieczeń i dostępu. Więcej informacji na ten temat znajdziesz w artykule dokumentacji funkcji zabezpieczeń
- Użyj wybranych danych logowania dla nazwy użytkownika i hasła bazy danych. Po wykonaniu tych czynności powinien wyświetlić się komunikat:
- Kliknij „Wybierz metodę połączenia”. i wybierz „Połącz aplikację”.
- Skopiuj wyświetlany ciąg połączenia i zastąp hasło własnym. Użyjemy tego ciągu znaków do łączenia się z naszą bazą danych w kolejnych sekcjach
4. Konfigurowanie projektu Cloud Run
- Najpierw zaloguj się w konsoli Google Cloud, utwórz nowy projekt lub wykorzystaj już istniejący.
- Zapamiętaj identyfikator utworzonego projektu
- Poniżej znajduje się obraz przedstawiający stronę nowego projektu, na której jest widoczny identyfikator projektu podczas jego tworzenia
- Następnie włącz Cloud Run API w Cloud Shell:
- Aktywuj Cloud Shell z poziomu konsoli Cloud. Po prostu kliknij Aktywuj Cloud Shell
- Po nawiązaniu połączenia z Cloud Shell powinno pojawić się potwierdzenie, że użytkownik jest już uwierzytelniony, a projekt jest już ustawiony na Twój IDENTYFIKATOR PROJEKTU. Jeśli z jakiegoś powodu projekt nie jest skonfigurowany, uruchom po prostu to polecenie:
gcloud config set project PROJECT_ID
- Użyj tego polecenia:
gcloud services enable run.googleapis.com
- Jako odwołania do kodu użyjemy Cloud Shell i edytora Cloud Shell. Aby uzyskać dostęp do edytora Cloud Shell, kliknij Otwórz edytor w terminalu Cloud Shell:
5. Klonowanie projektu stosu MEAN
- Wdrożymy aplikację internetową do zarządzania pracownikami. Interfejs API REST korzysta z środowisk Express i Node.js; interfejsu internetowego za pomocą Angular; a dane będą przechowywane w utworzonej wcześniej instancji MongoDB Atlas
- Sklonuj repozytorium projektu, wykonując w terminalu Cloud Shell to polecenie:
git clone https://github.com/mongodb-developer/mean-stack-example.git
6. Wdrażanie interfejsów API typu REST Express i Node.js
Plik konfiguracji Dockera
- Najpierw wdrożymy usługę Cloud Run dla interfejsu Express API typu REST. Najważniejszym plikiem dla naszego wdrożenia jest plik konfiguracji Dockera. Spójrzmy na to:
mean-stack-example/server/Dockerfile
# Use the official lightweight Node.js 12 image.
# https://hub.docker.com/_/node
FROM node:17-slim
WORKDIR /usr/app
COPY ./ /usr/app
# Install dependencies and build the project.
RUN npm install
RUN npm run build
# Run the web service on container startup.
CMD ["node", "dist/server.js"]
- W ramach konfiguracji zostanie utworzony Node.js oraz zostanie skopiowany i skompilowany projekt. Po uruchomieniu kontenera poniższe polecenie uruchomi usługę
node dist/server.js
- Aby rozpocząć nowe wdrożenie Cloud Run, kliknij ikonę Cloud Run na pasku bocznym po lewej stronie:
- Następnie kliknij ikonę Wdróż w Cloud Run:
- Wpisz konfigurację usługi w ten sposób:
- Nazwa usługi: node-express-api
- Platforma wdrożenia: Cloud Run (w pełni zarządzana)
- Region: wybierz region blisko regionu bazy danych, aby zmniejszyć czas oczekiwania
- Uwierzytelnianie: zezwalaj na nieuwierzytelnione wywołania
- W sekcji Ustawienia wersji kliknij opcję Pokaż ustawienia zaawansowane, aby je rozwinąć:
- Port kontenera: 5200
- Zmienne środowiskowe. Dodaj tę parę klucz-wartość i pamiętaj, by dodać ciąg połączenia na potrzeby własnego wdrożenia MongoDB Atlas:
ATLAS_URI:mongodb+srv:/<username>:<password>@sandbox.pv0l7.mongodb.net/meanStackExample?retryWrites=true&w=majority
- Jako środowisko kompilacji wybierz Cloud Build
- Na koniec w sekcji Ustawienia kompilacji wybierz:
- Kreator: Docker
- Docker: średni-stos-przykład/serwer/plik Dockerfile
- Kliknij przycisk Wdróż, a następnie Pokaż szczegółowe logi, aby śledzić wdrożenie swojej pierwszej usługi Cloud Run.
- Po zakończeniu kompilacji powinien pojawić się adres URL wdrożonej usługi:
- Otwórz URL i dołącz „/Employees”. do końca
- Powinna być widoczna pusta tablica, ponieważ obecnie w bazie danych nie ma żadnych dokumentów.
Wdróżmy interfejs użytkownika, aby coś do niego dodać.
7. Wdrażanie aplikacji internetowej Angular
Nasza aplikacja Angular znajduje się w katalogu klienta. Aby ją wdrożyć, użyjemy serwera Nginx i Dockera. Możesz też skorzystać z Hostingu Firebase do wdrożenia aplikacji Angular, ponieważ umożliwia to wyświetlanie treści bezpośrednio w sieci CDN (sieci dostarczania treści).
Pliki konfiguracji
Przyjrzyjmy się plikom konfiguracji:
mean-stack-example/client/nginx.conf
events{}
http {
include /etc/nginx/mime.types;
server {
listen 8080;
server_name 0.0.0.0;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
}
- W konfiguracji Nginx określamy port domyślny – 8080, a plik początkowy – index.html.
mean-stack-example/client/Dockerfile
FROM node:17-slim AS build
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
# Install dependencies and copy them to the container
RUN npm install
COPY . .
# Build the Angular application for production
RUN npm run build --prod
# Configure the nginx web server
FROM nginx:1.17.1-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build /usr/src/app/dist/client /usr/share/nginx/html
# Run the web service on container startup.
CMD ["nginx", "-g", "daemon off;"]
- W konfiguracji Dockera instalujemy zależności Node.js i budujemy projekt. Następnie skopiujemy skompilowane pliki do kontenera, konfigurujemy i uruchamiamy usługę Nginx.
- Na koniec musimy skonfigurować adres URL interfejsu API REST, aby nasza aplikacja kliencka mogła wysyłać do niego żądania. Ponieważ korzystamy z adresu URL tylko w jednym pliku w projekcie, zakodujemy go na stałe. Możesz też dołączyć zmienną środowiskową do obiektu window i stamtąd uzyskać do niego dostęp.
mean-stack-example/client/src/app/employee.service.ts
...
@Injectable({
providedIn: 'root'
})
export class EmployeeService {
// Replace with the URL of your REST API
private url = 'https://node-express-api-vsktparjta-uc.a.run.app';
...
- Możemy wdrożyć Cię w Cloud Run. Uruchom nowe wdrożenie z tymi ustawieniami konfiguracji:
- Service Settings: Create a service
- Nazwa usługi: angular-web-app
- Platforma wdrożenia: Cloud Run (w pełni zarządzana)
- Uwierzytelnianie: zezwalaj na nieuwierzytelnione wywołania
- Jako środowisko kompilacji wybierz Cloud Build
- Na koniec w sekcji Ustawienia kompilacji wybierz:
- Kreator: Docker
- Docker: średni-stos-przykład/klient/plik Dockerfile
- Jeszcze raz kliknij przycisk Wdróż i obserwuj logi, gdy aplikacja zostanie przesłana do chmury. Po zakończeniu wdrażania powinien pojawić się adres URL aplikacji klienckiej.
- Otwórz adres URL i wypróbuj swoją aplikację.
8. Czyszczenie danych
Wykonaj te czynności, aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym poście.
Zatrzymywanie instancji MongoDB
- Otwórz klastry instancji MongoDB.
- Wybierz klaster, utworzoną instancję
- Kliknij wielokropek obok nazwy klastra i wybierz z listy opcję Zakończ
Usuwanie wdrożeń Cloud Run
- Otwórz stronę Cloud Run w konsoli Google Cloud.
- Wybierz usługę Cloud Run, którą chcesz usunąć
- Kliknij ikonę usuwania u góry konsoli.
9. Gratulacje
Gratulujemy. Udało Ci się utworzyć aplikację internetową stosu MEAN w Cloud Run.