Selamat datang di tutorial pertama dalam serangkaian tutorial yang menunjukkan cara mengambil monolit (atau aplikasi monolitik), memisahkannya menjadi beberapa modul, membuat container untuk modul, dan men-deploy image container ke cluster Google Kubernetes Engine (GKE). Jangan khawatir jika Anda tidak memahami salah satu istilah ini. Anda akan mempelajari artinya saat Anda melanjutkan seri ini.
Jalur pembelajaran terdiri dari tutorial berikut:
- Ringkasan
- Memahami monolit (tutorial ini)
- Membuat monolit menjadi modular
- Menyiapkan aplikasi modular untuk penampungan
- Memasukkan aplikasi modular ke dalam container
- Men-deploy aplikasi ke cluster GKE
Dalam tutorial ini, Anda akan mempelajari monolith dengan melakukan langkah-langkah berikut:
- Menyiapkan aplikasi di komputer lokal Anda.
- Menjelajahi fiturnya di browser Anda.
- Meninjau kode.
Apa itu monolith?
Sebelum Anda menjalankan sampel monolith Cymbal Books, penting untuk memahami terlebih dahulu apa itu monolith.
Monolit adalah aplikasi yang semua komponennya saling terhubung, dan tidak dapat diskalakan secara independen. Misalnya, jika sejumlah pengguna tiba-tiba membuka halaman login aplikasi, Anda tidak dapat menskalakan hanya komponen login secara terpisah. Sebagai gantinya, Anda perlu menskalakan seluruh aplikasi, termasuk komponen yang tidak terkait, seperti katalog produk atau sistem pemrosesan pesanan.
Sebaliknya, jika aplikasi dipecah menjadi modul independen, setiap modul dapat diskalakan secara terpisah berdasarkan kebutuhan resource-nya. Jika Anda menghosting aplikasi modular di cluster GKE, GKE bahkan dapat mengotomatiskan penskalaan untuk Anda.
Istilah monolitik tidak berarti kode yang tidak teratur. Monolit dapat terstruktur dengan baik, dan komponennya dapat diterapkan di area kode yang berbeda. Yang membedakan monolit adalah bahwa komponen ini tidak dapat berjalan atau diskalakan secara independen.
Biaya
Anda dapat menyelesaikan tutorial ini tanpa dikenai biaya apa pun. Namun, mengikuti langkah-langkah dalam tutorial terakhir dalam seri ini akan menimbulkan biaya pada akun Google Cloud Anda. Biaya akan mulai dikenakan saat Anda mengaktifkan GKE dan men-deploy aplikasi Cymbal Books ke cluster GKE. Biaya ini mencakup biaya per cluster untuk GKE, seperti yang diuraikan di halaman Harga, dan biaya untuk menjalankan VM Compute Engine.
Untuk menghindari biaya yang tidak perlu, pastikan Anda menonaktifkan GKE atau menghapus project setelah menyelesaikan tutorial ini.
Sebelum memulai
Tutorial ini memerlukan Python versi 3.13 di mesin lokal Anda. Untuk memeriksa versi Python yang ada di komputer Anda, jalankan perintah ini:
python3 --version
Jika versi Python Anda lebih lama dari 3.13, download dan instal versi terbaru dari situs Python resmi.
Menyiapkan lingkungan Anda
Dalam seri tutorial ini, Anda akan menjalankan berbagai versi aplikasi di tempat yang berbeda:
- Versi monolitik di mesin lokal Anda
- Versi modular di komputer lokal Anda
- Versi dalam container di Cloud Shell, lalu di cluster GKE
Di bagian ini, Anda akan menyiapkan lingkungan virtual di komputer lokal tempat monolit dapat berjalan.
Mendownload kode
Buka terminal di mesin lokal Anda.
Buat clone repositori GitHub tutorial ke komputer lokal Anda:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.gitFolder
kubernetes-engine-samples/quickstarts/monolith-to-microservicesberisi tiga folder berikut:monolith/,modular/, dancontainerized/. Dalam tutorial ini, Anda hanya akan berfokus pada file di foldermonolith/.
Buat dan aktifkan lingkungan virtual
Lingkungan virtual menyediakan ruang terisolasi untuk menjalankan aplikasi. Lingkungan ini mencegah library Python yang perlu Anda instal untuk aplikasi agar tidak mengganggu project Python lain di sistem Anda.
Ikuti langkah-langkah berikut untuk membuat dan mengaktifkan lingkungan virtual:
Di terminal yang Anda buka di bagian sebelumnya, buka folder berikut di repositori yang Anda clone ke mesin Anda sebelumnya:
cd kubernetes-engine-samples/quickstarts/monolith-to-microservicesBuat lingkungan virtual bernama
book-review-env:python3 -m venv book-review-envSebaiknya buat lingkungan virtual karena di area ini Anda dapat menjalankan aplikasi secara terpisah. Hal ini membantu memastikan bahwa dependensi dan konfigurasi aplikasi tidak bertentangan dengan software atau library lain di sistem Anda.
Aktifkan lingkungan virtual menggunakan perintah untuk sistem operasi Anda:
macOS dan Linux
source book-review-env/bin/activateWindows
book-review-env\Scripts\activateInstal dependensi Python untuk monolith. Dependensi adalah library Python eksternal yang diandalkan aplikasi agar berfungsi dengan baik. Library ini tercantum dalam file
requirements.txt, dan perintah berikut akan menginstal semuanya di lingkungan virtual Anda:pip install -r monolith/requirements.txt
Jalankan dan jelajahi Cymbal Books di browser
Aplikasi Cymbal Books sengaja dibuat sederhana dan memiliki fitur berikut:
- Halaman beranda yang menampilkan semua buku di perpustakaan.
- Halaman yang menampilkan detail tentang buku.
- Tombol di halaman detail yang, saat diklik, menampilkan ulasan buku.
- Kemampuan untuk menampilkan gambar sampul buku.
Halaman beranda menampilkan tiga buku, dan tombol Lihat Detail muncul di setiap buku:

Setelah lingkungan virtual aktif dan dependensi aplikasi diinstal di lingkungan tersebut, jalankan aplikasi dengan mengikuti langkah-langkah berikut:
Di komputer lokal Anda, buka direktori monolith:
cd monolith/Mulai aplikasi:
python3 mono.pyBuka browser web Anda, lalu buka halaman beranda aplikasi:
http://127.0.0.1:8080.Untuk membuka halaman detail buku, klik Lihat Detail. Halaman detail memberikan informasi selengkapnya tentang buku, seperti penulis dan tahun publikasinya.
Untuk menampilkan daftar ulasan buku, di halaman detail, klik Tampilkan Ulasan. Gambar berikut menunjukkan halaman detail buku untuk buku Zephyr's Timepiece dan ulasan buku pertama:

Jelajahi file di folder /monolith
Luangkan waktu sejenak untuk memeriksa file di folder /monolith:
monolith/
├── mono.py
├── data/
│ ├── book-1.json
│ ├── book-2.json
│ ├── book-3.json
│ ├── reviews-1.json
│ ├── reviews-2.json
│ └── reviews-3.json
├── images/
│ ├── fungi_frontier.jpg
│ ├── melodic_mechanics.jpg
│ └── zephyrs_timepiece.jpg
├── static/
│ ├── styles_for_details.css
│ └── styles_for_home.css
└── templates/
├── book_details.html
└── home.html
Folder dan file utama adalah sebagai berikut:
Folder
images/berisi gambar sampul buku berikut, yang ditampilkan di aplikasi:fungi_frontier.jpgmelodic_mechanics.jpgzephyrs_timepiece.jpg
Folder
data/berisi file JSON berikut. File ini berisi ulasan tentang tiga buku di library Cymbal Books, dan detail tentang setiap buku:reviews-1.json,reviews-2.json,reviews-3.jsonbook-1.json,book-2.json,book-3.json
Meskipun aplikasi di dunia nyata sering menggunakan database, menyimpan data aplikasi dalam file JSON akan menyederhanakan penerapannya. Aplikasi contoh Cymbal Book menggunakan file JSON sehingga Anda tidak perlu menangani kode yang rumit. Sebagai gantinya, Anda dapat berfokus pada tujuan utama seri tutorial ini, yaitu mempelajari cara memodularisasi dan mengontainerisasi monolit.
Anda dapat mengabaikan folder berikut karena file di dalamnya penting untuk tata letak dan desain aplikasi, tetapi tidak relevan secara langsung dengan logika aplikasi:
static/: berisi file CSS yang menentukan gaya aplikasi.templates/: berisi file HTML yang menentukan tata letak dan konten aplikasi.
Memahami monolit sebagai aplikasi Flask
Monolit dalam tutorial ini dibuat menggunakan Flask, yang merupakan library Python untuk membangun aplikasi web. Namun, Flask biasanya tidak digunakan di lingkungan produksi karena tidak mendukung konkurensi, yang dapat menyebabkan bottleneck performa saat beban berat. Aplikasi Flask juga tidak memiliki fitur penanganan error dan skalabilitas yang andal.
Aplikasi Cymbal Books menggunakan Flask karena kesederhanaan dan penyiapannya yang minimal membuatnya lebih mudah memahami konsep modularisasi dan containerisasi. Untuk aplikasi tingkat produksi yang menggunakan Python, pertimbangkan alternatif untuk Flask seperti FastAPI atau Django. Anda juga dapat menggunakan framework yang disesuaikan dengan bahasa lain, seperti Spring Boot untuk Java atau Express.js untuk Node.js. Framework ini dapat menawarkan konkurensi, skalabilitas, dan kemampuan siap produksi yang lebih baik untuk memenuhi permintaan aplikasi di dunia nyata.
Memeriksa mono.py
Semua logika monolit terdapat dalam satu file bernama mono.py. File
ini membuat aplikasi Flask. Aplikasi Flask berjalan di dalam server web, memproses URL tertentu, yang disebut endpoint, dan merespons permintaan yang dibuat ke URL tersebut. Saat seseorang meminta salah satu URL ini—baik dengan membukanya di browser web atau membuat permintaan secara terprogram—Flask menjalankan bagian kode yang sesuai untuk menangani permintaan tersebut.
Screenshot berikut menampilkan file mono.py. Kotak tersebut menandai
handler rute aplikasi. Meskipun satu handler melayani halaman beranda yang ditampilkan kepada pengguna, handler lainnya terutama digunakan untuk komunikasi antar-modul—mengirimkan data dalam format JSON atau file gambar statis. Detail selengkapnya tentang endpoint ini disediakan di bagian berikutnya.

Dalam screenshot, kotak menandai pengendali rute aplikasi. Handler rute terdiri dari dua bagian:
- Baris
@app.route()yang menentukan pola URL (seperti/book/<id>/reviews). - Fungsi yang berjalan saat endpoint dipanggil.
Endpoint adalah URL yang cocok dengan pola yang ditentukan di baris @app.route().
Misalnya, saat pengguna mengklik Tampilkan Ulasan di halaman detail buku, aplikasi
membuat permintaan ke http://localhost:8080/book/1/reviews. Handler rute ulasan buku merespons permintaan ini dengan melakukan langkah-langkah berikut:
- Mengenali bahwa URL ini cocok dengan polanya
/book/<id>/reviews. - Mendapatkan ulasan untuk buku 1 dari file JSON.
- Mengirimkan kembali ulasan tersebut ke frontend dalam format JSON.
Komponen detail buku kemudian menampilkan ulasan ini dalam bentuk yang dapat dibaca manusia di halaman web. Monolit Cymbal Books menggunakan library Python bernama Flask untuk menyederhanakan penerapan handler rute. Dalam tutorial berikutnya, Anda akan melihat bahwa Flask dan handler rute memainkan peran penting saat Anda mempelajari cara mengubah aplikasi monolitik menjadi aplikasi modular.
Pentingnya endpoint monolit untuk modularisasi
Endpoint memainkan peran penting dalam aplikasi Flask, termasuk aplikasi Cymbal Books. Namun, kepentingannya melampaui desain monolitik karena memahami endpoint sangat penting untuk memecah aplikasi menjadi modul independen. Berikut alasannya:
- Fitur inti: Endpoint mengimplementasikan fitur utama aplikasi, seperti menampilkan halaman atau mengambil data. Setiap fitur dikaitkan dengan endpoint tertentu.
- Modularisasi: Endpoint berfungsi sebagai batas alami, atau garis patahan, untuk membagi aplikasi menjadi modul yang lebih kecil. Seperti yang akan Anda lihat di tutorial berikutnya, setiap modul dalam versi modular aplikasi sesuai dengan fitur dengan endpoint-nya sendiri.
- Komunikasi: Dalam desain modular, endpoint memungkinkan modul otonom berkomunikasi satu sama lain. Memahami cara penerapan endpoint di
mono.pymeletakkan dasar untuk memodularisasi aplikasi Cymbal Books menjadi modul independen dalam tutorial berikutnya.
Menguji handler rute monolit
Untuk melihat jenis data yang ditampilkan setiap pengendali rute, buka endpoint berikut di browser Anda:
- Homepage route handler: Buka
http://localhost:8080/untuk melihat halaman HTML lengkap yang menampilkan katalog buku. - Pengendali rute detail buku: Buka
http://localhost:8080/book/1untuk melihat halaman HTML yang menampilkan detail tentang buku tertentu. Halaman ini mengambil data JSON tentang buku dari server dan menyajikannya dalam format yang dapat dibaca manusia menggunakan template HTML. Coba lihat detail untuk buku lain dengan mengubah nomor ID (1, 2, atau 3) di URL. - Pengendali rute ulasan buku: Buka
http://localhost:8080/book/3/reviewsuntuk melihat data JSON ulasan buku. Data ini diproses menjadi format yang dapat dibaca saat Anda mengklikShow Reviewsdi halaman detail buku untuk Melodic Mechanics. - Pengendali rute gambar: Buka
http://localhost:8080/images/fungi_frontier.jpguntuk melihat file gambar. Halaman beranda dan halaman detail buku memanggil endpoint ini untuk menampilkan gambar sampul buku.
Ringkasan
Dalam tutorial ini, Anda akan menyiapkan dan menjalankan aplikasi Cymbal Books monolitik. Kemudian, Anda akan mempelajari bahwa monolith diimplementasikan sebagai aplikasi Flask, yang memproses URL tertentu, yang disebut endpoint, dan merespons permintaan yang dibuat ke URL tersebut.
Langkah berikutnya
Dalam tutorial berikutnya, Memodularisasi monolit, Anda akan melihat cara memecah monolit menjadi modul-modul independen.