05 Benchmark dan cutover
Panduan fasilitator untuk benchmark dan cutover — penutupan selisih dua tahap, jebakan impor dashboard, dan urutan teardown.
Pendamping fasilitator untuk pelajaran learner 05 Benchmark dan cutover.
Waktu
Sekitar 45 menit untuk lima langkah: menambahkan dashboard ClickHouse (Step 1, sekitar dua menit lewat impor terskrip), menjalankan benchmark (Step 2, tujuh query kali tiga run kali dua engine — beberapa menit, sebagian besar tanpa pengawasan tetapi cukup singkat untuk sekadar ditonton), cutover-nya sendiri (Step 3, interaktif — hentikan producer, susul delta-nya, refresh dbt, mulai producer ClickHouse, masing-masing satu langkah yang disengaja secara berurutan), verifikasi paritas (Step 4, cepat), dan teardown (Step 5).
TODO: tidak ada waktu per langkah yang diberikan di materi lab itu sendiri di luar total 45 menit
untuk modul ini — konfirmasi pembagiannya saat gladi bersih, terutama apakah tahap
penyusulan --resume di Step 3 secara andal cukup cepat (detik sampai menit, menurut deskripsi
lab itu sendiri) sehingga tidak butuh buffer apa pun.
Alur pembicaraan
- Ini modul yang mengubah "siap" menjadi "termigrasi." Modul 03 dan 04 membuktikan data dan pipeline-nya; modul ini membuktikan sebuah angka (benchmark) dan membuktikan jalur tulisnya benar-benar berpindah (cutover).
- Urutan cutover adalah kontennya di sini, bukan formalitas: hentikan producer Snowflake,
jalankan
--resumeuntuk menutup selisih, refresh dbt, lalu mulai producer ClickHouse. Setiap langkah bergantung pada langkah sebelumnya — menjalankannya di luar urutan adalah cara persis terjadinya kegagalan paritas yang senyap (lihat Kegagalan umum). - Katakan secara eksplisit mengapa
--resumecepat di sini padahal migrasi awal modul 03 tidak: ia menandai watermark padamax(pickup_at)yang sudah ada di ClickHouse dan hanya mengambil delta-nya, sehingga selisih yang sudah terbuka sejak modul 01 tertutup dalam detik sampai menit, bukan transfer bulk 40-50 menit lagi. - Hubungkan cutover kembali ke keadaan kosong
agg_hourly_zone_tripsdari modul 04: ia terisi untuk pertama kalinya di seluruh lab begitu producer ClickHouse dimulai, karena filternya hanya pernah cocok dengan baris dari producer live. Ini adalah jawaban atas pertanyaan yang sudah diajukan partner sejak modul 04. - Ini modul terakhir sebelum asesmen tertulis — ingatkan ruangan untuk menyimpan
migration-plan.mddan CSV benchmark di tempat yang bisa diakses setelah teardown Step 5 menghapus kedua lingkungan cloud.
Kegagalan umum
- Partner mengimpor ZIP dashboard secara manual lewat UI Superset alih-alih
menjalankan
add_clickhouse_connection.sh. Ekspor yang di-commit memiliki host ClickHouse-nya disunting menjadiyour-instance.clickhouse.cloud; skrip menambal URI dari.envsebelum mengimpor, tetapi impor manual lewat UI memakai host placeholder apa adanya dan koneksinya tidak akan tersambung. Minta mereka mengedit koneksi setelahnya agar mengarah keCLICKHOUSE_HOSTdan kredensial yang sebenarnya. - Partner melewatkan tahap penyusulan
--resumedi Step 3 dan tetap melakukan cutover. ClickHouse secara permanen kehilangan baris apa pun yang jatuh dalam selisih antara migrasi awal modul 03 dan saat producer berhenti — sebuah kegagalan paritas yang senyap. Pemeriksaan paritas di Step 4 dibangun untuk menangkap ini, tetapi hanya jika dijalankan; partner yang melompat langsung ke penulisan hasil benchmark tanpa menjalankan Step 4 tidak akan menyadari baris yang hilang. - Producer Snowflake sudah dihentikan sejak modul 01 atau 02 oleh partner yang bernaluri beres-beres. Cutover tidak punya apa pun untuk mengukur selisih jika producer tidak pernah berjalan terus-menerus — ini merusak seluruh demonstrasi cutover, bukan hanya langkah ini. Jika itu terjadi, perbaikan yang jujur adalah menjalankan ulang producer, biarkan ia menulis selama beberapa menit untuk membuat selisih nyata, lalu lanjutkan; tidak ada cara untuk secara retroaktif mendemonstrasikan selisih yang memang tidak pernah terbuka.
- Pemeriksaan paritas gagal (perbedaan lebih besar dari 0,01%). Jalankan tahap penyusulan lagi
dan periksa ulang:
python scripts/02_migrate_trips.py --resumelalubash scripts/01_verify_migration.sh. - Superset menampilkan
403 Forbidden. Cookie sesi kedaluwarsa — log out, log in kembali dihttp://localhost:8088, lalu jalankan ulangsuperset/add_clickhouse_connection.sh. - Benchmark menampilkan
N/Auntuk sebuah query, paling sering Q7. Skrip benchmark tidak bisa terhubung ke ClickHouse — konfirmasiCLICKHOUSE_HOSTsudah diset (source .clickhouse_state) dan layanannya berjalan.
Langkah reset
- Pemeriksaan paritas gagal: jalankan ulang
python scripts/02_migrate_trips.py --resumelalubash scripts/01_verify_migration.sh. - Cutover perlu dibatalkan (reverse cutover):
docker stop nyc_taxi_ch_producer, lalu hidupkan kembali producer Snowflake dariworkshop_public/snowflake_migration_lab/01-setup-snowflake/supersetdengandocker-compose --env-file ../.env up -d producer. - Reset lingkungan penuh:
source .env && ./teardown.shdariworkshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/menghancurkan layanan ClickHouse Cloud dan container producer ClickHouse (jika cutover sudah terjadi); Snowflake tidak disentuh skrip ini — bongkar terpisah dengansource .env && ./teardown.shdariworkshop_public/snowflake_migration_lab/01-setup-snowflake/. - Sebelum menjalankan salah satu teardown, konfirmasi
migration-plan.mddan CSV benchmark (scripts/benchmark_results_<timestamp>.csv) sudah tersimpan di tempat yang bisa diakses — kedua lingkungan cloud hilang setelah ini, dan modul 06 hanya membutuhkan tepat dua file itu dan tidak ada yang lain.