F5 · Rilis: dari Notebook ke Aplikasi
Laporan Warung Makmur yang kamu tulis di F1 dan F2 menjadi aplikasi yang bisa dibuka orang lain lewat URL: proyek rapi, container, CI, tayang, dan rollback.
- 8 modul
- 50 latihan
- 70 istilah
Daftar modul
- 01Proyek rapi dan dependensi terkunci7 latihan
- 02Docker dari nol6 latihan
- 03Git dan GitHub untuk proyek data6 latihan
- 04GitHub Actions: tes setiap push6 latihan
- 05Tayang pertama: aplikasi Streamlit di Streamlit Community Cloud6 latihan
- 06Tayang kedua: API FastAPI dalam container6 latihan
- 07Rahasia, konfigurasi, domain, pemantauan sederhana7 latihan
- 08CD saat merge dan rollback + daftar periksa "Tayang"6 latihan
Ada contoh atau latihan bertanda “Kerjakan di laptop”? Paket dan data F5 untuk menjalankannya di komputermu ada di panduan menjalankan kode di komputermu.
Tentang course ini
Laporan Warung Makmur yang kamu tulis di F1 dan F2 menjadi aplikasi yang bisa dibuka orang lain lewat URL: proyek rapi, container, CI, tayang, dan rollback.
Course fondasi gratis sesudah F1 Python dan F2 SQL. Satu proyek dari awal sampai akhir: aplikasi laporan untuk Bu Sri, pemilik Warung Makmur (fiktif).
Untuk siapa
- Lulusan F1 (minimal Modul 01–14: fungsi, berkas, modul, venv, pytest) dan F2 (minimal Modul 01–05 dan 14: kueri, agregasi, JOIN, SQL dari Python).
- Yang punya notebook atau skrip analisis yang "jalan di laptopku" dan ingin orang lain bisa memakainya.
- Calon peserta jalur Data Scientist, Data Engineer, ML Engineer, AI Engineer, dan Agentic Engineer: semua capstone jalur memakai daftar periksa Tayang dari Modul 08.
Yang kamu butuhkan: peramban, akun GitHub gratis, dan salah satu dari: laptop dengan Docker Desktop/Docker Engine, atau GitHub Codespaces (Docker sudah ada di dalamnya). Akun layanan tayang (Streamlit Community Cloud, Render, Hugging Face) dibuat di modul yang membutuhkannya.
Prasyarat
| Dari | Yang dipakai |
|---|---|
| F1 Modul 06–11 | Fungsi, dict/list, galat, berkas JSON/CSV, modul dan if __name__ == "__main__" |
| F1 Modul 13–14 | Terminal, venv, pip, requirements.txt, pytest |
| F2 Modul 04–05, 14 | GROUP BY, JOIN, sqlite3 dengan parameter ? |
Git cukup dari nol: Modul 03 mengajarkan yang dibutuhkan proyek ini.
Setelah F5 kamu bisa
- Mengubah notebook menjadi paket Python dengan fungsi yang bisa diuji dan dependensi yang terkunci.
- Membangun image Docker multi-stage yang kecil, tidak berjalan sebagai root, dan menjalankannya dengan port, variabel lingkungan, dan volume.
- Menyimpan proyek data di GitHub tanpa data besar, keluaran notebook, atau rahasia ikut ter-commit.
- Menjalankan tes otomatis di GitHub Actions setiap push dan PR.
- Menayangkan aplikasi Streamlit/Gradio dan API FastAPI dalam container di layanan gratis, dan tahu batas setiap layanan.
- Mengatur konfigurasi dan rahasia lewat variabel lingkungan, memasang
domain sendiri, dan memantau
/health. - Menayangkan otomatis saat PR digabung, memeriksa versi yang tayang, dan kembali ke versi sebelumnya (rollback) dalam hitungan menit.
Hasil akhir
Repo publik warung-makmur-app berisi:
- paket
warung(laporan omzet harian dan produk terlaris dari dataset F2); - aplikasi web Streamlit (atau Gradio) yang tayang di URL publik;
- API FastAPI dalam container dengan
/health,/omzet/{tanggal}, dan/produk/terlaris; - CI hijau di setiap push, CD saat merge ke
main, dan rollback yang sudah dicoba sekali; - README portofolio dengan URL, lencana CI, dan cara orang lain mencobanya.
Rinciannya di kontrak proyek: proyek-tayang.md.
Cara belajar di course ini
- Kode dulu, penjelasan sesudahnya. Setiap modul dibuka dengan Intinya (3–5 butir), lalu contoh.
- Dua jenis kerja. Latihan Python diperiksa otomatis di peramban (pustaka standar saja): memvalidasi konfigurasi, memeriksa Dockerfile dan workflow yang diberikan sebagai teks, mengunci dependensi, membaca respons healthcheck. Langkah yang butuh Docker atau akun layanan ditulis sebagai Lab luar peramban dengan daftar "Selesai bila:".
- Syarat layanan gratis berubah. Setiap angka kuota, batas, dan harga diberi tanggal pengecekan. Bila halaman layanan berkata lain, halaman layanan yang benar.
Waktu: ±3–4 jam per modul, total ±30 jam.
Silabus (8 modul)
| # | Modul | Hasil utama | Langkah proyek |
|---|---|---|---|
| 01 | Proyek rapi dan dependensi terkunci | Dari sel notebook ke fungsi murni, tata letak src/, pyproject.toml, penentu versi, lock file dan hash | Paket warung + requirements.txt terkunci |
| 02 | Docker dari nol | Image, container, lapisan dan cache, port, variabel lingkungan, volume, .dockerignore, multi-stage, pengguna non-root | Dockerfile multi-stage yang lolos lint |
| 03 | Git dan GitHub untuk proyek data | Apa yang di-commit dan yang tidak, .gitignore, notebook tanpa keluaran, berkas besar, cabang dan PR, tag versi, rahasia yang bocor | Repo publik warung-makmur-app dengan PR pertama |
| 04 | GitHub Actions: tes setiap push | Workflow, pemicu, job dan step, matrix, cache pip, izin, batas waktu, jebakan YAML, membaca CI merah | ci.yml hijau + lencana di README |
| 05 | Tayang pertama: aplikasi Streamlit di Streamlit Community Cloud | UI tipis di atas fungsi, cache, berkas metadata Space, syarat layanan terkini dan jalur gratis | Aplikasi laporan di URL publik |
| 06 | Tayang kedua: API FastAPI dalam container | Rute, validasi, /health, image untuk Docker Space, Render, Koyeb, Cloud Run beserta batasnya | API warung-api tayang |
| 07 | Rahasia, konfigurasi, domain, pemantauan sederhana | Konfigurasi dari lingkungan, .env, penyimpan rahasia, kunci API, DNS dan TLS, log terstruktur, pemantau uptime | API terkonfigurasi, endpoint berkunci, pemantauan |
| 08 | CD saat merge dan rollback + daftar periksa "Tayang" | Image bertag commit di GHCR, deploy hook, uji asap versi, rollback, lingkungan dan persetujuan | cd.yml + rollback teruji + lencana Tayang |
Yang sengaja tidak dibahas: Kubernetes (pengantarnya di C10 MLOps), Terraform, basis data terkelola, autoscaling, rilis canary (ada di C10 MLOps), serta autentikasi pengguna (C5 Agentic Engineering Modul 15 hanya memuat kasus otorisasi untuk review).
Lingkungan lab
| Bagian | Di mana | Diperiksa |
|---|---|---|
Latihan Python (pustaka standar, termasuk sqlite3 dengan dataset Warung Makmur) | Peramban | Otomatis |
| Docker, Git, GitHub Actions, akun layanan | Laptop atau GitHub Codespaces | "Selesai bila:" |
Dataset data/warung.sql adalah salinan persis dataset F2 (September 2026,
fiktif). Latihan bertanda data=warung membuat warung.db dari berkas itu.
Pedoman bahasa
Sapaan "kamu", kalimat pendek, istilah sama dengan F1/F2, ditambah:
| Inggris | Dipakai |
|---|---|
| deploy | tayang (kata kerja: menayangkan); "deploy" untuk nama fitur layanan |
| image, container, volume, registry | image, container, volume, registry |
| build | bangun (image), build (nama langkah) |
| lock file | lock file (berkas kunci dependensi) |
| workflow, job, step, runner | workflow, job, step, runner |
| secret | rahasia (secrets untuk nama fitur) |
| health check | healthcheck / pemeriksaan kesehatan |
| rollback | rollback (kembali ke versi sebelumnya) |
Aturan mutu (untuk penulis dan reviewer)
- Pemeriksa latihan Coding Studio harus 0 galat di Python 3.11, 3.12, dan 3.13.
- Latihan dan contoh yang dijalankan hanya memakai pustaka standar dan
berjalan di Pyodide (tanpa jaringan,
subprocess, atau thread). Kode Streamlit, Gradio, FastAPI, Docker, dan YAML ditulis sebagai bacaan (python statis,dockerfile,yaml,bash). - Syarat layanan (kuota, harga, kartu kredit, tidur saat sepi) ditulis dengan tanggal pengecekan dan sumber resmi. Yang belum bisa dipastikan ditandai perlu dicek ulang.
- Tanpa data pribadi; contoh domain memakai
example.com, token contoh jelas palsu.