Menyebarkan Backend Node.js Anda secara Gratis
Menerapkan backend aplikasi Anda membuatnya dapat diakses oleh pengguna yang Anda tuju. Namun, perjalanan dari localhost ke cloud bisa jadi sulit tanpa pengetahuan dan alat yang tepat.
Dalam artikel ini, Anda akan mempelajari cara menggunakan backend Node.js Anda di berbagai platform, masing-masing dengan tingkat gratis atau kredit gratis yang memungkinkan Anda menjelajahi platform mereka terlebih dahulu tanpa perlu membayar.
Contents
1. Wadah Back4app
Back4app adalah platform cloud Platform-as-a-Service (PaaS) yang memungkinkan Anda untuk membuat dan meng-host aplikasi web dari berbagai macam tumpukan melalui UI yang intuitif, alat CLI khusus, dan agen AI.
Platform ini menawarkan berbagai layanan, termasuk platform Containers-as-a-Service (CaaS) yang dikenal sebagai Back4app Containers.
Back4app containers adalah layanan CaaS yang ditawarkan oleh Back4app yang memungkinkan Anda untuk mengelola dan menggunakan aplikasi web Anda menggunakan kontainer Docker.
Kontainer Back4app menawarkan pemantauan aplikasi secara real-time yang menampilkan metrik penting seperti CPU, RAM, Bandwith, dan log aplikasi untuk membantu Anda mengidentifikasi kemacetan dan mengoptimalkan kinerja aplikasi Anda.
Ia juga menawarkan penerapan otomatis, yang tidak memiliki waktu henti saat pembaruan. Mereka mencapai hal ini dengan memastikan bahwa kontainer baru siap untuk bekerja ketika Anda menerapkan komit baru atau mengubah konfigurasi kontainer Anda, kecuali jika ada gangguan layanan selama penerapan.
Deployment dengan kontainer Back4app adalah proses langsung yang melibatkan menghubungkan repositori GitHub aplikasi Anda (termasuk Dockerfile) ke aplikasi Github Back4app, menambahkan variabel lingkungan, dan mengklik tombol deploy.
Bagaimana Cara Menyebarkan Backend Node.js Anda di Wadah Back4app?
Untuk menggunakan aplikasi Node.js Anda di kontainer Back4app, Anda memerlukan
- Akun Back4app, Anda mendaftar secara gratis jika Anda belum memilikinya.
- Aplikasi GitHub Back4App Containers yang diinstal pada akun GitHub Anda.
Setelah Anda masuk ke akun Back4app dan menginstal aplikasi GitHub di akun GitHub Anda, berikan aplikasi Back4app akses ke repositori yang ingin Anda gunakan.
Pastikan repositori Anda berisi Dockerfile; di bawah ini adalah contoh Dockerfile yang dapat Anda gunakan untuk aplikasi Node.js Anda:
# Specify base image
FROM node:18-alpine
# Specify working directory
WORKDIR /app
# Copy package.json and package-lock.json
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy source code
COPY . .
# Expose port 8080
EXPOSE 8080
# Run the app
CMD ["npm", "start"]
Selanjutnya, buat aplikasi Back4app baru dengan mengklik tombol “APLIKASI BARU” di sudut kanan atas layar Anda. Kemudian, pilih opsi Wadah sebagai Layanan, seperti yang ditunjukkan pada gambar di bawah ini.
Pilih aplikasi yang ingin Anda gunakan dari daftar aplikasi yang Anda berikan akses ke aplikasi Back4app GitHub.
Isi variabel lingkungan yang terkait dengan aplikasi Anda, dan klik tombol Buat Aplikasi.
Mengklik tombol Buat Aplikasi akan memulai proses penerapan dan menampilkan log penerapan secara real-time untuk membantu Anda memantau proses penerapan.
Jika terjadi kesalahan selama proses penerapan, Anda dapat mengizinkan agen AI Back4app untuk menganalisis kesalahan dari log dan menawarkan solusi yang memungkinkan. Atau, Anda dapat membaca panduan pemecahan masalah Back4app.
Setelah aplikasi Anda diterapkan, Anda bisa mengaksesnya dengan URL langsung di sudut kiri atas dasbor Anda.
Tingkat gratis dari kontainer Back4app menawarkan Anda 0,25 CPU, 256 MB RAM, dan Transfer 100GB, yang ideal untuk pengembangan dan pembelajaran. Untuk aplikasi produksi, akan ideal untuk meningkatkan ke salah satu paket berbayar yang tersedia.
2. Render
Render adalah platform cloud yang menyediakan solusi platform-as-a-service (PaaS) untuk menyebarkan aplikasi web dari berbagai tumpukan pengembangan, termasuk Node.js.
Dengan Render, layanan Anda ditingkatkan atau diturunkan berdasarkan penggunaan CPU dan/atau memori rata-rata, sehingga tidak perlu memprediksi atau menyediakan layanan secara berlebihan untuk melayani lalu lintas yang tinggi.
Render juga mendukung penerapan tanpa waktu henti, memastikan aplikasi Anda tidak pernah down, bahkan ketika build Anda rusak.
Hal ini dilakukan dengan melakukan pemeriksaan kesehatan setiap kali Anda menggunakan versi baru dari aplikasi Anda dan hanya mengganti versi lama jika versi baru Anda lolos pemeriksaan kesehatan.
Render juga menyertakan banyak fitur, beberapa di antaranya termasuk lingkungan pratinjau, API REST khusus, disk persisten, jaringan pribadi, dan banyak lagi.
Menerapkan aplikasi Anda di Render melibatkan penghubungan akun GitHub/GitLab Anda ke platform dan mengonfigurasi detail penerapan, termasuk variabel lingkungan untuk aplikasi Anda.
Cara Menerapkan Backend Node.js Anda pada Render
Untuk menggunakan aplikasi Anda di Render, Anda memerlukan akun aktif; Anda bisa mendaftar secara gratis jika belum memilikinya.
Masuk ke akun Anda dan buka dasbor Anda. Di dasbor Anda, klik “Layanan Web“.
Selanjutnya, Anda akan diminta untuk menghubungkan akun GitHub/GitLab Anda ke Render atau menyediakan repositori Git publik.
Setelah Anda menghubungkan akun GitHub dan memilih repositori yang ingin Anda gunakan, Anda akan diarahkan ke formulir konfigurasi, di mana Anda akan diminta untuk memasukkan detail seperti nama aplikasi, perintah build, variabel lingkungan, dll.
Isi detail yang diperlukan dan klik tombol “Buat Layanan Web“. Ini akan memulai proses penerapan dan membawa Anda ke layar di mana Anda dapat memantau status penerapan dan log aplikasi secara real-time.
Jika ada kesalahan yang terjadi selama penerapan, Anda bisa menganalisis kesalahan dari log penerapan dan memecahkan masalah agar penerapan berhasil.
Paket gratis Render menawarkan 512 MB RAM dan 0,1 CPU untuk layanan web Anda. Jika aplikasi Anda membutuhkan lebih banyak sumber daya, Anda bisa mempertimbangkan paket berbayar mereka.
3. Fly
Fly adalah platform cloud yang menyediakan jaringan pengiriman aplikasi global.
Hal ini memungkinkan Anda untuk menyebarkan dan menjalankan aplikasi yang dekat dengan pengguna di seluruh dunia dengan memanfaatkan jaringan server terdistribusi, sehingga secara signifikan mengurangi latensi dan meningkatkan kinerja server Anda.
Fly menawarkan micro-VM Linux lengkap yang dikenal sebagai “Fly Machines”. Mesin Fly memiliki waktu booting yang relatif cepat, sekitar 300ms. Anda juga bisa menjeda mesin Anda ketika tidak aktif, memastikan Anda hanya membayar layanan yang Anda gunakan.
Menerapkan aplikasi Anda di Fly melibatkan menjalankan beberapa perintah dengan alat CLI khusus mereka.
Bagaimana Cara Menerapkan Backend Node.js Anda Fly?
Untuk men-deploy aplikasi Node.js Anda di Fly, Anda perlu:
- Akun Fly, Anda dapat mendaftar secara gratis jika belum memilikinya.
- Alat bantu baris perintah
flyctl
yang terinstal pada mesin lokal Anda.
Jika Anda tidak memiliki alat CLI flyctl
yang terinstal pada sistem Anda, Anda dapat menginstalnya menggunakan perintah di bawah ini:
#macOS/Linux
curl -L https://fly.io/install.sh | sh
#windows
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
Selanjutnya, masuk ke akun Fly Anda dengan menjalankan perintah di bawah ini:
fly auth login
Menjalankan perintah di atas akan membuka browser default Anda dan meminta Anda untuk masuk ke akun Fly Anda.
Setelah Anda berhasil masuk, buka direktori aplikasi yang ingin Anda gunakan dan jalankan perintah di bawah ini:
fly launch
Ketika Anda menjalankan perintah di atas, Fly akan secara otomatis mendeteksi bahwa Anda sedang mencoba menerapkan aplikasi Node.js dan menyiapkan penerapan Anda.
Alat CLI akan menampilkan konfigurasi aplikasi untuk persetujuan Anda sebelum menerapkan aplikasi. Jika Anda puas dengan konfigurasinya, Anda dapat melanjutkan dengan membalas “Y” pada prompt, atau Anda dapat membalas “N”.
Membalas N akan membuka browser Anda dan membawa Anda ke halaman di mana Anda dapat mengonfigurasi aplikasi Anda melewati konfigurasi default yang disediakan oleh Fly, seperti yang ditunjukkan pada gambar di bawah ini.
Namun, tidak seperti beberapa opsi lain yang dibahas dalam artikel ini, Fly mengharuskan Anda untuk menambahkan informasi kartu Anda sebelum menggunakan aplikasi Anda. Namun, Anda tidak akan ditagih sampai Anda melebihi sumber daya senilai $5.
4. Amazon Web Services (AWS)
Amazon Web Services (AWS) adalah penyedia Infrastructure as a Service (IaaS) yang memberikan komponen infrastruktur komputasi dasar melalui Internet.
AWS memungkinkan Anda membangun dan mengelola lingkungan tervirtualisasi tanpa perlu berinvestasi dan memelihara perangkat keras fisik.
AWS memiliki fungsionalitas paling banyak di antara penyedia layanan cloud lainnya, mulai dari teknologi infrastruktur seperti komputasi dan basis data hingga teknologi yang sedang berkembang seperti AI dan ML.
Ini juga merupakan lingkungan komputasi awan paling aman yang tersedia, didukung oleh seperangkat alat keamanan awan yang mendalam, dengan lebih dari 300 layanan dan fitur keamanan, kepatuhan, dan tata kelola, serta dukungan untuk 143 standar keamanan dan sertifikasi kepatuhan.
Selain itu, AWS adalah platform yang matang dengan rekam jejak yang terbukti (17 tahun) dalam hal keandalan, keamanan, dan performa.
Namun, menerapkan aplikasi Anda di AWS lebih kompleks daripada di platform lain seperti Back4app dan Render.
Anda dapat mencapai ini dengan berbagai cara; namun, tutorial ini akan membahas cara yang paling populer, yaitu Amazon Elastic Compute Cloud (Amazon EC2).
Bagaimana Cara Menerapkan Backend Node.js Anda di AWS?
EC2 adalah layanan web yang disediakan oleh Amazon yang memungkinkan Anda untuk menyewa server virtual, yang dikenal sebagai instance, di cloud.
Untuk membuat instance EC2, Anda memerlukan akun AWS; Anda dapat mendaftar secara gratis jika belum memilikinya.
Setelah masuk ke akun Amazon Anda, buatlah Instance EC2 (Anda bisa melewatkan langkah terakhir pada artikel yang ditautkan di atas, yang mengharuskan Anda menyambungkan ke instans EC2 menggunakan SSH).
Anda dapat memeriksa instance yang baru Anda buat di dasbor EC2 Anda di bawah “instance”.
Selanjutnya, sambungkan ke instans EC2 Anda menggunakan Konsol Instans EC2. Setelah Anda mengikuti langkah-langkah pada petunjuk yang ditautkan di atas, sebuah terminal web akan terbuka pada peramban Anda.
Selanjutnya, ubah ke pengguna root dengan menjalankan perintah di bawah ini:
sudo su -
Menjalankan perintah di atas akan mengalihkan konteks pengguna ke pengguna root dengan hak istimewa yang lebih tinggi.
Perintah ini, yang terdiri dari “sudo” untuk kemampuan pengguna super, “su” untuk peralihan pengguna, dan tanda penghubung (“-“), memastikan bahwa variabel lingkungan dan konfigurasi pengguna root dimuat.
Selanjutnya, instal Node Version Manager (NVM) dengan menjalankan perintah di bawah ini:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
Selanjutnya, aktifkan NVM pada sesi terminal saat ini dengan menjalankan perintah di bawah ini:
. ~/.nvm/nvm.sh
Kemudian, instal Node.js menggunakan NVM dengan menjalankan perintah di bawah ini:
nvm install node
Selanjutnya, instal Git dengan menjalankan perintah di bawah ini:
sudo yum update
sudo yum install git
Anda dapat mengonfirmasi bahwa Node.js dan Git telah berhasil diinstal pada instans EC2 Anda dengan menjalankan perintah di bawah ini:
node -v && git -v
Jika instalasi berhasil, Anda akan melihat nomor versi tercetak pada konsol Anda, seperti yang ditunjukkan pada gambar di bawah ini.
Selanjutnya, hubungkan Kunci SSH GitHub Anda ke instans EC2 Anda. Setelah Anda berhasil mengonfigurasi dan menambahkan kunci SSH, jalankan perintah di bawah ini untuk mengkloning repositori Anda ke dalam instans EC2:
git clone <YOUR_APPLICATION_URL>
Perintah di atas akan mengkloning aplikasi Anda ke dalam instans EC2.
cd
ke dalam direktori aplikasi Anda di EC2 dan jalankan perintah di bawah ini untuk menginstal semua dependensi proyek Anda.
npm install
Selanjutnya, tambahkan variabel lingkungan Anda dengan menjalankan perintah di bawah ini:
nano .env
Perintah di atas akan membuat dan membuka file .env
kosong, menyalin variabel lingkungan Anda, menempelkannya ke dalam file, dan tekan control + X, lalu Y untuk menyimpan dan menutup file.
Terakhir, jalankan skrip awal aplikasi Anda, yang biasanya berupa perintah di bawah ini:
npm start
Menjalankan perintah di atas akan memulai aplikasi Anda. Anda dapat mengakses aplikasi yang telah diterapkan menggunakan alamat DNS publik, yang dapat Anda temukan di dasbor instans.
Tingkat gratis untuk instance EC2 di AWS menyediakan 750 jam per bulan untuk instance t2.micro atau t3.micro yang menjalankan Linux, RHEL, atau SLES, tergantung pada wilayahnya.
Demikian pula, untuk instance Windows, ia menawarkan 750 jam per bulan untuk instance t2.micro atau t3.micro berdasarkan wilayah.
Selain itu, apa pun jenis instansinya, paket ini mencakup 750 jam per bulan untuk alamat IPv4 publik.
Namun, tingkat gratis hanya tersedia untuk pelanggan AWS baru selama 12 bulan setelah tanggal pendaftaran AWS Anda.
5. DigitalOcean
DigitalOcean adalah platform Infrastructure as a Service (IaaS) yang menawarkan akses ke VM yang mendukung aplikasi Anda, sehingga Anda dapat mengonfigurasi ruang disk, mengalokasikan memori, dan mengatur jaringan Anda.
DigitalOcean menyediakan berbagai produk komputasi awan seperti droplet, yang merupakan mesin virtual Linux. Selain droplet, mereka menawarkan layanan Kubernetes terkelola dan fungsi-fungsi tanpa server.
DigitalOcean juga menyediakan keamanan jaringan dengan firewall awan, penyeimbang beban, awan pribadi virtual, IP mengambang, DNS, IPv6, dan proteksi DDoS.
Menerapkan aplikasi Node.js Anda di DigitalOcean adalah proses yang relatif sederhana dibandingkan dengan opsi IaaS lainnya.
Ini melibatkan pembuatan Droplet, mengonfigurasinya, menyiapkan mesin Linux virtual, dan reverse proxy agar sesuai dengan kebutuhan Anda.
Menerapkan Backend Node.js Anda pada Droplet DigitalOcean?
Anda memerlukan akun DigitalOcean untuk menerapkan aplikasi Node.js Anda pada platform ini; Anda bisa mendaftar secara gratis jika belum memilikinya.
Selanjutnya, masuk dan buat proyek baru (atau gunakan proyek yang sudah ada).
Pada dasbor proyek Anda, klik menu tarik-turun “Buat” di sudut kanan atas layar Anda dan pilih “Tetesan” untuk membuat tetesan baru.
Selanjutnya, pilih wilayah penyebaran yang paling dekat dengan Anda untuk tetesan Anda.
Berikutnya, pilih OS “Ubuntu” sebagai gambar Anda dan “Basic” sebagai jenis tetesan Anda.
Selanjutnya, pilih opsi CPU yang Anda inginkan.
Kemudian, pilih “kata sandi” sebagai metode autentikasi Anda. Atau, Anda dapat memilih SSH sebagai metode autentikasi Anda.
Terakhir, pilih “1” sebagai nomor tetesan Anda dan berikan nama host.
Setelah mengisi rincian yang diperlukan, klik tombol “Buat Tetesan“. Ini akan mengarahkan Anda ke dasbor Anda.
Pada dasbor, pilih tetesan yang baru saja Anda buat dan luncurkan tetesan konsol tetesan Anda, seperti yang ditunjukkan pada gambar di bawah ini.
Meluncurkan konsol tetesan akan membuka terminal web Ubuntu pada peramban Anda, seperti yang ditunjukkan pada gambar di bawah ini.
Selanjutnya, instal skrip penyiapan Node.js dengan menjalankan perintah di bawah ini:
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
Kemudian, instal Node.js dengan menjalankan perintah di bawah ini:
apt-get install nodejs -y
Selanjutnya, kloning repositori GitHub Anda menggunakan perintah di bawah ini:
git clone <YOUR_GITHUB_REPOSITORY_LINK>
Instal dependensi proyek Anda dengan menjalankan perintah di bawah ini:
npm install
Selanjutnya, tambahkan variabel lingkungan Anda dengan menjalankan perintah di bawah ini:
nano .env
Perintah di atas akan membuat dan membuka file .env
kosong, menyalin variabel lingkungan Anda, menempelkannya ke dalam file, dan tekan control + X, lalu Y untuk menyimpan dan menutup file.
Selanjutnya, instal PM2 untuk menjaga server Anda tetap berjalan di latar belakang:
sudo npm i pm2 -g
Kemudian, mulai server Anda dengan PM2 dengan menjalankan perintah di bawah ini:
pm2 start main.js
Selanjutnya, jalankan perintah di bawah ini untuk memastikan server Anda dimulai ulang setiap kali aplikasi dimulai ulang:
pm2 startup ubuntu
Sekarang aplikasi Anda sedang berjalan dan mendengarkan di hos (localhost) Anda. Untuk membuatnya tersedia bagi publik, Anda akan menyiapkan Nginx sebagai proksi balik.
Jalankan perintah di bawah ini untuk menginstal Nginx:
sudo apt install nginx
Sebelum menggunakan Nginx, Anda harus menyesuaikan ufw (Uncomplicated Firewall) Ubuntu untuk mengamankan aplikasi Anda dan memastikan bahwa hanya lalu lintas yang sah yang dapat mencapai server web Anda.
Jalankan perintah di bawah ini untuk mengaktifkan ufw:
ufw enable
Kemudian, jalankan perintah di bawah ini untuk mengizinkan SSH, HTTP, dan HTTPS:
ufw allow ssh && ufw allow http && ufw allow https
Perintah di atas memungkinkan firewall (UFW) pada server Ubuntu Anda untuk mengizinkan koneksi masuk pada port 22 (untuk SSH), 80 (untuk HTTP), dan 443 (untuk HTTPS).
Selanjutnya, jalankan perintah di bawah ini untuk membuka berkas konfigurasi Nginx default:
sudo nano /etc/nginx/sites-available/default
Di dalam file konfigurasi, temukan objek lokasi
dan ganti dengan blok kode di bawah ini:
location / {
try_files $uri $uri/ =404;
proxy_pass http://localhost:5050;#Replace with the port your app is running on
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Catatan: Untuk proxy_pass
, Anda bisa mengganti nilainya dengan port mana pun yang digunakan aplikasi Anda.
Tutup dan simpan berkas(control + X, Y, ENTER). Mengedit berkas konfigurasi dengan blok kode di atas akan menyiapkan proksi balik Anda sehingga ketika Anda membuat permintaan ke port 80 (untuk HTTP), aplikasi Anda yang berjalan di port 5050 (atau port default Anda) akan menangani permintaan tersebut.
Selanjutnya, jalankan perintah di bawah ini untuk menguji apakah berkas konfigurasi Nginx Anda sudah diatur dengan benar.
sudo nginx -t
Jika file konfigurasi Anda telah diatur dengan benar, Anda akan mendapatkan respons seperti pada gambar di bawah ini.
Terakhir, mulai ulang Nginx dengan menjalankan perintah di bawah ini untuk memastikan bahwa perubahan Anda pada berkas konfigurasi telah diterapkan:
sudo service nginx restart
Sekarang Anda dapat membuat permintaan ke aplikasi Anda menggunakan alamat IPv4 publik droplet Anda.
Tingkat gratis DigitalOcean memiliki fitur kredit $200 untuk pengguna baru untuk mengakses semua layanan yang tersedia.
Membandingkan Opsi Penerapan
Artikel ini membahas lima opsi penerapan untuk aplikasi Node.js Anda. Di bawah ini adalah tabel perbandingan semua platform yang dibahas.
Platform | Kategori | Alat Pengembangan | Sumber Daya Tingkat Gratis | Informasi Pembayaran |
Wadah Back4app | PaaS | Docker, Aplikasi GitHub, Agen AI Back4app. | – 0,25 CPU – RAM 256 MB – Transfer 100GB | Tidak Diperlukan |
Render | PaaS | Aplikasi GitHub/GitLab, Tautan Repositori Publik | – RAM 512 MB – 0,1 CPU | Tidak Diperlukan |
Fly | PaaS | Alat CLI Fly | Sumber daya/penggunaan senilai $5 | Diperlukan |
Amazon Web Services (AWS) | IaaS | Instance AWS EC2 | – 750 jam per bulan untuk instance Linux, RHEL, atau SLES t2.micro atau t3.micro. – 750 jam per bulan untuk instance Windows t2.micro atau t3.micro, tergantung wilayah. – 750 jam per bulan untuk alamat IPv4 publik. | Diperlukan |
DigitalOcean | IaaS | DigitalOcean Droplet | Kredit gratis $200 untuk pengguna baru. | Diperlukan |
Secara keseluruhan, platform PaaS seperti Back4app, Render, dan Fly paling cocok untuk aplikasi yang membutuhkan skalabilitas, fleksibilitas, dan siklus pengembangan dan penyebaran yang cepat.
Di sisi lain, platform IaaS seperti DigitalOcean dan AWS paling cocok untuk aplikasi yang membutuhkan kontrol lebih besar atas infrastruktur yang mendasarinya, konfigurasi yang disesuaikan, dan skalabilitas tanpa perlu mengelola perangkat keras fisik.
Kesimpulan
Dalam artikel ini, Anda telah menjelajahi dan mempelajari cara men-deploy aplikasi Node.js menggunakan kontainer Back4app, Render, Fly, AWS, dan DigitalOcean.
Setiap opsi yang dibahas memiliki kelebihan dan kekurangannya. Untuk platform PaaS, proses penerapannya lebih mudah.
Namun, Anda kehilangan sebagian besar kendali atas infrastruktur yang mendasarinya. Pada platform IaaS, proses penerapannya rumit; namun, Anda memiliki kendali penuh atas infrastruktur yang mendasarinya tanpa memiliki server fisik.
Opsi mana pun yang akhirnya Anda pilih, Anda perlu membeli dan menghubungkan nama domain khusus agar benar-benar dapat diakses oleh pengguna Anda.
Jika Anda menyukai artikel ini, silakan pelajari juga Cara membuat aplikasi web dengan database PostgresSQL.