Saat memulai dengan aplikasi monolit lama, Anda harus menemukan bagian yang dapat dikurangi dan dipindahkan ke microservice terpisah. Sering kali, aplikasi monolit yang terstruktur dengan baik akan memiliki pembagian yang sangat alami, dan class layanan sudah berfungsi sebagai antarmuka ke lapisan penyimpanan data dan logika bisnis. Class tersebut merupakan tempat yang ideal untuk menghubungkan panggilan klien ke microservice.
Memisahkan fungsi dalam aplikasi monolit
Anda dapat melakukan beberapa pendekatan untuk memisahkan aplikasi:
- Cari logika bisnis dalam aplikasi Anda yang dapat dipisahkan.
- Temukan kode yang terisolasi secara alami, misalnya dengan menggunakan alat analisis kode statis untuk mengidentifikasi bagian.
- Periksa logika aplikasi yang mungkin dapat Anda manfaatkan dari setelan konfigurasi penskalaan atau persyaratan memori yang berbeda dengan bagian lain aplikasi Anda. Hal ini dapat menghemat biaya, yang mungkin menghasilkan pemanfaatan resource yang lebih baik.
Anda mungkin perlu memfaktorkan ulang kode untuk menghapus dependensi yang tidak wajar. Sebaiknya lakukan pemfaktoran ulang dalam kode lama dan men-deploy-nya ke produksi sebelum mencoba memisahkan aplikasi menjadi layanan yang terpisah.
Area umum untuk microservice mencakup hal berikut:
- Informasi pengguna atau akun
- Pengelolaan sesi dan otorisasi
- Setelan preferensi atau konfigurasi
- Layanan komunikasi dan notifikasi
- Foto dan media, terutama metadata
- Worker task queue
Langkah-Langkah untuk Memigrasikan Aplikasi
Setelah serangkaian class diidentifikasi sebagai kandidat untuk menjadi microservice, langkah-langkah selanjutnya meliputi:
- Membiarkan kode yang ada diterapkan dan beroperasi dalam aplikasi lama untuk memfasilitasi rollback.
- Membuat repositori kode baru, atau setidaknya sub-direktori di repositori yang ada.
- Menyalin class ke lokasi baru.
- Menulis lapisan tampilan yang menyediakan hook API HTTP dan memformat dokumen respons dengan cara yang benar.
- Merumuskan kode baru sebagai aplikasi terpisah (membuat
app.yaml
). - Men-deploy microservice baru Anda sebagai layanan atau project terpisah.
- Menguji kode untuk memastikan kode berfungsi dengan benar.
- Memigrasikan data dari aplikasi lama ke microservice baru. Lihat di bawah untuk melihat diskusi.
- Mengubah aplikasi lama yang sudah ada untuk menggunakan aplikasi microservice baru.
- Men-deploy aplikasi lama yang diubah
- Memverifikasi bahwa semuanya berfungsi seperti yang diharapkan dan Anda tidak perlu melakukan roll back ke aplikasi lama.
- Menghapus kode yang mati dari aplikasi lama.
Memigrasikan data pada aplikasi aktif
Migrasi data pada aplikasi aktif dapat menjadi rumit dan sangat bergantung pada situasi Anda. Sering kali, untuk memfasilitasi roll-forward dan rollback, Anda perlu menulis kode yang mengisi entity Cloud Datastore lama dan baru, kemungkinan dengan menggunakan API sementara pada microservice, lalu menulis kode yang memigrasikan set data yang ada, misalnya sebagai MapReduce. Proses ini biasanya akan melibatkan sejumlah kode sementara dan data redundan. Bergantung pada detail situasi Anda, Anda mungkin juga perlu menjalankan migrasi data pengejaran setelah rilis. Berhati-hatilah agar tidak menimpa data yang lebih baru dengan data yang lebih lama.
Meskipun tampak rumit, hal ini umum terjadi serta penting untuk memungkinkan roll forward dan roll back jika migrasi sistem ke microservice baru tidak berhasil. Anda dapat menghapus kode sementara dan menghapus data dari lokasi penyimpanan lama hanya setelah Anda memastikan bahwa semuanya telah dimigrasikan dengan benar dan semuanya beroperasi seperti yang diharapkan. Pastikan untuk membuat cadangan selama proses berlangsung.
Langkah selanjutnya
- Dapatkan ringkasan arsitektur microservice di App Engine.
- Pahami cara membuat dan menamai lingkungan pengembangan, pengujian, uji mutu, staging, dan produksi dengan microservice di App Engine.
- Pelajari praktik terbaik untuk mendesain API agar dapat berkomunikasi antar-microservice.
- Pelajari praktik terbaik untuk performa microservice.