Kembalikan monolit saya

Nampaknya kemuncak gembar-gembur untuk perkhidmatan mikro berada di belakang kami. Kami tidak lagi membaca siaran beberapa kali seminggu "Bagaimana saya mengalihkan monolit saya kepada 150 perkhidmatan." Sekarang saya mendengar lebih banyak pemikiran akal: "Saya tidak membenci monolit, saya hanya mementingkan kecekapan." Kami juga memerhatikan beberapa penghijrahan daripada perkhidmatan mikro kembali kepada monolit. Apabila beralih daripada satu aplikasi besar kepada berbilang perkhidmatan yang lebih kecil, anda perlu menyelesaikan beberapa masalah baharu. Marilah kita menyenaraikannya secara ringkas yang mungkin.

Tetapan: daripada kimia asas kepada mekanik kuantum

Menyediakan pangkalan data asas dan aplikasi dengan proses latar belakang adalah proses yang agak mudah. Saya menerbitkan readme di Github - dan selalunya dalam masa sejam, paling lama beberapa jam, semuanya berfungsi dan saya memulakan projek baharu. Menambah dan menjalankan kod, sekurang-kurangnya untuk persekitaran awal, dilakukan pada hari pertama. Tetapi jika kita menceburi perkhidmatan mikro, masa pelancaran awal akan meningkat. Ya, kini kami mempunyai Docker dengan orkestrasi dan sekumpulan mesin K8, tetapi untuk pengaturcara baru semua ini adalah lebih rumit. Bagi kebanyakan junior, ini adalah beban yang benar-benar merupakan komplikasi yang tidak perlu.

Sistem ini tidak mudah difahami

Jom fokus pada junior kita sekejap. Dengan aplikasi monolitik, jika ralat berlaku, adalah mudah untuk menjejakinya dan terus pergi ke penyahpepijatan. Kini kami mempunyai perkhidmatan yang bercakap dengan perkhidmatan lain yang sedang beratur sesuatu pada bas mesej yang sedang memproses perkhidmatan lainβ€”dan kemudian berlaku ralat. Kami perlu mengumpulkan semua bahagian ini untuk akhirnya mengetahui bahawa Perkhidmatan A menjalankan versi 11, dan Perkhidmatan E sudah menunggu untuk versi 12. Ini sangat berbeza daripada log disatukan standard saya: perlu menggunakan terminal/debugger interaktif untuk berjalan melalui proses langkah demi langkah. Penyahpepijatan dan pemahaman sememangnya menjadi lebih sukar.

Jika ia tidak boleh dinyahpepijat, mungkin kami akan mengujinya

Penyepaduan berterusan dan pembangunan berterusan kini menjadi perkara biasa. Kebanyakan apl baharu yang saya lihat membuat dan menjalankan ujian secara automatik dengan setiap keluaran baharu dan memerlukan ujian diambil dan disemak sebelum pendaftaran. Ini adalah proses hebat yang tidak boleh ditinggalkan dan telah menjadi anjakan besar bagi banyak syarikat. Tetapi sekarang, untuk benar-benar menguji perkhidmatan, saya perlu mengeluarkan versi penuh aplikasi saya yang berfungsi. Ingat jurutera baharu itu dengan kluster K8 150 perkhidmatan? Nah, sekarang kami akan mengajar sistem CI kami cara mengangkat semua sistem ini untuk mengesahkan bahawa semuanya benar-benar berfungsi. Ini mungkin terlalu banyak usaha, jadi kami hanya akan menguji setiap bahagian secara berasingan: Saya yakin spesifikasi kami cukup baik, API bersih dan kegagalan perkhidmatan diasingkan dan tidak akan menjejaskan orang lain.

Semua kompromi mempunyai sebab yang kukuh. Betul ke?

Terdapat banyak sebab untuk beralih ke perkhidmatan mikro. Saya telah melihat ini dilakukan untuk fleksibiliti yang lebih besar, untuk skala pasukan, untuk prestasi, untuk memberikan kemampanan yang lebih baik. Tetapi pada hakikatnya, kami telah melabur selama beberapa dekad dalam alatan dan amalan untuk membangunkan monolit yang terus berkembang. Saya bekerja dengan profesional dalam teknologi yang berbeza. Kami biasanya bercakap tentang penskalaan kerana mereka menghadapi had satu nod pangkalan data Postgres. Kebanyakan perbualan adalah tentang penskalaan pangkalan data.

Tetapi saya sentiasa berminat untuk belajar tentang seni bina mereka. Apakah peringkat peralihan kepada perkhidmatan mikro mereka berada? Menarik untuk melihat lebih ramai jurutera berkata mereka gembira dengan aplikasi monolitik mereka. Ramai orang akan mendapat manfaat daripada perkhidmatan mikro, dan faedahnya akan mengatasi masalah dalam laluan migrasi. Tetapi secara peribadi, sila berikan saya aplikasi monolitik saya, tempat di pantai - dan saya benar-benar gembira.

Sumber: www.habr.com

Tambah komen