Cara membuat Review Apps di Heroku

cara membuat review apps heroku

Hampir setiap perusahaan perangkat lunak menggunakan lingkungan yang berbeda untuk berbagai tahapan kode mereka – lokal, pengembangan, pementasan, tinjauan, dan produksi, untuk beberapa nama.

Misalnya, Anda mungkin menggunakan lingkungan pementasan untuk menghosting aplikasi yang akan Anda terapkan ke produksi saat Anda melakukan pemeriksaan tempat terakhir atau menjalankan rangkaian pengujian terhadapnya. Atau Anda dapat menggunakan aplikasi ulasan sebagai bagian dari proses peninjauan kode Anda sehingga pengulas dapat dengan mudah mengonfirmasi bahwa aplikasi berfungsi dengan baik dengan perubahan yang terdapat dalam pull request.

Lingkungan pementasan dan peninjauan berbeda dari lingkungan produksi karena merupakan lingkungan sementara yang bukan untuk menghadapi pelanggan dan hanya diperlukan saat digunakan secara aktif. Aplikasi review, misalnya, mungkin ada selama pull request aktif saat pengembang bersiap untuk menggabungkan kode mereka ke dalam cabang utama. Jika pull request tetap terbuka selama tiga hari, aplikasi review akan aktif untuk periode waktu yang sama, meskipun teknisi mungkin hanya menggunakan aplikasi review selama beberapa menit selama review mereka.

Menghosting aplikasi Anda membutuhkan biaya, dan membiarkan lingkungan pementasan dan peninjauan ini berjalan saat tidak digunakan sama saja dengan membuang-buang uang. Hal ini terutama berlaku dengan penyedia IaaS dan PaaS seperti Heroku, di mana biaya sumber daya diprorata ke yang kedua. Perusahaan yang kekurangan uang bahkan mungkin memilih untuk tidak menggunakan aplikasi ulasan dalam upaya menghemat uang jika biaya sumber daya ini menjadi penghalang. Ini sangat mungkin menjadi alasan utama mengapa organisasi teknik tertentu memilih untuk tidak menggunakan aplikasi ulasan sebagai bagian dari proses peninjauan kode mereka.

Ini menimbulkan pertanyaan: Adakah cara agar kami dapat menggunakan aplikasi ulasan dan tetap memastikan kami tidak membayar untuk sumber daya yang tidak kami butuhkan?

Pada artikel ini kita akan melihat bagaimana kita dapat mengkonfigurasi proyek Heroku untuk menggunakan aplikasi ulasan. Kami kemudian akan menambahkan add-on AutoIdle Heroku untuk mendemonstrasikan bagaimana kami dapat mengurangi biaya kami.


Membuat Aplikasi Heroku Baru

Pertama, kami akan mengkloning repo GitHub, menginstal dependensinya, dan memulai aplikasi secara lokal. Anda dapat menemukan repo sampel di sini .

git clone https://github.com/thawkin3/heroku-review-apps-and-autoidle.git
cd heroku-review-apps-and-autoidle
npm install
npm start

Selanjutnya kita akan mengubah proyek ini menjadi aplikasi Heroku dengan masuk ke Heroku CLI, membuat aplikasi, menerapkannya ke Heroku, dan membukanya di browser kita.

heroku login
heroku create # or `heroku create <app name here>`
git push heroku master
heroku open

Inilah tampilan aplikasinya sejauh ini:

Konten awal aplikasi demo

Anda dapat melihat aplikasi yang dihosting di Heroku di sini .


Membuat Pipa Heroku

Sekarang setelah kita memiliki aplikasi Heroku, mari buat pipeline Heroku . Di dasbor Heroku, kita dapat mengklik tombol “Baru”, lalu memilih “Buat saluran baru” dari menu drop-down.

Membuat pipeline baru di Heroku

Kami akan memberi nama pipeline kami, menghubungkannya ke repo GitHub kami, lalu klik “Buat pipeline”.

Mengonfigurasi pipeline kami di Heroku

Mengaktifkan Review Apps for Our Pipeline

Dengan pipeline kami siap, kami sekarang siap untuk mengaktifkan aplikasi ulasan untuk itu. Kami cukup mengeklik tombol “Aktifkan Aplikasi Ulasan” untuk memulai.

Mengaktifkan aplikasi ulasan untuk saluran kami

Selanjutnya kita akan diperlihatkan layar yang memungkinkan kita untuk mengkonfigurasi pengaturan aplikasi review kita. Mari kita pilih untuk secara otomatis membuat aplikasi ulasan baru untuk setiap permintaan tarik baru di repo GitHub kami. Mari juga memilih untuk secara otomatis menghancurkan aplikasi ulasan apa pun setelah dibuka selama lebih dari lima hari.

Tinjau setelan konfigurasi aplikasi

Setelah kami selesai mengonfigurasi pengaturan aplikasi ulasan, kami akan mengklik tombol “Aktifkan Aplikasi Ulasan” di bagian bawah layar untuk menyelesaikan penyiapan.


Creating Our First Pull Request and Review App

Saatnya membuat permintaan tarik pertama kita. Mari buat cabang baru, tambahkan beberapa konten lagi ke index.htmlfile kita , lakukan perubahan, dan dorong ke cabang kita.

git checkout -b feature/steps
# make changes to the `index.html` file
git add .
git commit -m "feat: adds steps for creating a review app"
git push --set-upstream origin feature/steps

Kami kemudian dapat menavigasi ke repo GitHub kami untuk membuat permintaan tarik untuk menggabungkan cabang fitur kami ke cabang master.

Membuat permintaan tarik di GitHub

Setelah mengisi permintaan penarikan, kita akan melihat komentar yang menunjukkan bahwa penerapan aplikasi ulasan baru menunggu keputusan.

Penerapan aplikasi ulasan menunggu keputusan seperti yang terlihat dalam permintaan penarikan GitHub

Menarik sekali! Jika kita menavigasi ke dasbor pipeline Heroku kita, kita dapat melihat aplikasi ulasan yang dihasilkan setelah berhasil diterapkan.

Aplikasi ulasan Heroku berhasil dibuat!

Kita dapat membuka aplikasi ulasan dari halaman pipeline Heroku menggunakan tombol “Buka aplikasi”, atau kita dapat menavigasi kembali ke permintaan penarikan di GitHub untuk menemukan tombol “Lihat penerapan”.

Tombol “Lihat penerapan” di GitHub untuk melihat aplikasi ulasan

Mengklik salah satu tombol akan membawa kami ke aplikasi ulasan kami, yang berisi pratinjau perubahan baru kami.

Aplikasi ulasan Heroku menunjukkan perubahan dari permintaan tarik terbuka kami

Setelah memastikan bahwa aplikasi kita terlihat bagus, kita kemudian dapat menggabungkan permintaan penarikan. Menggabungkan kode menyebabkan aplikasi ulasan dimusnahkan, meninggalkan kita hanya dengan aplikasi produksi biasa sekarang.

Aplikasi ulasan adalah hal yang luar biasa!

Setelah menggabungkan kode kita ke cabang master, sekarang kita dapat melepaskan kode ini ke produksi menggunakan git push heroku masterperintah dari terminal kita. Atau, untuk skenario yang lebih realistis, kami mungkin mempromosikan kode kami ke lingkungan pementasan atau secara otomatis menerapkan kode ke produksi setelah penggabungan. Kami tidak akan mempertimbangkan pengaturan alur kerja tersebut untuk tujuan artikel ini.


Dilema

Sekarang, jika menyangkut biaya, penting untuk mengingat beberapa hal. Pertama, tinjau aplikasi tetap hidup sampai permintaan tarik digabungkan atau ditutup, atau setelah jangka waktu maksimum telah berlalu yang kami tentukan dalam pengaturan aplikasi tinjauan kami. (Anda akan ingat bahwa kami mengonfigurasi aplikasi ulasan kami untuk dimusnahkan secara otomatis setelah lima hari.) Selain itu, Anda dikenai biaya untuk aplikasi ulasan seperti sumber daya Heroku lainnya, diprorata per detik.

Jadi bayangkan seorang pengembang membuat permintaan tarik pada hari Jumat sore. Ini memulai penerapan aplikasi ulasan baru. Kemudian semua orang pulang ke rumah selama akhir pekan sementara aplikasi ulasan yang sepi tidak digunakan lagi. Pada hari Senin, pengembang lain melihat permintaan penarikan, meninjau kode dan menguji aplikasi tinjauan secara manual, menyetujui permintaan penarikan, dan kemudian menggabungkannya.

Dalam skenario ini, aplikasi ulasan aktif sepanjang akhir pekan, yang berarti Anda dikenai biaya untuk sumber daya yang digunakannya, meskipun aplikasi ulasan tidak pernah benar-benar diperlukan selama waktu itu. Pada kenyataannya, aplikasi ulasan hanya diperlukan selama beberapa menit selama peninjauan kode.

Dan jika kedengarannya buruk, bayangkan skenario ini dikalikan dengan ratusan repo dan ratusan developer. Bergantung pada ukuran perusahaan Anda, biaya ini dapat bertambah dengan cepat!

Bukankah lebih baik jika kita bisa menidurkan aplikasi ulasan kita saat tidak digunakan?


AutoIdle ke Rescue

AutoIdle adalah add-on Heroku yang secara otomatis menempatkan pementasan dan ulasan aplikasi Anda ke mode tidur setelah 30 menit tidak aktif. Saat permintaan HTTP akhirnya diterima, AutoIdle mengaktifkan kembali aplikasi. Ini sempurna untuk aplikasi sementara yang benar-benar tidak perlu tetap aktif sepanjang waktu. (Aplikasi produksi, tentu saja, perlu tersedia pada waktu tertentu, jadi AutoIdle tidak boleh digunakan untuk lingkungan produksi Anda!)


Menginstal AutoIdle

Kita dapat menambahkan AutoIdle ke aplikasi kita dengan menjalankan perintah berikut di terminal kita:

heroku addons:create autoidle

Dan… itu dia! Tidak ada lagi langkah. AutoIdle sekarang terinstal dan siap untuk menghemat uang Anda.

Namun, penting untuk dicatat bahwa perintah di atas menambahkan AutoIdle ke aplikasi Anda yang sebenarnya, bukan aplikasi ulasan Anda. Jadi, jika aplikasi ini adalah aplikasi produksi yang berhubungan dengan pelanggan, Anda tidak boleh menambahkan AutoIdle di sini! Perintah ini sangat cocok untuk menambahkan AutoIdle ke aplikasi pementasan atau aplikasi non-pelanggan lainnya yang dapat tidur saat tidak aktif. Jika Anda perlu menghapus add-on AutoIdle, Anda selalu dapat melakukannya menggunakan perintah ini:

heroku addons:destroy autoidle

Karena kami ingin menambahkan AutoIdle hanya ke aplikasi ulasan kami dalam kasus kami, sebagai gantinya kami akan menentukan add-on kami di app.jsonfile di tingkat root repo kami. Cuplikan JSON berikut menetapkan bahwa untuk lingkungan “review” kita ingin menggunakan add-on “autoidle: hobby”.

"environments": {
  "review": {
    "addons": ["autoidle:hobby"]
  }
}

Daftar lengkap jenis rencana AutoIdle dapat ditemukan di sini .

Sekarang kita memiliki AutoIdle yang dikonfigurasi untuk aplikasi review kita, mari kita buat pull request lain seperti yang kita lakukan sebelumnya. Setelah kami membuat permintaan tarik, aplikasi ulasan kami akan diterapkan secara otomatis.

Kami kemudian dapat melihat dasbor AutoIdle kami dengan menjalankan perintah ini di terminal kami:

heroku addons:open autoidle

Dasbor kami awalnya terlihat seperti ini:

Dasbor AutoIdle hanya beberapa menit setelah mengkonfigurasi AutoIdle untuk aplikasi ulasan kami

Aplikasi ulasan kami baru saja dibuat, jadi saat ini sedang berjalan. Mari kita tunggu setidaknya 30 menit tanpa berinteraksi dengan aplikasi ulasan kami untuk melihat AutoIdle bekerja dengan ajaib.

30 menit kemudian… aplikasi kita telah dihentikan. Bagus!

AutoIdle telah menghentikan aplikasi ulasan yang tidak aktif

Sekarang mari kita tunggu beberapa jam lagi sehingga kita dapat mulai melihat penghematan yang akan dihasilkan AutoIdle untuk kita. Saya membuat aplikasi ulasan ini larut malam, jadi mari kita lihat seperti apa tampilan dasbor ketika saya memeriksanya keesokan paginya:

Menghemat uang dengan AutoIdle

Seperti yang Anda lihat, aplikasi kami telah dihentikan selama 90% dari waktu (berjalan selama satu jam dan kemudian berhenti selama sembilan jam dalam semalam). Saat ini kami memiliki perkiraan penghematan bulanan sebesar $ 4,30 per bulan. Namun perlu diingat bahwa ini hanya untuk satu aplikasi review dyno Hobby yang telah kami gunakan kurang dari sehari.

Bayangkan jika kami memiliki 100 aplikasi ulasan. Sekarang kami memiliki perkiraan penghematan bulanan $ 430 per bulan! Senang mengetahui bahwa kami tidak membayar semua waktu henti ini ketika kami tidak menggunakan aplikasi kami!

Jika sekarang kami mencoba untuk melihat aplikasi ulasan kami di herokuappdomain, kami mendapatkan layar kesalahan:

Kesalahan aplikasi saat mencoba melihat aplikasi tidur kami

Ini karena aplikasi ulasan kami masih dalam mode tidur. Biasanya diperlukan waktu sekitar 5–10 detik agar aplikasi aktif setelah permintaan pertama ini. Setelah jangka waktu tersebut berlalu, kami dapat menyegarkan layar kami dan melihat aplikasi kami berfungsi normal kembali.

Aplikasi ulasan kami aktif dan aktif kembali

Salah satu cara untuk menghindari halaman kesalahan awal ini adalah dengan menggunakan autoidleappdomain, bukan herokuappdomain untuk aplikasi kita. Dalam kasus kami, daripada mengunjungi https://autoidle-dem-feature-re-zifkor.herokuapp.com, kami dapat mengunjungi https://autoidle-dem-feature-re-zifkor.autoidleapp.com. Ini adalah aplikasi yang sama, tetapi sekarang tanpa masalah pemuatan halaman pertama.

Menggunakan domain autoidleapp.com untuk menghindari kesalahan pemuatan halaman pertama untuk aplikasi tidur

Sekarang aplikasi ulasan kami aktif lagi, jika kami memeriksa dasbor AutoIdle kami, kami akan melihat bahwa aplikasi ulasan kami tidak lagi tidur.


Kesimpulan

Aplikasi ulasan sangat berguna untuk memvalidasi perubahan selama tinjauan kode permintaan tarik. Tetapi membiarkannya aktif dan berjalan untuk jangka waktu yang lama dapat menghabiskan uang Anda. Dalam contoh kami, kami memiliki satu aplikasi dan satu permintaan tarik. Kami juga menggunakan dyno Hobby tingkat bawah. Dalam kasus kami, biaya kami relatif rendah. Tapi bayangkan menggunakan aplikasi ulasan di perusahaan perangkat lunak perusahaan. Dengan ratusan insinyur, permintaan tarik, dan aplikasi ulasan, semua menggunakan dynos besar dan add-on Heroku tambahan, biayanya dapat bertambah.

Dengan menggunakan AutoIdle, Anda dapat membuat aplikasi Anda tetap hidup hanya jika diperlukan, yang akan secara drastis mengurangi tagihan Heroku Anda.