Perlu diketahui Heroku Cloud Application Platform adalah Platform as a Service (PaaS) yang memungkinkan kita untuk menjalankan, membangun, dan mengoperasikan aplikasi sepenuhnya di cloud.
Apa sih platform Heroku itu? silahkan simak postingan ini ya .
Table of Contents
langsung saja kita akan mendeploy web aplikasi golang kita ke Heroku. Simak step by step ya
Install Heroku CLI
Kalian diharapkan untuk mendownload Heroku CLI terlebih dahulu di link ini.
Ikuti langkah demi langkah hingga sukses menginstall Heroku CLI tersebut.
Kita versi Heroku CLI dengan perintah heroku --version
Siapkan Project Golang
Dalam tutorial ini kita akan mendeploy aplikasi ini . Pastikan sudah membaca file README.md ya .
Atau siapkan sendiri project golang kalian.
Module Init
Setelah menyiapkan project golang, silahkan buat module pada project kamu.
Saya sarankan baiknya mengikuti format yang saya berikan dibawah ini
go mod init github.com/[user_name]/[project_name]
ubah user_name sesuai username akun github kamu,
ubah project_name sesuai nama project kamu.
Buat Procfile
Kita buat Procfile di Root folder project kita.
Ketikkan kode dibawah ini letakkan pada file Procfile
web: bin/[project_name]
Silahkan Ubah project_name sesuai nama project kamu.
Dalam kode diatas maksudnya adalah biarkan Heroku menjalan servernya berdasarkan hasil binary file project kita. Jadi tidak membaca sebagai file berekstensi .go
Nah, nanti dijelaskan pada langkah ke 8.
Inisialisasi Git Repo
Karena Heroku mirip konsepnya dengan Git pada umumnya untuk versioning maupun deploy, kita perlu inisialisasi git pada project kita terlebih dahulu.
Ketikkan perintah
git init
Login ke Heroku CLI
Selanjutnya kita perlu login terlebih dahulu lewat Command Promp/Terminal masing-masing.
Jalankan perintah
heroku login
Buat Heroku Application
Disini akan membuat nama aplikasi kita di Heroku
Jalankan perintah
heroku create
Ubah sesuai nama aplikasi yang ingin kamu buat.
Misalnya disini saya beri nama aplikasinya go-perpustakaan-api.
Local Test
Lanjut pembahasan point ke 2, pada langkah ini kita akan build project kita menjadi binary file,
hasil dari binary file ini nantinya akan dibaca di server heroku.
Silahkan ketikkan perintah terminal dibawah ini
mkdir bin
penjelasan:
Kita hanya membuat folder bin kosong saja, agar nantinya sistem di heroku membaca file binary terletak di folder bin
jika ingin testing di local development, jalankan perintah
heroku local
Konfigurasi Database di Heroku
Inilah yang ditunggu-tunggu, bagaimana kita akan mengkoneksikan database ke project kita yang ada di Heroku.
Disini saya menggunakan postgres yang dimiliki oleh Heroku sendiri.
Jalankan perintah dibawah ini untuk membuat PGSQL database di Project kita
heroku addons:create heroku-postgresql:hobby-dev
Setelah itu kita perlu mencari tau informasi dbname, host, port, user, password yang ada di postgres Heroku.
Maksudnya apa? tanpa kita mengetahui itu semua kita tidak akan bisa terkoneksi dengan database.
Jalankan perintah dibawah ini untuk mendapatkan itu semua
heroku pg:credentials:url
Maka akan nampak seperti dibawah ini
Connection information for default credential.
Connection info string:
"dbname= host= port=5432 user= password= sslmode=require"
Connection URL:
postgres://:@:5432/
Setelah mendapatkan informasi diatas, selanjutnya kita akan menambahkan Config Variable pada Heroku, isikan sesuai hasil yang ada seperti contoh atas, disini saya memecah semua variable mengikuti file .env ini, jadi mungkin teman-teman bisa mencustomisasi sesuai kebutuhan, berikut adalah Cofig Variable milikku diantaranya :
DB_HOST untuk mencari alamat host / domain database
heroku config:add DB_HOST=
DB_DRIVER untuk driver koneksi ke database
heroku config:add DB_DRIVER=postgres
DB_PORT untuk membuka port yang terbuka, alias biar bisa saling berkomunikasi
heroku config:add DB_PORT=5432
DB_NAME untuk mengetahui database mana yang dipakai dalam project ini
heroku config:add DB_DATABASE=
DB_USER untuk memberikan akses ke database
heroku config:add DB_USER=
DB_PASSWORD untuk memberikan akses ke database
heroku config:add DB_PASSWORD=
SSL_MODE untuk mengaktifkan/mengnonaktifkan ssl mode yang ada pada koneksi ke driver
heroku config:add SSL_MODE=require
TIMEZONE untuk memberi konfigurasi timezone pada database
heroku config:add TIMEZONE=Asia/Jakarta
OPTIONAL
MIGRATE untuk memberi konfigurasi apakah ingin migrating database atau tidak
heroku config:add MIGRATE=true
API_SECRET untuk menampung secret key pada API
heroku config:add API_SECRET=mjhsdbfjkghsbdfkjgbsdfg
WAJIB ADA!!
GOVERSION untuk memberi konfigurasi versi golang yang kita butuhkan [reference]
heroku config:add GOVERSION=go1.15
untuk mengecek ketersediaan versi yang lain, silahkan simak artikel ini .
Deployment
Setelah itu semua project kita kita add ke Git terlebih dahulu
git add .
Berikan Commit pada fiel yang telah kita add
git commit -m "deploy ke heroku"
Setelah itu Push ke Heroku Server
git push heroku master
Akan terlihat prosesnya seperti ini

Note!!!
Lakukanlah debugging dengan cara, buka terminal jalankan commad dibawah
heroku logs --tail
Jika mengalami error seperti dibawah ini
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Silahkan ubah portnya jadi bawaan dari heroku, like this [reference]
port := os.Getenv("PORT")
if port == "" {
port = "8000"
}
log.Fatal(http.ListenAndServe(":"+port, r))
Maksud dari os.Getenv("PORT") adalah sistem akan mengambil default port yang disediakan oleh heroku
Buka aplikasi kembali melalui url .herokuapp.com/
punya saya telah berhasil https://go-perpustakaan-api.herokuapp.com/
Yap, kita sampai sini kita sudah berhasil Mendeploy Aplikasi Golang ke Heroku serta konfigurasi database dengan PostgreSql.
Cukup sekian ya teman-teman, semoga artikelnya membantu.

Comments