1. Giriş
Bu gönderide,Cloud Run ve MongoDB'nin birlikte çalışarak tamamen sunucusuz bir MEAN yığını uygulama geliştirme deneyimini nasıl sağlayacağını göreceğiz. Cloud Run ve MongoDB'nin çoklu bulut uygulama veri platformu MongoDB Atlas ile sunucusuz MEAN uygulaması derlemeyi öğreneceksiniz.
Cloud Run nedir?
Cloud Run, tümüyle yönetilen bir platformda herhangi bir dilde (Go, Python, Java, Node.js, .NET ve Ruby dahil) yazılmış ölçeklenebilir container mimarisine alınmış uygulamalar derleyip dağıtmanızı sağlar. Cloud Run aşağıdaki avantajları sunarak ligin dışında kalıyor:
- Kodu, isteği algılayan ve HTTP istekleri aracılığıyla çağıran durum bilgisiz birden fazla container'da paketleme
- Yalnızca kullandığınız kaynaklar için ödeme yaparsınız
- İstediğiniz programlama dilini, işletim sistemi kitaplığını veya ikili programı destekler
Tam bağlamda daha fazla özellik için bu bağlantıya göz atın.
MongoDB Atlas ile sunucusuz veritabanı
MongoDB, bu sorunu çözmek için Atlas'ta yeni bir tümüyle yönetilen, sunucusuz veritabanı dağıtımı olan sunucusuz örnekleri kullanıma sundu. Sunucusuz örnekler sayesinde, altyapı hakkında endişelenmenize gerek kalmaz. Veritabanınızı dağıttığınızda uygulamalı yönetim gerektirmeden, talebe göre sorunsuz bir şekilde ölçeklendirilir ve ölçeklendirilir. İşin en iyi tarafı da, sizden yalnızca gerçekleştirdiğiniz işlemler için ücret alınması. Mimarimizi tamamen sunucusuz hale getirmek için Cloud Run ve MongoDB Atlas özelliklerini birleştireceğiz.
MEAN Yığını
MEAN yığını, tamamen JavaScript ve JSON ile tam yığın web uygulamaları oluşturmaya yönelik bir teknoloji yığınıdır. MEAN yığını; MongoDB, Express, Angular ve Node.js olmak üzere dört ana bileşenden oluşur.
- MongoDB, verilerin depolanmasından sorumludur.
- Express.js, API'leri oluşturmaya yönelik bir Node.js web uygulaması çerçevesidir.
- Angular, istemci taraflı bir JavaScript platformudur.
- Node.js, sunucu tarafı bir JavaScript çalışma zamanı ortamıdır. Sunucu, veritabanına bağlanmak ve verileri alıp depolamak için MongoDB Node.js sürücüsünü kullanır.
Neler oluşturacaksınız?
MongoDB, Express JS, Angular JS ve Node JS'de tam yığın Çalışan-İş Rolü uygulaması yazacaksınız. Şunları içerir:
- Node JS ve Express JS'deki container mimarisine alınmış bir sunucu uygulaması
- AngularJS'de container mimarisine alınmış bir istemci uygulaması derlemesi
- Her iki uygulama da Cloud Run'da dağıtılır
- Sunucu uygulaması, MongoDB NodeJS sürücüsü kullanarak Serverless MongoDB örneğine bağlanıyor
- Server API, veritabanıyla okuma-yazma etkileşimlerini gerçekleştirir
- İstemci uygulaması, Çalışan-İş Rolü uygulamasının kullanıcı arayüzüdür
Neler öğreneceksiniz?
- Sunucusuz MongoDB Örnekleri oluşturma
- Cloud Run projesi oluşturma
- Google Cloud Run'da web uygulamaları dağıtma
- MEAN Yığın Uygulaması oluşturma ve dağıtma
2. Şartlar
3. MongoDB Serverless örneğini ve veritabanını oluşturma
- Başlamak için Google Cloud'da MongoDB Atlas'ı kullanmaya başlayın
- Kaydolduktan sonra, "Veritabanı Oluştur"u tıklayın düğmesini tıklayın. Aşağıdaki yapılandırmayı seçin:
- Sunucusuz örneğiniz hazırlandıktan sonra çalışır durumda olduğunu göreceksiniz
- "Bağlan"ı tıklayın. bağlantı IP adresi ve veritabanı kullanıcısı ekleme düğmesi
- Bu codelab için "Her Yerden Erişime İzin Ver" ayarını kullanacağız. ayarını değiştirebilirsiniz. MongoDB Atlas, bir dizi güvenlik ve erişim özelliği içerir. Güvenlik özellikleri belgelerindeki makaleden bunlar hakkında daha fazla bilgi edinebilirsiniz
- Veritabanı kullanıcı adı ve şifresi için istediğiniz kimlik bilgilerini kullanın. Bu adımlar tamamlandıktan sonra aşağıdakileri göreceksiniz:
- "Bağlantı yöntemi seçin"i tıklayarak devam edin düğmesini tıklayıp "Uygulamanızı bağlayın"ı seçin.
- Gördüğünüz bağlantı dizesini kopyalayıp kendi şifrenizle değiştirin. Bu dizeyi aşağıdaki bölümlerde veritabanımıza bağlanmak için kullanacağız
4. Cloud Run projesi oluşturma
- Öncelikle Cloud Console'da oturum açın, yeni proje oluşturun veya mevcut bir projeyi yeniden kullanın
- Oluşturduğunuz projenin Proje kimliğini unutmayın
- Aşağıda yeni proje sayfasını gösteren resim verilmiştir. Yeni proje sayfasını oluştururken proje kimliğinizi burada görebilirsiniz
- Ardından, Cloud Shell'den Cloud Run API'yi etkinleştirin:
- Cloud Shell'i Cloud Console'dan etkinleştirin. Cloud Shell'i Etkinleştir'i tıklamanız yeterlidir
- Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin PROJE kimliğinize ayarlandığını göreceksiniz. Herhangi bir nedenle proje ayarlanmamışsa şu komutu vermeniz yeterlidir:
gcloud config set project PROJECT_ID
- Aşağıdaki komutu kullanın:
gcloud services enable run.googleapis.com
- Kod referansları için Cloud Shell ve Cloud Shell Düzenleyici'yi kullanacağız. Cloud Shell Düzenleyici'ye erişmek için Cloud Shell Terminal'de Düzenleyiciyi Aç'ı tıklayın:
5. MEAN Yığın Projesini Klonlama
- Çalışan yönetimi web uygulaması dağıtacağız. REST API, Express ve Node.js ile oluşturulmuştur. Angular ile web arayüzü; Veriler daha önce oluşturduğumuz MongoDB Atlas örneğinde depolanır
- Cloud Shell Terminal'de aşağıdaki komutu çalıştırarak proje deposunu klonlayın:
git clone https://github.com/mongodb-developer/mean-stack-example.git
6. Express ve Node.js REST API'yi dağıtma
Docker Yapılandırma Dosyası
- İlk olarak Express REST API için bir Cloud Run hizmeti dağıtacağız. Dağıtımımız için en önemli dosya Docker yapılandırma dosyasıdır. Bir göz atalım:
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"]
- Yapılandırma, Node.js'yi ayarlar ve projeyi kopyalayıp oluşturur. Kapsayıcı başladığında aşağıdaki komut, hizmeti başlatır
node dist/server.js
- Yeni bir Cloud Run dağıtımı başlatmak için sol kenar çubuğundaki Cloud Run simgesini tıklayın:
- Ardından, Cloud Run'a dağıt simgesini tıklayın:
- Hizmet yapılandırmasını aşağıdaki gibi doldurun:
- Hizmet adı: node-express-api
- Dağıtım platformu: Cloud Run (tümüyle yönetilen)
- Bölge: Gecikmeyi azaltmak için veritabanı bölgenize yakın bir bölge seçin
- Kimlik doğrulama: Kimliği doğrulanmayan çağrılara izin ver
- Düzeltme Ayarları altında, Gelişmiş Ayarları Göster'i tıklayın.
- Container bağlantı noktası: 5200
- Ortam değişkenleri. Aşağıdaki anahtar/değer çiftini ekleyin ve kendi MongoDB Atlas dağıtımınızın bağlantı dizesini eklediğinizden emin olun:
ATLAS_URI:mongodb+srv:/<username>:<password>@sandbox.pv0l7.mongodb.net/meanStackExample?retryWrites=true&w=majority
- Build ortamı için Cloud Build'i seçin
- Son olarak, Derleme Ayarları bölümünde şunları seçin:
- Oluşturucu: Docker
- Docker: ortalama-stack-example/server/Dockerfile
- İlk Cloud Run hizmetinizin dağıtımını takip etmek için Deploy (Dağıt) ve ardından Show Ayrıntılı Günlükleri Göster'i tıklayın.
- Derleme tamamlandıktan sonra dağıtılan hizmetin URL'sini görürsünüz:
- URL'yi açıp "/employees" ekleyin. sona
- Şu anda veritabanında hiç doküman olmadığından boş bir dizi görmeniz gerekir.
Kullanıcı arayüzünü dağıtarak biraz ekleme yapalım.
7. Angular Web Uygulamasını Dağıtma
Angular uygulamamız istemci dizinindedir. Dağıtmak için Nginx sunucusunu ve Docker'ı kullanacağız. Angular uygulama dağıtımınız için Firebase Hosting'i kullanma seçeneğiniz de vardır. Bu sayede içeriğinizi doğrudan CDN'de (içerik yayınlama ağı) yayınlayabilirsiniz.
Yapılandırma Dosyaları
Yapılandırma dosyalarına göz atalım:
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;
}
}
}
- Nginx yapılandırmasında varsayılan bağlantı noktasını (8080) ve başlangıç dosyasını (index.html) belirtiriz.
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;"]
- Docker yapılandırmasında Node.js bağımlılıklarını yükleyip projeyi oluştururuz. Ardından, derlenen dosyaları container'a kopyalar, Nginx hizmetini yapılandırır ve başlatırız
- Son olarak, istemci uygulamamızın istek gönderebilmesi için REST API'nin URL'sini yapılandırmamız gerekir. URL'yi projede yalnızca tek bir dosyada kullandığımızdan, URL'nin kodunu gömüyoruz. Alternatif olarak, ortam değişkenini pencere nesnesine ekleyebilir ve oradan erişebilirsiniz.
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';
...
- Cloud Run'a dağıtıma hazırız. Aşağıdaki yapılandırma ayarlarıyla yeni bir dağıtım başlatın:
- Service Settings: Create a service
- Hizmet adı: angle-web-app
- Dağıtım platformu: Cloud Run (tümüyle yönetilen)
- Kimlik doğrulama: Kimliği doğrulanmayan çağrılara izin ver
- Build ortamı için Cloud Build'i seçin
- Son olarak, Derleme Ayarları bölümünde şunları seçin:
- Oluşturucu: Docker
- Docker: ortalama-stack-example/client/Dockerfile
- Dağıt düğmesini tekrar tıklayın ve uygulamanız buluta gönderilirken günlükleri izleyin. Dağıtım tamamlandığında istemci uygulamasının URL'sini görürsünüz.
- URL'yi açın ve uygulamanızla oynayın!
8. Temizleme
Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız aşağıdaki adımları uygulayın.
MongoDB örneklerini sonlandırma
- MongoDB Örneği kümelerine gidin
- Kümeyi ve oluşturduğunuz örneği seçin
- Küme adının yanındaki üç nokta simgesini tıklayın ve listeden Sonlandır'ı seçin.
Cloud Run Dağıtımlarını silme
- Google Cloud Console'da Cloud Run sayfasına gidin.
- Silmek istediğiniz Cloud Run hizmetini seçin
- Konsolun en üstündeki sil simgesini tıklayın.
9. Tebrikler
Tebrikler, Cloud Run'da MEAN Yığın Web Uygulamasını başarıyla oluşturdunuz.