Kesalahpahaman: "Anda Perlu SSH untuk Promote"
Dalam artikel sebelumnya, kami menjelaskan topologi Hub-Spoke dari xGrid. Kemampuan paling kuatnya adalah bahwa setiap Spoke dapat menjadi Hub — cabut, bawa, nyalakan, promosikan.
Artikel itu menunjukkan perintah ini:
sudo xgrid-promote
Sebuah perintah shell melalui SSH. Pertanyaan alami berikutnya: "Jadi saya perlu laptop, klien SSH, dan keterampilan baris perintah untuk melakukan ini?"
Tidak.
SSH adalah lapisan paling bawah — dibangun untuk administrator sistem dan pengembang. Namun dalam insiden korban massal, orang yang perlu mempromosikan Spoke kemungkinan adalah perawat, paramedis, atau komandan insiden. Mereka membawa iPad, bukan laptop.
Maka fungsi promote xGrid bukan sekadar shell script. Ini adalah arsitektur tiga lapis.
Tiga Lapis Promote
| Lapisan | Pemicu | Pengguna | Alat yang Diperlukan |
|---|---|---|---|
| Lapisan 1 — Script | sudo xgrid-promote | Administrator sistem | SSH + laptop |
| Lapisan 2 — API | POST /api/failover/promote | Operator tingkat lanjut | Klien HTTP apa pun |
| Lapisan 3 — PWA UI | Tombol "Promosikan ke Hub" pada banner merah | Siapa pun | iPad / iPhone + browser |
Lapisan 3 memanggil Lapisan 2. Lapisan 2 memanggil Lapisan 1. Setiap lapisan menambahkan perlindungannya sendiri:
- Lapisan 1 — Mesin keadaan atomik 8 langkah dengan rollback penuh jika terjadi kegagalan apa pun
- Lapisan 2 — Validasi peran (sudah Hub? ditolak), validasi keadaan (transisi sedang berlangsung? ditolak), timeout 60 detik
- Lapisan 3 — Dialog
confirm()untuk mencegah sentuhan tidak sengaja, animasi berdenyut biru untuk mencegah klik ganda, umpan balik toast berhasil/gagal
Tiga lapisan berarti: kompleksitas operasi ditentukan oleh pengguna, bukan dipaksakan oleh sistem. Administrator sistem dapat SSH untuk kontrol terperinci. Perawat cukup menekan tombol.
Alur Kode QR — Dari Nol ke Promote
Setiap RPi dikirimkan dengan kartu kode QR berlaminasi, dipasang di samping perangkat. Kartu berisi dua kode:
┌─────────────────────────────────────────┐
│ DNO-HC02 Connection Card │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ WiFi QR │ │ MIRS QR │ │
│ │ │ │ │ │
│ │ Pindai │ │ Pindai │ │
│ │ untuk │ │ untuk │ │
│ │ WiFi │ │ buka │ │
│ └──────────┘ └──────────┘ │
│ │
│ WiFi: DNO-HC02 │
│ MIRS: http://10.0.0.1:8000 │
└─────────────────────────────────────────┘
Langkah 1 — Pindai kode QR WiFi. Kamera iPhone dan iPad secara native mendukung kode QR WiFi (format: WIFI:T:WPA;S:{SSID};P:{password};;). Memindai memicu pesan "Gabung Jaringan". Satu sentuhan dan perangkat terhubung ke hotspot RPi. Tanpa memasukkan SSID atau kata sandi secara manual.
Langkah 2 — Pindai kode QR MIRS atau ketik URL. Safari membuka PWA MIRS. Service Worker menyimpannya di cache segera — kunjungan berikutnya berfungsi secara offline.
Langkah 3 — Ketika Hub offline, banner merah muncul secara otomatis. PWA memeriksa status Hub setiap 30 detik. Setelah 3 kegagalan berturut-turut (90 detik), banner merah muncul di bagian atas layar:
Langkah 4 — Tekan "Promosikan ke Hub." Dialog konfirmasi muncul: "Apakah Anda yakin ingin mempromosikan node ini menjadi Hub?" Setelah konfirmasi, banner berubah biru dengan animasi berdenyut: "Mempromosikan ke Hub, mohon tunggu..."
Dalam 60 detik, script menyelesaikan 8 langkahnya. Jika berhasil, halaman dimuat ulang secara otomatis dengan toast hijau: "Promosi selesai! Peran: HUB | Epoch: N".
Tanpa SSH. Tanpa laptop. Tanpa perintah yang harus dihapal.
Deteksi Otomatis, Bukan Navigasi Manual
Perhatikan pilihan desain Lapisan 3: tombol tidak berada dalam menu untuk dicari pengguna. Sebaliknya, ketika Hub benar-benar offline, banner muncul dan bertanya: "Hub sedang down. Apakah Anda ingin mengambil alih?"
Ini disengaja.
Promote bukan operasi rutin. Ini operasi darurat. Anda tidak ingin seseorang menekannya karena penasaran — itu akan menciptakan Hub kedua (split-brain). Maka tombol hanya muncul ketika diperlukan: Hub benar-benar offline, node saat ini adalah Spoke, dan ada snapshot valid yang siap dimuat.
Bahkan dalam kondisi itu, perlindungan pertama adalah dialog confirm(). Yang kedua adalah mekanisme hub_epoch — jika seseorang secara tidak sengaja memicu split-brain, Hub dengan epoch lebih rendah akan secara otomatis menurunkan perannya saat kedua jaringan terhubung kembali.
Desain ini tidak membuat kesalahan menjadi mustahil. Desain ini membuat kesalahan memperbaiki dirinya sendiri.
Kapan Anda Masih Memerlukan SSH
Lapisan 3 mencakup 95% skenario lapangan. Namun beberapa kasus masih memerlukan SSH:
- Mode
--skip-network: Melewati pengaturan hostapd/dnsmasq/IP statis saat pengujian localhost. Tombol PWA tidak mendukung flag ini. - Mode
--dry-run: Melihat pratinjau apa yang akan dilakukan promote tanpa mengeksekusi. Berguna untuk memverifikasi ketersediaan snapshot. - Demote: Menurunkan Hub kembali menjadi Spoke. Ini operasi administrasi — tidak ditampilkan melalui banner otomatis (meskipun PWA Manajemen Stasiun menyediakan antarmuka manual).
- Diagnostik rollback: Ketika promote gagal, memeriksa log untuk menentukan penyebabnya.
SSH adalah cadangan, bukan jalur utama. Seperti kontrol penerbangan manual pada pesawat — Anda ingin mereka tersedia, tetapi merancang agar jarang dibutuhkan.
Bisakah iPhone / iPad Melakukan SSH?
Bisa. App Store memiliki Termius, Prompt, dan Blink Shell, semuanya klien SSH yang mumpuni.
Namun intinya adalah: Anda tidak membutuhkannya. Lapisan 3 hadir justru agar SSH menjadi opsional, bukan wajib.
Dalam insiden korban massal, Anda tidak akan meminta perawat untuk menginstal aplikasi SSH. Anda memberikan mereka kartu QR berlaminasi: pindai sekali untuk WiFi, pindai sekali untuk sistem, tekan tombol saat waktunya promote.
Inilah filosofi inti dari desain tiga lapis: membungkus kemampuan administrator sistem dalam antarmuka yang dapat dioperasikan oleh siapa pun.
Bacaan lanjutan: Cabut dan Pergi — Topologi Hub-Spoke, Promosi Peran, dan Failover Lima Menit · "Offline-First" Bukan "Toleran-Offline" · Uji Walkaway — Bisakah Sistem Anda Bertahan dari Pemutusan Koneksi?
