Bagaimana Cara Menerapkan Aplikasi Express.js?
Memilih opsi penerapan yang tepat sangat penting untuk memastikan aplikasi Anda dapat dengan mudah berkembang seiring pertumbuhannya. Artikel ini membahas berbagai opsi penerapan yang tersedia untuk aplikasi Express.js. Secara khusus, artikel ini berfokus pada cara men-deploy aplikasi Express.js ke kontainer Back4app.
Contents
- 1 Apa itu Express.js?
- 2 Keuntungan Menggunakan Express.js
- 3 Kekurangan dari Express.js
- 4 Opsi Penerapan Express.js
- 5 Cara Menerapkan Aplikasi Express ke Kontainer Back4app
- 6 Prasyarat
- 7 Membuat API Express Sederhana
- 8 Mendokumentasikan Aplikasi Express
- 9 Menerapkan Aplikasi Express Dockerized ke Kontainer Back4app
- 10 Cara Mengoptimalkan Citra Docker
- 11 Kesimpulan
- 12 PERTANYAAN YANG SERING DIAJUKAN
- 13 Apa itu Express.js?
- 14 Apa saja opsi penyebaran untuk aplikasi Express.js?
- 15 Bagaimana cara menyebarkan aplikasi Express.js ke dalam container Back4app?
Apa itu Express.js?
Express adalah kerangka kerja ringan tanpa opini yang dibangun di atas Node.js yang menyederhanakan proses pembuatan API web dan seluler yang kompleks.
Menawarkan sistem perutean sederhana yang membantu Anda dengan mudah menentukan titik akhir untuk rute API dan memetakannya ke fungsi penangan.
Ini juga memiliki dukungan middleware yang memungkinkan Anda untuk menambahkan fungsionalitas seperti pencatatan, autentikasi, dan penanganan kesalahan dalam siklus permintaan-permintaan.
Keuntungan Menggunakan Express.js
Beberapa keuntungan menggunakan Express adalah:
- Minimalis dan mudah digunakan: Express.js mengabstraksikan kompleksitas beberapa fitur Node.js seperti perutean. Express.js menyediakan cara sederhana untuk menangani permintaan dan respons API.
- Sangat dapat diperluas: Express.js memiliki komunitas yang besar sehingga menghasilkan ekosistem paket dan ekstensi NPM yang luas yang dapat Anda integrasikan dengan mudah ke dalam aplikasi.
- Berkinerja tinggi: Karena desainnya yang minimal dan memanfaatkan arsitektur Node yang tidak memblokir dan digerakkan oleh peristiwa, Express memiliki kinerja yang tinggi.
- Dukungan komunitas yang kuat: Express.js sudah ada sejak tahun 2010. Dalam kurun waktu tersebut, banyak sekali pengembang yang telah mengadopsinya. Oleh karena itu, ada komunitas besar yang membangun Express yang dapat membantu Anda jika Anda mengalami kesulitan. Selain itu, ada banyak artikel, tutorial, dan dokumen yang ditulis dengan baik yang menjelaskan cara kerja Express.
Kekurangan dari Express.js
Berikut ini adalah beberapa kelemahan Express.js:
- Tidak memiliki opini: Dibandingkan dengan framework seperti Nest.js, Express.js sangat tidak memiliki opini. Kurangnya pendapat ini berarti Anda perlu membuat keputusan tentang struktur dan organisasi proyek yang dapat membosankan terutama ketika Anda memiliki banyak cara untuk melakukan sesuatu.
- Tidak memiliki fitur bawaan: Express.js tidak dikonfigurasikan sebelumnya dan untuk sebagian besar fitur canggih seperti pencatatan, Anda perlu menginstal dependensi tambahan.
Opsi Penerapan Express.js
Infrastruktur sebagai Layanan (IaaS)
Infrastructure as a Service adalah layanan komputasi awan yang menawarkan sumber daya komputasi, jaringan, dan penyimpanan melalui Internet sesuai permintaan.
Dengan IaaS, Anda bertanggung jawab untuk menyediakan dan mengonfigurasi sumber daya untuk aplikasi Anda, sementara penyedia IaaS memelihara infrastruktur fisik yang mendasarinya. Misalnya, jika Anda ingin menggunakan aplikasi Express, Anda dapat membuat dan mengonfigurasi mesin virtual pada penyedia IaaS pilihan Anda.
Pada VM, Anda perlu menginstal dependensi yang diperlukan seperti Node dan npm kemudian menambahkan kode Express ke VM. Anda kemudian dapat memulai aplikasi Express pada VM dan aplikasi tersebut akan dapat diakses melalui internet.
Salah satu keunggulan utama IaaS adalah tingkat kontrol yang disediakannya. Anda dapat menyesuaikan CPU, memori, dan sumber daya penyimpanan VM agar sesuai dengan kebutuhan aplikasi Anda
Namun, penting untuk mempertimbangkan beberapa kelemahan dari pendekatan ini.
Mengelola infrastruktur dan sumber daya seiring dengan perubahan skala dan permintaan aplikasi Anda bisa jadi rumit dan memakan waktu.
Beberapa penyedia IaaS yang populer termasuk:
- Microsoft Azure
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
Kontainer sebagai Layanan (CaaS)
Container as a Service (CaaS ) adalah modul layanan cloud yang mengabstraksikan infrastruktur yang mendasarinya sehingga Anda dapat dengan cepat menyebarkan dan menjalankan aplikasi dalam container.
Untuk men-deploy aplikasi Express ke penyedia CaaS, Anda mengemas kode, dependensi, dan runtime yang diperlukan untuk menjalankan aplikasi dalam kontainer menggunakan alat kontainerisasi seperti Docker. Setelah Anda membuat kontainer, Anda menerapkannya. Penyedia CaaS menyediakan dan mengelola infrastruktur yang diperlukan untuk menjalankan kontainer untuk Anda.
Manfaat utama menggunakan CaaS adalah tingkat abstraksi yang tinggi menyederhanakan penerapan karena Anda tidak perlu khawatir tentang konfigurasi infrastruktur tingkat rendah. Anda bisa fokus membangun logika aplikasi. Selain itu, kontainerisasi memastikan aplikasi Anda berjalan secara konsisten di berbagai lingkungan.
Beberapa penyedia CaaS yang populer termasuk:
- Back4app Containers
- Amazon Elastic Container Service (ECS)
- Google Kubernetes Engine (GKE)
Cara Menerapkan Aplikasi Express ke Kontainer Back4app
Prasyarat
Untuk mengikuti tutorial ini, pastikan Anda memiliki yang berikut ini:
- Node.js telah terinstal di mesin Anda.
- Akun GitHub.
- Docker telah terinstal pada mesin Anda. Jika belum, kunjungi situs Docker dan instal desktop Docker.
- Pengetahuan tentang Express.js.
Gambaran Umum Wadah Back4app
Back4app container adalah platform yang mengotomatiskan penerapan dengan mengelola infrastruktur sisi server untuk Anda.
Beberapa fitur dari kontainer Back4app termasuk yang berikut ini:
- Integrasi GitHub: Anda dapat menghubungkan repositori GitHub Anda ke Back4app sehingga memungkinkan penyebaran otomatis aplikasi Anda ketika basis kode berubah.
- Penyebaran Docker: Anda dapat menggunakan Docker, alat kontainerisasi yang populer, untuk mengemas kode aplikasi Anda dalam sebuah kontainer. Hal ini memastikan aplikasi Anda bekerja dengan cara yang dapat diprediksi di berbagai lingkungan.
- Penerapan otomatis: Setelah Anda menghubungkan repositori GitHub ke Back4app, setiap kode yang didorong ke cabang default akan memicu penerapan.
- Pelacakan penerapan waktu nyata: Anda dapat melihat status dan kemajuan penerapan Anda.
- Pemantauan aplikasi waktu nyata
- Pembaruan tanpa waktu henti
Pengenalan Proyek
Dalam panduan ini, kita akan memandu proses penerapan aplikasi Express ke Back4app. Pertama-tama, kita akan membuat API REST Express sederhana dengan satu titik akhir, mendokumentasikannya menggunakan Docker, lalu mendorongnya ke GitHub. Kemudian kita akan men-deploy-nya ke kontainer Back4app.
Membuat API Express Sederhana
Ikuti langkah-langkah di bawah ini untuk membuat aplikasi Express:
- Jalankan perintah berikut ini di terminal Anda untuk menginisialisasi proyek Node.js baru.
npm init
Perintah ini akan meminta Anda untuk memasukkan detail aplikasi Anda seperti nama paket, versi, deskripsi, titik masuk, penulis, dan lisensi. Setelah Anda merespons, ini akan membuat berkas package.json dengan konfigurasi ini.
Untuk menggunakan konfigurasi default, gunakan bendera -y seperti yang ditunjukkan di bawah ini:
npm init -y
- Instal Express sebagai ketergantungan dengan menjalankan perintah ini.
npm install express
- Pada root folder proyek Anda, buat file index.js. Jika Anda menentukan nama lain untuk berkas titik masuk Anda, gunakan nama tersebut.
- Buka file index.js dan buatlah sebuah contoh aplikasi Express.
const express = require('express');
const app = express();
- Tambahkan penangan rute untuk menangani permintaan GET ke titik akhir “/”.
app.get("/", (req, res) => {
res.json({
message: "Success",
});
});
Titik akhir ini mengirimkan pesan JSON sebagai respons.
- Tentukan nomor port dan dengarkan permintaan masuk pada port yang ditentukan.
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`App listening at <http://localhost>:${port}`);
});
Perhatikan bahwa process.env.PORT
mengacu pada variabel lingkungan bernama PORT. Jika nilai ini tidak didefinisikan dalam file .env, aplikasi akan menggunakan nilai 3000.
- Jalankan perintah berikut untuk memulai server Express.
node index.js
Jika Anda mengunjungi http://localhost:3000/api pada browser Anda, Anda akan menerima respons berikut.
{
"message": "Success!"
}
Ini adalah contoh yang sangat mendasar dari API Express dan aplikasi yang sebenarnya akan lebih kompleks dengan lebih banyak titik akhir, data eksternal, middleware, dll.
Untuk tujuan artikel ini, ini cukup untuk mendemonstrasikan bagaimana Anda dapat menggunakan aplikasi Express yang didokumentasi.
Mendokumentasikan Aplikasi Express
Dockerisasi aplikasi Express.js mengacu pada pembuatan kontainer Docker untuk aplikasi tersebut agar lebih mudah menjalankan aplikasi di lingkungan yang berbeda.
Apa itu Docker?
Docker adalah alat sumber terbuka yang memungkinkan Anda mengemas aplikasi, runtime, pustaka, dan dependensinya dalam lingkungan kontainer yang terisolasi dan portabel.
Dengan mengenkapsulasi aplikasi di dalam kontainer ini, Docker menyediakan lingkungan yang konsisten bagi aplikasi untuk berjalan terlepas dari sistem host yang mendasarinya.
Hal ini menghilangkan masalah “ini bekerja di mesin saya”. Anda dapat mengerjakan aplikasi Express di lingkungan lokal Anda, mengkontainerkannya, dan menerapkannya di berbagai lingkungan tanpa mengkhawatirkan masalah kompatibilitas.
Instal Docker
Docker dapat berjalan pada berbagai platform termasuk macOS, Windows, dan Linux. Anda dapat mengunduh dan menginstal Docker untuk OS Anda dari situs web resminya.
Cara Melakukan Dockerisasi Aplikasi Express.js
Setelah Anda menginstal Docker, Anda perlu mendockerisasi aplikasi Anda, yaitu mengemasnya ke dalam kontainer Docker.
Ikuti langkah-langkah di bawah ini:
- Di akar proyek Anda, buat berkas bernama
Dockerfile
. Berkas ini berisi instruksi untuk membangun citra Docker untuk aplikasi Express.
- Biasanya, saat membuat berkas Docker, hal pertama yang Anda lakukan adalah menentukan citra dasar. Citra dasar adalah citra yang sudah dibuat sebelumnya yang bertindak sebagai titik awal untuk citra aplikasi Anda dan biasanya berisi instruksi minimal untuk menjalankan aplikasi.
- Di dalam berkas Docker, Anda dapat memberikan instruksi dan konfigurasi yang akan berjalan di atas citra ini. Anda dapat membuat citra dasar kustom Anda sendiri, tetapi Docker memiliki citra resmi yang cukup memadai dalam banyak kasus.
- Dalam panduan ini, kita akan menggunakan citra dasar simpul khususnya varian alpine yang berukuran kecil. Mari kita tentukan citra dasar ini di dalam berkas Docker dengan menambahkan yang berikut ini.
FROM node:20-alpine
Di sini, node:20-alpine
sudah terinstal dengan Node.js versi 20.
- Tambahkan baris berikut untuk mengatur direktori kerja di dalam kontainer.
WORKDIR /usr/src/app
- Salin package.json dan package-lock.json ke direktori kerja. Ini berisi daftar semua dependensi yang harus diinstal oleh Docker.
# A wildcard ensures package.json AND package-lock.json are copied
COPY package*.json ./
- Tambahkan perintah untuk menginstal dependensi.
RUN npm install
- Salin kode lainnya ke direktori kerja di dalam kontainer.
COPY . .
- Perlihatkan nomor port yang didengarkan oleh aplikasi Express. Dalam hal ini, port 3000.
expose 3000
- Tambahkan perintah untuk memulai aplikasi.
CMD["node", "index.js"]
Secara keseluruhan, DockerFile Anda akan terlihat seperti ini:
FROM node:20-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "index.js" ]
Tambahkan file .dockerignore
File .dockerignore menentukan file yang harus diabaikan oleh Docker. Ini membantu Anda mengurangi ukuran citra Docker dengan mengizinkan Anda mengabaikan berkas yang tidak perlu. Ini juga membantu Anda menyembunyikan berkas sensitif dari citra.
Untuk menambahkannya ke proyek Anda, buat sebuah berkas di dasar proyek Anda dan beri nama.dockerignore
. Tambahkan konten-konten berikut ke dalamnya.
.git
.gitignore
.env
README.md
Dockerfile
node_modules/
.github
.vscode
npm-debug.log
npm-debug.log.*
Berkas di atas mencegah berkas git, modul simpul, log, dan variabel env disalin ke citra Docker.
Membangun Citra Docker Secara Lokal
Pada direktori proyek Anda, jalankan perintah berikut untuk membangun citra Docker.
docker build -t docker-express-api .
Bendera -t
adalah singkatan dari tag dan memungkinkan Anda untuk memberikan nama yang berarti pada citra docker. Tanda titik (.) di akhir memberitahu Docker untuk mencari berkas Docker di direktori saat ini dan menjalankan instruksi di dalamnya.
Jalankan Citra Docker Secara Lokal
Setelah Anda membuat citra Docker, gunakan citra tersebut untuk menjalankan aplikasi Express dengan menggunakan perintah berikut:
docker run -p 3000:3000 docker-express-api
Di sini -p 3000:3000
memetakan port 3000 dari hos lokal ke port 3000 dalam kontainer. Anda seharusnya dapat mengakses aplikasi dengan mengunjungi http://localhost:3000 pada peramban.
Untuk melihat instans Docker yang sedang berjalan, gunakan perintah berikut:
docker ps
Untuk menghentikan instance, jalankan:
docker stop docker-express-api
Menerapkan Aplikasi Express Dockerized ke Kontainer Back4app
Setelah memastikan citra Docker berjalan secara lokal, kita perlu menerapkannya ke Back4app.
Dorong Aplikasi Express ke GitHub
Backapp menyebarkan aplikasi Anda dari GitHub. Oleh karena itu, Anda perlu mendorong repositori aplikasi ke GitHub dengan mengikuti langkah-langkah di bawah ini:
- Buka situs GitHub dan masuk ke akun Anda.
- Setelah masuk, cari ikon “+” di sudut kanan atas halaman dan klik ikon tersebut. Dari menu tarik-turun, pilih “Repositori baru”.
- Pada halaman “Buat repositori baru”, beri nama repositori Anda. Untuk panduan ini, kita akan menggunakan “express-api”. Klik tombol “Buat nama repositori”. Ingat URL repositori di halaman berikutnya karena Anda akan membutuhkannya untuk mendorong repositori lokal ke GitHub.
Di mesin lokal Anda, buka folder proyek dan jalankan perintah berikut untuk mendorong aplikasi ke repositori jarak jauh di GitHub.
git remote add origin <https://github.com/remigathoni/express-api.git>
git branch -M main
git push -u origin main
Anda seharusnya dapat melihat file aplikasi Anda di repositori GitHub.
Menerapkan Aplikasi Express
Ikuti langkah-langkah di bawah ini untuk menerapkan aplikasi ke Back4app:
- Buka Back4app dan daftar akun. Jika Anda sudah memiliki akun, masuk. Back4app akan mengarahkan Anda ke dasbor setelah autentikasi.
- Di dasbor, klik tombol Bangun aplikasi baru. Anda akan dihadapkan pada dua opsi – Backend sebagai Layanan dan Container sebagai Layanan. BaaS menangani backend atas nama Anda, sedangkan CaaS memungkinkan Anda untuk menerapkan aplikasi Anda di lingkungan yang terkontainerisasi. Karena kita hanya ingin menerapkan aplikasi, klik Kontainer sebagai Layanan.
- Pada prompt, berikan akses Back4app ke akun GitHub Anda dan pilih repositori Express.
- Berikan nama pada aplikasi yang Anda terapkan. Dalam panduan ini, kami menggunakan “Deployed Express API”. Anda juga dapat mengatur opsi penerapan tambahan seperti cabang default, direktori root, status penerapan otomatis, baik ya atau tidak, dan variabel lingkungan.
- Klik tombol Buat Aplikasi untuk menyelesaikan proses penyebaran.
Anda sekarang telah menggunakan aplikasi Express Anda ke Back4app secara gratis.
Cara Mengoptimalkan Citra Docker
Sangat penting untuk mengoptimalkan ukuran citra docker Anda karena alasan-alasan berikut ini:
- Performa yang lebih baik: Gambar yang kecil tidak menyertakan lapisan yang tidak perlu, yang perlu dieksekusi. Hal ini menghasilkan waktu pengaktifan yang cepat.
- Penerapan lebih cepat: Gambar yang lebih kecil diterapkan lebih cepat.
- Konsumsi sumber daya yang lebih rendah: Gambar yang lebih kecil menggunakan lebih sedikit ruang disk dan memori saat dijalankan.
- Keamanan yang ditingkatkan: Dengan mengecualikan pustaka dan ketergantungan yang tidak perlu, gambar yang lebih kecil mengurangi permukaan serangan aplikasi.
Untuk mengoptimalkan citra Docker Express.js, kita dapat menggunakan build multi-tahap.
Pembuatan multi-tahap memungkinkan Anda untuk memisahkan lingkungan build dari lingkungan runtime. Anda dapat membangun aplikasi di tahap build dan kemudian menyalin hanya file yang diperlukan ke tahap produksi akhir.
Kembali ke aplikasi Express, kita dapat mendefinisikan dua tahap – tahap build di mana kita akan menginstal dependensi dan halaman produksi di mana kita akan membuat runtime image.
Membuat Tahap Pembuatan
Ikuti petunjuk di bawah ini untuk menentukan tahap pembuatan:
- Hapus semua konten Dockerfile dan tentukan tahap pembangunan dari citra dasar.
FROM node:20-alpine AS build
Sebuah stage diberi nama dengan menambahkan AS nama stage
pada instruksi FROM. Perhatikan juga bahwa gambar dasar alpine jauh lebih kecil daripada node: images.
- Tentukan direktori kerja.
WORKDIR /usr/src/app
- Salin berkas package.json dan package-lock.json ke dalam kontainer.
COPY package*.json ./
- Instal dependensi pengembangan.
RUN npm install --only=development
- Salin kode aplikasi ke tahap build.
COPY . .
- Jalankan aplikasi.
CMD ["node", "index.js"]
Perintah yang Anda jalankan di sini tergantung pada proyek Anda. Sebagai contoh, jika Anda telah menggunakan TypeScript untuk membangun aplikasi Anda, Anda mungkin perlu mentranspile aplikasi Anda.
Menciptakan Tahap Produksi
Pada tahap kedua, Anda hanya akan menyalin file aplikasi yang sudah dibangun dari tahap build. Ikuti langkah-langkah di bawah ini:
- Tambahkan gambar dasar Node.js dan beri nama produksi.
# Production Stage
FROM node:20-alpine AS production
- Mengatur direktori kerja.
WORKDIR /usr/src/app
- Salin berkas-berkas yang diperlukan dari “Build Stage” dengan menentukan
--from=build
pada instruksiCOPY
. Karena tidak ada perintah build, kita menyalin semuanya secara langsung.
COPY --from=build /usr/src/app .
- Buka port yang didengarkan oleh aplikasi Express Anda.
EXPOSE 3000
- Mulai aplikasi Express.
CMD ["node", "index.js"]
Setelah membuat Dockerfile, dorong perubahan Anda ke GitHub dan Back4app akan secara otomatis menyebarkan ulang aplikasi Anda.
Jika Anda ingin melihat kode untuk artikel ini, lihat repositori GitHub aplikasi.
Kesimpulan
Express.js adalah kerangka kerja Node.js ringan yang tidak memiliki opini. Framework ini membantu pengembang membangun API yang cepat dan minimal untuk aplikasi web dan seluler.
Dalam hal penerapan aplikasi Express, Anda memiliki berbagai opsi termasuk platform Infrastructure as a Service (IaaS) dan Container as a Service (CaaS).
Platform IaaS lebih cocok digunakan ketika Anda menginginkan kontrol maksimum atas infrastruktur server yang mendasarinya, yang mana CaaS adalah pilihan yang baik ketika Anda ingin beralih dari pengembangan ke produksi dengan cepat tanpa harus mengelola infrastruktur secara manual.
Salah satu penyedia CaaS terbaik adalah kontainer Back4app. Back4app mengelola dan memantau penerapan aplikasi atas nama Anda sehingga Anda dapat berkonsentrasi untuk membangun fitur aplikasi.
Dalam panduan ini, Anda telah mempelajari cara mendokumentasi aplikasi Express.js dan men-deploy-nya ke kontainer Back4app. Untuk mempelajari lebih lanjut, kunjungi dokumentasi kontainer Back4app.
PERTANYAAN YANG SERING DIAJUKAN
Apa itu Express.js?
Express adalah kerangka kerja ringan yang tidak mengikat dan dibangun di atas Node.js, yang menyederhanakan proses pembuatan API web dan seluler yang kompleks.
Apa saja opsi penyebaran untuk aplikasi Express.js?
– IaaS (AWS, GCP, Azure)
– CaaS (Back4app Containers, AWS ECS, Google Kubernetes Engine (GKE))
Bagaimana cara menyebarkan aplikasi Express.js ke dalam container Back4app?
Buat aplikasi Express.js.
Dockerisasi aplikasi Express.js.
Dorong aplikasi yang sudah didockerisasi ke GitHub.
Buat akun Back4app.
Buat container Back4app.
Beri akses Back4app ke GitHub Anda.
Pilih repositori Express.js dan sebarkan aplikasi Anda.