Bangun aplikasi daftar tugas paling tangguh di dunia – Beragampengetahuan
Mengembangkan aplikasi yang dapat diskalakan dan andal adalah pekerjaan cinta. Sistem cloud-native mungkin berisi unit test, integration test, build test, dan pipeline lengkap untuk membangun dan men-deploy aplikasi dengan mengklik tombol.
Beberapa langkah perantara mungkin diperlukan untuk menghasilkan produk yang andal. Saat aplikasi terdistribusi dan terkontainerisasi membanjiri pasar, begitu pula alat orkestrasi kontainer seperti Kubernetes. Kubernetes memungkinkan kami membangun aplikasi terdistribusi di seluruh kelompok node, dengan toleransi kesalahan, pemulihan otomatis, dan penyeimbangan muatan—di antara banyak fitur lainnya.
Mari jelajahi beberapa alat ini dengan membuat aplikasi daftar tugas terdistribusi di Node.js yang didukung oleh database SQL terdistribusi YugabyteDB.
Contents
mulai
Penerapan produksi mungkin melibatkan penyiapan pipeline CI/CD lengkap untuk mendorong build dalam container ke Google Container Registry untuk dijalankan di Google Kubernetes Engine atau layanan cloud serupa.
Untuk tujuan demonstrasi, mari fokus menjalankan tumpukan serupa secara lokal. Kami akan mengembangkan server Node.js sederhana yang dibangun sebagai gambar buruh pelabuhan untuk dijalankan di Kubernetes di mesin kami.
Kami akan menggunakan server Node.js ini untuk terhubung ke cluster SQL terdistribusi YugabyteDB dan mengembalikan catatan dari titik akhir lainnya.
instal dependensi
Kami mulai dengan menginstal beberapa dependensi untuk membangun dan menjalankan aplikasi kami.
-
desktop buruh pelabuhan
-
Minikube
Hosting YugabyteDB
Selanjutnya, kami membuat akun hosting YugabyteDB dan meluncurkan cluster di cloud. YugabyteDB kompatibel dengan PostgreSQL, jadi Anda juga dapat menjalankan database PostgreSQL di tempat lain, atau menjalankan YugabyteDB secara lokal jika diinginkan.

Untuk ketersediaan tinggi, saya membuat klaster database 3 node yang berjalan di AWS, tetapi untuk tujuan demonstrasi, klaster node tunggal gratis berfungsi dengan baik.
benih database kami
Setelah database kita aktif dan berjalan di cloud, saatnya membuat beberapa tabel dan record. YugabyteDB Managed memiliki shell cloud yang dapat digunakan untuk terhubung melalui browser web, tetapi saya memilih untuk menggunakan shell klien YugabyteDB di mesin lokal saya.
Sebelum terhubung, kita perlu mendownload root certificate dari cloud console.
Saya telah membuat skrip SQL untuk membuat file todos tabel dan beberapa record.
CREATE TYPE todo_status AS ENUM ('complete', 'in-progress', 'incomplete');
CREATE TABLE todos (
id serial PRIMARY KEY,
description varchar(255),
status todo_status
);
INSERT INTO
todos (description, status)
VALUES
(
'Learn how to connect services with Kuberenetes',
'incomplete'
),
(
'Build container images with Docker',
'incomplete'
),
(
'Provision multi-region distributed SQL database',
'incomplete'
);
Kita dapat menggunakan script ini untuk seed database kita.
> ./ysqlsh "user=admin \
host=<DATABASE_HOST> \
sslmode=verify-full \
sslrootcert=$PWD/root.crt" -f db.sql
Dengan basis data kami yang diunggulkan, kami dapat menghubungkannya melalui Node.js.
Bangun server Node.js
Menghubungkan ke database kami sederhana menggunakan driver node-postgres. YugabyteDB membangun driver cerdas YugabyteDB Node.js di atas pustaka ini, yang memiliki fitur tambahan yang membuka kunci kemampuan SQL terdistribusi, termasuk penyeimbangan muatan dan kesadaran topologi.
> npm install express
> npm install @yugabytedb/pg
const express = require("express");
const App = express();
const { Pool } = require("@yugabytedb/pg");
const fs = require("fs");
let config = {
user: "admin",
host: "<DATABASE_HOST>",
password: "<DATABASE_PASSWORD>",
port: 5433,
database: "yugabyte",
min: 5,
max: 10,
idleTimeoutMillis: 5000,
connectionTimeoutMillis: 5000,
ssl: {
rejectUnauthorized: true,
ca: fs.readFileSync("./root.crt").toString(),
servername: "<DATABASE_HOST>",
},
};
const pool = new Pool(config);
App.get("/todos", async (req, res) => {
try {
const data = await pool.query("select * from todos");
res.json({ status: "OK", data: data?.rows });
} catch (e) {
console.log("error in selecting todos from db", e);
res.status(400).json({ error: e });
}
});
App.listen(8000, () => {
console.log("App listening on port 8000");
});
Kemas aplikasi Node.js kita
Untuk menjalankan aplikasi Node.js di Kubernetes, pertama-tama kita perlu membuat image container. Buat Dockerfile di direktori yang sama.
FROM node:latest
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 8000
ENTRYPOINT [ "npm", "start" ]
Semua dependensi server kami akan dibangun ke dalam gambar kontainer.Untuk menjalankan aplikasi kita gunakan npm start perintah, perbarui Anda package.json File dengan skrip startup.
…
"scripts": {
"start": "node index.js"
}
…
Kami sekarang siap untuk membangun citra kami menggunakan Docker.
> docker build -t todo-list-app .
Sending build context to Docker daemon 458.4MB
Step 1/6 : FROM node:latest
---> 344462c86129
Step 2/6 : WORKDIR /app
---> Using cache
---> 49f210e25bbb
Step 3/6 : COPY . .
---> Using cache
---> 1af02b568d4f
Step 4/6 : RUN npm install
---> Using cache
---> d14416ffcdd4
Step 5/6 : EXPOSE 8000
---> Using cache
---> e0524327827e
Step 6/6 : ENTRYPOINT [ "npm", "start" ]
---> Using cache
---> 09e7c61855b2
Successfully built 09e7c61855b2
Successfully tagged todo-list-app:latest
Aplikasi kita sekarang dikemas dan siap dijalankan di Kubernetes.
Menjalankan Kubernetes secara lokal dengan Minikube
Untuk menjalankan lingkungan Kubernetes secara lokal, kita akan menjalankan Minikube, yang membuat kluster Kubernetes di dalam wadah Docker yang berjalan di mesin kita.

Itu mudah!Sekarang kita bisa menggunakan kubectl Alat baris perintah untuk menerapkan aplikasi kita dari file konfigurasi Kubernetes.
Deploy ke Kubernetes
Pertama, kita buat file bernama kubeConfig.yaml Ini akan menentukan komponen cluster kami. Deployment Kubernetes digunakan untuk menjaga agar pod tetap berjalan dan diperbarui.Di sini kita membuat sekelompok node, jalankan todo-app Kontainer yang kami bangun dengan Docker.
apiVersion: apps/v1
kind: Deployment
metadata:
name: todo-app-deployment
labels:
app: todo-app
spec:
selector:
matchLabels:
app: todo-app
replicas: 3
template:
metadata:
labels:
app: todo-app
spec:
containers:
- name: todo-server
image: todo
ports:
- containerPort: 8000
imagePullPolicy: Never
Di file yang sama, kita akan membuat layanan Kubernetes yang menyiapkan aturan jaringan untuk aplikasi Anda dan memaparkannya ke klien.
---
apiVersion: v1
kind: Service
metadata:
name: todo-app-service
spec:
type: NodePort
selector:
app: todo-app
ports:
- name: todo-app-service-port
protocol: TCP
port: 8000
targetPort: 8000
nodePort: 30100
Mari gunakan file konfigurasi kami untuk membuat todo-app-deployment Dan todo-app-serviceHal ini menciptakan klaster jaringan, tahan terhadap kegagalan dan diatur oleh Kubernetes!
> kubectl create -f kubeConfig.yaml
Akses aplikasi kami di Minikube
> minikube service todo-app-service --url
Starting tunnel for service todo-app-service.
Because you are using a Docker driver on darwin, the terminal needs to be open to run it.
Kita dapat menemukan port terowongan dengan menjalankan perintah berikut.
> ps -ef | grep docker@127.0.0.1
503 2363 2349 0 9:34PM ttys003 0:00.01 ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -N docker@127.0.0.1 -p 53664 -i /Users/bhoyer/.minikube/machines/minikube/id_rsa -L 63650:10.107.158.206:8000
Outputnya menunjukkan bahwa terowongan kami berjalan di port 63650.kita dapat mengakses milik kita /todos Akses titik akhir melalui URL ini di browser atau melalui klien.
> curl -X GET -H 'Content-Type: application/json'
{"status":"OK","data":[{"id":1,"description":"Learn how to connect services with Kuberenetes","status":"incomplete"},{"id":2,"description":"Build container images with Docker","status":"incomplete"},{"id":3,"description":"Provision multi-region distributed SQL database","status":"incomplete"}]}
bungkus
Dengan menerapkan infrastruktur terdistribusi di seluruh lapisan aplikasi dan basis data kami, kami telah mengembangkan sistem yang dapat diskalakan dan bertahan.
Saya tahu, saya tahu, saya menjanjikan Anda aplikasi tugas yang paling tangguh di dunia, dan itu tidak menghadirkan antarmuka pengguna. Nah, itu tugasmu! Perluas layanan API yang kami kembangkan di Node.js untuk menyediakan HTML yang diperlukan untuk menampilkan daftar.
Nantikan lebih banyak dari saya di Node.js dan distribusikan SQL – sampai saat itu, teruslah membuat kode!
rencana pengembangan website
metode pengembangan website
jelaskan beberapa rencana untuk pengembangan website, proses pengembangan website, kekuatan dan kelemahan bisnis pengembangan website
, jasa pengembangan website, tahap pengembangan website, biaya pengembangan website
#Bangun #aplikasi #daftar #tugas #paling #tangguh #dunia