Lewati ke konten utama
  1. Posts/

Flask Heroku Workflow

·756 kata·4 menit· 0 · 0 ·
flask heroku
Syahravi
Penulis
Syahravi
Seorang penggemar teknologi dan pengembang perangkat lunak yang membara!! 😄.
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:

  1. Local adalah kata lain dari ‘komputer’ yang menjadi tempat dimana kita membuat aplikasi dan mengujinya.
  2. Staging yang menjadi tempat dimana kita gunakan untuk pratinjau dan pengujian lanjutan yang tidak bisa dilakukan di local. (praproduksi)
  3. 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.

Workflow
Alur Kerja - Workflow

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

Pipelines Prod
Perintah di atas membuat pipeline bernama 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.

  1. flaskrav (production environment)
  2. 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.

Staging vs Production
Staging =! Production

Jika kita ‘senang’ dengan perubahan tersebut, kita dapat mempromosikan versi terkini ke ‘produksi’.

heroku pipelines:promote --remote staging

Promote Production
Promote Production
Perintah di atas menerapkan ke produksi (deploys to production) versi yang sama persis dengan yang saat ini berjalan di https://flaskrav-staging.herokuapp.com/.
Production
Production == Staging

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

Python: Membuat Aplikasi Flask - This article is part of a series.

Related

Konfigurasi Sensitif pada Flask
·278 kata·2 menit· 0 · 0
flask heroku
Deploy Flask Apps in Heroku
·358 kata·2 menit· 0 · 0
flask deployment heroku
Flask Apps Heroku
·513 kata·3 menit· 0 · 0
flask heroku
Python: Manipulasi Datetime
·248 kata·2 menit· 0 · 0
python
Python Dasar : Mengenal dan Menggunakan Bahasa Pemrograman Python
·524 kata·3 menit· 0 · 0
python
Cara menggunakan SSH Git untuk Github
·455 kata·3 menit· 0 · 0
edukasi-teknologi git ssh github