Deploy Machine Learning App ke Web dengan Heroku (Part 2)

Muhammad Sifa’ul Rizky
Curious with Data
Published in
6 min readJul 3, 2020

Related articles:

Deploy Machine Learning App ke Web dengan Heroku (Part 1)

Selamat datang kembali di artikel lanjutan dari deploy aplikasi dengan Heroku. Sebelumnya di part 1 saya sudah membahas tentang apa saja yang diperlukan supaya dapat melakukan deployment, bila ini adalah artikel yang pertama kali anda baca, anda bisa membaca bagian pertama di link diatas. Disini saya akan lebih menjelaskan secara teknis tentang bagaimana deployment agar nantinya kita bisa memiliki web app yang bisa diakses oleh semua orang. Apa saja yang harus dilakukan?

Langkah 1: Siapkan file yang dibutuhkan

File ini menjadi sangat amat penting untuk kita bisa melakukan deployment, pada dasarnya yang dibutuhkan tidak terlalu banyak, namun harus hati-hati untuk menyusunnya agar berhasil.

Pertama, tentunya kita memerlukan file Python yang berisi aplikasi kita, disini saya menggunakan file ds_project_shopee.py dari workshop yang saya bawakan di Shopee. Untuk mengetahui lebih jelas tentang artikelnya bisa cek di sini. Sedangkan untuk file Pythonnya bisa di download di sini.

Setelah didownload, saya menyarankan agar membuat sebuah folder sendiri yang isinya hanya project ini, seperti halnya contoh dibawah ini agar bisa lebih rapi dan berguna untuk langkah berikutnya.

Kemudian file yang dibutuhkan untuk dapat melakukan deployment ke Heroku ada 3 yaitu.

  • Procfile

File in digunakan supaya Heroku tahu file mana yang harus dijalankan supaya aplikasinya muncul. Untuk membuat file ini cukup dengan membuka Notepad lalu ketik saja

web: sh setup.sh && streamlit run ds_project_shopee.py

sh setup.sh ini digunakan agar nanti ada setup Streamlit yang harus dijalankan, sedangkan streamlit run ds_project_shopee.py ini adalah command yang digunakan supaya dapat mengakses aplikasi Python yang dibuat dengan Streamlit. Setelah itu simpan filenya dan masukkan ke folder yang sudah dibuat.

NOTE. File disave dalam bentuk All Files, bukan text (procfile.file)

  • setup.sh

File ini digunakan sebagai lanjutan dari file procfile diatas yang tujuannya agar mengenali Streamlit package, balik lagi app Python yang dibuat ini menggunakan bantuan mereka, jadi caranya hampir sama, yaitu buka Notepad lalu ketik:

mkdir -p ~/.streamlit/echo "\
[general]\n\
email = \"your-email@domain.com\"\n\
" > ~/.streamlit/credentials.toml
echo "\
[server]\n\
headless = true\n\
enableCORS=false\n\
port = $PORT\n\
" > ~/.streamlit/config.toml
  • requirements.txt

File ini adalah file yang penting karena tanpa adanya file ini maka aplikasi kita tidak akan bisa berjalan dengan baik (error). Sesuai namanya, file ini berisi tentang package apa saja yang kita butuhkan untuk menjalankan aplikasi Python tersebut. Karena di sini aplikasinya menggunakan Streamlit dan ada unsur Machine Learning, maka package yang saya siapkan adalah:

streamlit==0.57.3
numpy==1.18.1
pandas==1.0.3
scikit-learn==0.22

Streamlit sebagai package untuk web app, Numpy, Pandas dan Scikit-Learn untuk Data Analysis dan Machine Learning. Stepnya sama, buka Notepad lalu ketik seperti diatas lalu disimpan sebagai requirements.txt.

Jika semuanya sudah dilakukan maka isi dari foldernya akan menjadi seperti ini. Setelah ini kita lanjutkan ke langkah kedua.

File yang dibutuhkan

Langkah 2: Set up Git Bash

Cara membuka Git Bash (Klik kanan dahulu)

Selanjutnya adalah melakukan pengaturan pada Git Bash supaya dapat deploy ke Heroku, untuk caranya cukup sederhana yaitu buka Git Bash lalu tulis untuk Git Bash ini mengenali akun Github yang digunakan.

git config --global user.name "Username di Github"
git config --global user.email email_yang_digunakan

Setelah sudah maka Git Bash siap untuk digunakan ke langkah selanjutnya dan cukup krusial. Oleh karena itu di step selanjutnya disarankan sudah membuka dashboard dari Heroku, karena di artikel kemarin sudah membuat akun Heroku, maka sekarang waktunya membuka dashboard nya, bisa log in akun Heroku di sini.

Langkah 3: Download Heroku CLI

Selanjutnya adalah download Heroku CLI dimana CLI adalah singkatan dari Command Line Interface, jadi tujuannya agar kita bisa push folder project kita ke Heroku, untuk download dan instalasinya cukup mudah, bisa dicek di sini. Jangan lupa sesuaikan kan OS atau Operating System kalian, apakah Windows atau Linux.

Setelah download dan di install Heroku CLI maka step yang paling mudah untuk mengetahui apakah Heroku CLI sudah terinstall atau tidak adalah dengan ketik heroku pada Git Bash yang tadi kita gunakan untuk mengatur username. Jika sudah muncul beberapa command maka Heroku sudah terinstall dengan baik.

Cek Heroku CLI sudah terinstall atau belum

Langkah 4: Push ke Heroku

Git Bash yang tadi digunakan untuk setting akun Github jangan di-close karena akan dilanjutkan prosesnya disana. Proses pertama yang harus dilakukan adalah menggunakan

heroku login

Supaya laptop/devices kita bisa terkoneksi dengan Heroku dashboard, setelah itu maka kita akan dibawa ke sebuah halaman website untuk memberitahu bahwa sudah log in dengan lancar.

Ketika akun Heroku kita sudah terhubung dengan Git Bash kita, maka selanjutnya adalah membuat tempat untuk menaruh project kita, disini bisa menggunakan:

heroku create nama_apapun_yang_penting_unik

Di sini nanti nama yang kita tulis akan muncul di dashboard Heroku sebagai tempat untuk menaruh project yang kita gunakan.

Kemudian setelah muncul, di sini saya menggunakan personal-project-faul maka selanjutnya adalah menaruh file project yang sudah kita siapkan dari langkah pertama yaitu dengan menggunakan:

$ git init
$ heroku git:remote -a nama-project-kalian
$ git add .
$ git commit -am "terserah"
$ git push heroku master

Jangan lupa untuk mengganti nama-project-kalian menjadi nama yang kalian gunakan untuk deploy project di Heroku ini. Sebenarnya konsepnya mirip sekali dengan menaruh project atau kodingan di Github, langkah yang kurang lebih sama, perlu add-commit-push untuk menyelesaikannya.

(Note. $ disini tidak diperlukan ya.)

Setelah semuanya sudah dilakukan maka Heroku akan memproses untuk deployment berdasarkan requirement yang sudah dibuat di langkah pertama, jika semuanya berjalan dengan baik maka tampilannya akan muncul seperti ini.

Deploy ke Heroku telah berhasil

Dari sini kita bisa mendapatkan informasi bahwa aplikasi yang kita buat memakan memori 162.3 MB dimana itu masih oke, karena Heroku memiliki batasan untuk free account dimana dapat menampung hingga 500 MB, sedangkan aplikasinya sendiri di Heroku (dinamakan dyno), untuk setiap akun diberikan kebebasan hingga 5 dynos/aplikasi. Ketika sudah melebihi maka Heroku akan memberikan peringatan kecuali kita mengupgrade akun kita.

Project sudah selesai di deploy

Project sudah selesai dideploy, maka kita tinggal cek ke web yang sudah diberikan seperti gambar diatas yaitu di sini. Voila, aplikasinya sudah publish dan orang lain dapat melihat project kalian. Ini bisa menjadi awal dari kalian yang ingin membuat portfolio, terutama berkaitan dengan Machine Learning dan Data Science.

Terima kasih banyak buat semuanya yang telah membaca sampai akhir, semoga informasi yang diberikan bermanfaat buat semuanya, jika dirasakan bermanfaat monggo silahkan diberikan clap atau follow publikasi Curious with Data serta follow akun saya supaya bisa memberikan konten yang edukatif mengenai data science. Follow Linkedin saya dan Github saya di sini dan di sini agar mendapatkan update juga.

Hopefully, I can write again about data science in Bahasa and English to make informative content for all of you. Vielen Dank!

--

--