Monzo menggunakan platform berbasis mikros layanan yang luas, terdiri dari lebih dari 2800 layanan. Mereka sangat bergantung pada perencanaan dan otomatisasi guna mendorong migrasi kode secara besar-besaran. Untuk mendukung rollout yang bertahap dan rollback yang cepat jika ada masalah, Monzo memanfaatkan layanan konfigurasi. Menariknya, tim pusat yang mengelola migrasi, bukan tim pemilik layanan, menjaga agar proses ini tetap konsisten dan cepat.
Dengan banyaknya mikroservis yang dimiliki, Monzo menghadapi tantangan tersendiri ketika harus melakukan perubahan besar, seperti memperbarui versi pustaka agar tetap konsisten dan mutakhir. Untuk mengatasi hal ini, mereka memilih untuk memusatkan proses migrasi kode agar lebih cepat dan lebih terkoordinasi.
Tim yang bertanggung jawab atas migrasi menetapkan beberapa prinsip, seperti membuat migrasi transparan bagi pemilik layanan, menghindari downtime, melakukan rollout secara bertahap untuk mengurangi dampak, dan menerapkan aturan 80/20 untuk otomatisasi agar tidak terjebak dalam kasus-kasus yang tidak biasa. Mereka juga memilih untuk menyederhanakan tumpukan pengembangan, memilih Go sebagai bahasa pemrograman dan mengadopsi monorepo untuk menyimpan semua kode sumber.
Menggunakan Pembungkus Pustaka untuk Beralih Antara Pustaka (Sumber: Blog Teknik Monzo)
Will Sewell, seorang insinyur platform di Monzo, membagikan pengalaman mereka saat meluncurkan pustaka baru, dengan mengambil contoh migrasi dari OpenTracing ke OpenTelemetry. Sebelum melakukan perubahan besar, tim migrasi biasanya akan mempresentasikan usulan di Slack atau dalam pertemuan tinjauan arsitektur untuk mendapatkan masukan dari tim teknik lainnya.
Mereka menggunakan kombinasi pembaruan kode otomatis dengan alat pengganti kode khusus bahasa dan pembaruan manual untuk kasus yang lebih kompleks. Ketika beralih antara pustaka eksternal, tim memastikan bahwa pembungkusnya diterapkan pada semua layanan terlebih dahulu. Setelah itu, mereka menggunakan layanan konfigurasi untuk beralih secara bertahap antara implementasi untuk kelompok pengguna tertentu atau persentase permintaan.