Flask Heroku Workflow
Daftar isi
Python: Membuat Aplikasi Flask - This article is part of a series.
Mari kita belajar mengimplementasikan workflow untuk penerapan aplikasi menggunakan Heroku pipelines.
Workflow menggunakan tiga ’lingkungan’ terpisah yang disebut Local, Staging dan Production.
Ini sangat umum digunakan pada project profesional karena memungkinkan pengujian (local) dan peninjauan versi baru (staging) sebelum diterapkan ke production.
Memahami alur kerja (Workflow) #
Penegasan ulang bahwa kita akan menjalankan aplikasi di tiga lingkungan terpisah:
- Local adalah kata lain dari ‘komputer’ yang menjadi tempat dimana kita membuat aplikasi dan mengujinya.
- Staging yang menjadi tempat dimana kita gunakan untuk pratinjau dan pengujian lanjutan yang tidak bisa dilakukan di local. (praproduksi)
- Production adalah hasil akhir dari staging yang telah dilakukan, ’lingkungan’ dimana aplikasi bisa digunakan oleh pengguna.
Di bagian sebelumnya, kita telah ‘melihat’ cara menjalankan aplikasi di lingkungan local dan di lingkungan production (Heroku).
Menambahkan lingkungan staging dapat sangat bermanfaat bagi proses pengembangan.
Tujuan utama lingkungan ini adalah untuk mengintegrasikan perubahan dari semua cabang baru dan menjalankan pengujian integrasi terhadap pembuatan - yang akan menjadi rilis berikutnya.
Gambar di atas menunjukkan tiga lingkungan, aktivitas yang terjadi di masing-masing lingkungan dan serta langkah-langkah deploy dan promote.
Deployment Workflow in Heroku #
Dalam kasus ini, flaskrav
akan kita jadikan lingkungan production dan kini kita akan membuat lingkungan baru untuk staging.
heroku create flaskrav-staging --remote staging
git push staging main
Perintah di atas akan membuat ’lingkungan’ baru bernama flaskrav-staging
dan men-deploy aplikasi tersebut menggunakan Git.
Kita bisa akses staging di https://flaskrav-staging.herokuapp.com
.
Mari kita hubungkan keduanya,,
heroku pipelines:create --app flaskrav \
--stage production flaskrav
flaskrav
dan menambahkan aplikasi yang sudah ada bernama flaskrav
untuk dijadikan lingkungan production.
Sekarang, mari kita buat Git remote yang mengarah ke flaskrav
yang diberi nama prod
.
heroku git:remote --app flaskrav --remote prod
Mulai sekarang, gunakan prod
untuk ‘penerapan’ produksi.
Tambahkan ’lingkungan’ staging ke pipeline yang sama dengan menjalankan perintah berikut:
heroku pipelines:add flaskrav \
--app flaskrav-staging \
--stage staging
Perintah ini menambahkan aplikasi flaskrav-staging
ke pipeline yang sama dan ini digunakan untuk ’lingkungan’ staging
.
flaskrav
(production environment)flaskrav-staging
(staging environment)
Deploying and Promoting to Staging and Production #
Menerapkan dan Mempromosikan ke Pementasan dan Produksi: Setelah pengaturan alur kerja dan pipeline, kita dapat menggunakannya untuk men-deploy aplikasi ke staging, meninjaunya di sana, lalu mempromosikannya ke produksi (promote production).
Mari kita buat perubahan.
< flaskrav >
|
|-- app/
| |
| |-- models.py # Database Tables
| |-- forms.py # App Forms: login, registration
| |-- util.py # Helpers to manipulate date, files
| |-- views.py # App Routing
| |-- __init__.py # Bundle all above sections and expose the Flask APP
| |
| |-- <css, JS, images> # CSS files, Javascripts files, Images files
| |
| |-- templates/
| | |
| | |-- includes/ # Page chunks, components
| | | |
| | | |-- navigation.html # Top bar
| | | |-- header.html # Header
| | | |-- scripts.html # JS scripts common to all pages
| | | |-- footer.html # The common footer
| | |
| | |-- layouts/ # App Layouts (the master pages)
| | |
| | |-- accounts/ # Auth Pages (login, register)
| | | |
| | | |-- login.html # Use layout
| | | |-- register.html # Use layout
| | |
| | index.html # The default page
| | page-404.html # Error 404 page (page not found)
| | page-500.html # Error 500 page (server error)
| | *.html # All other pages
|
|-- venv/ # Inject Configuration via Environment
|-- .git/ # Metadata Git
|-- .gitignore # Dependencies Ignore Files
|-- requirements.txt # Application Dependencies
|
|-- config.py # App Configuration
|-- app.py # Start the app in development and production - WSGI gateway
|
|-- ************************************************************************
Lakukan juga perubahan yang dapat dilihat di browser.
File app.py
*
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Another version;>"
Mari kita deploy ke staging environment dengan menjalankan perintah:
git add --all
git commit -m "Another p"
git push staging main
Lihat perubahan terkini di https://flaskrav-staging.herokuapp.com/
.
Perhatikan bahwa production environment masih ‘belum’ mengikuti perubahan terkini.
Jika kita ‘senang’ dengan perubahan tersebut, kita dapat mempromosikan versi terkini ke ‘produksi’.
heroku pipelines:promote --remote staging
https://flaskrav-staging.herokuapp.com/
.
Silakan lihat https://flaskrav.herokuapp.com/
bahwa tampilannya akan sama persis dengan yang di https://flaskrav-staging.herokuapp.com/
.
Pemahaman terkait silakan lihat di Dokumentasi Pipelines Heroku.
Reference: Deploying a Python Flask Example Application Using Heroku - Real Python