Pilihan gaya seni bina (bahagian 2)

Hello, Habr. Hari ini saya meneruskan siri penerbitan yang saya tulis khusus untuk permulaan aliran baru kursus. "Arkitek Perisian".

Pengenalan

Pilihan gaya seni bina adalah salah satu keputusan teknikal asas apabila membina sistem maklumat. Dalam siri artikel ini, saya mencadangkan untuk menganalisis gaya seni bina yang paling popular untuk aplikasi bangunan dan menjawab persoalan bilakah gaya seni bina yang paling disukai. Dalam proses pembentangan, saya akan cuba melukis rantaian logik yang menerangkan perkembangan gaya seni bina daripada monolit kepada perkhidmatan mikro.

Π’ kali terakhir kami menangani monolit dan membuat kesimpulan bahawa monolit mempunyai beberapa masalah: saiz, ketersambungan, penggunaan, skalabiliti, kebolehpercayaan dan ketegaran.

Kali ini saya mencadangkan untuk bercakap tentang kemungkinan mengatur sistem sebagai satu set modul/perpustakaan (seni bina berorientasikan komponen) atau perkhidmatan (seni bina berorientasikan perkhidmatan).

Seni bina berorientasikan komponen

Seni bina berorientasikan komponen melibatkan pelaksanaan sistem sebagai satu set komponen yang boleh digunakan dalam kedua-dua projek semasa dan akan datang. Apabila memecahkan sistem kepada komponen, perkara berikut diambil kira: kebolehgunaan semula, kebolehgantiannya, kebebasan konteks, kebolehlanjutan, pengkapsulan dan kebebasan.

Dengan penggunaan komponen yang betul, masalah "bola besar kotoran" (saiz besar + gandingan tinggi) diselesaikan, dan komponen itu sendiri boleh menjadi kedua-dua unit pemasangan (modul, perpustakaan) dan unit penggunaan (perkhidmatan). Unit penyebaran tidak selalu dipetakan kepada proses yang sedang berjalan: contohnya, aplikasi web dan pangkalan data digunakan bersama.

Selalunya, monolit dibangunkan sebagai satu set modul. Pendekatan ini membawa kepada pembangunan bebas, tetapi masalah penskalaan dan penggunaan bebas, toleransi kesalahan dan kebebasan daripada timbunan teknologi keseluruhan kekal. Itulah sebabnya modul ini merupakan komponen separa bebas.

Masalah terbesar dengan monolit sedemikian ialah pembahagian ke dalam modul adalah logik semata-mata dan boleh dilanggar dengan mudah oleh pemaju. Modul teras mungkin muncul, yang secara beransur-ansur bertukar menjadi tempat pembuangan sampah, graf kebergantungan antara modul mungkin berkembang, dan sebagainya. Untuk mengelakkan masalah sedemikian, pembangunan harus dijalankan sama ada oleh pasukan yang sangat matang, atau di bawah bimbingan "arkitek" yang terlibat dalam semakan kod sepenuh masa dan mengalahkan tangan pembangun yang melanggar struktur logik.

Monolit "ideal" ialah satu set modul yang dipisahkan secara logik, setiap satunya melihat ke dalam pangkalan datanya sendiri.

Seni bina berorientasikan perkhidmatan

Jika sistem sepatutnya disusun dalam bentuk satu set perkhidmatan, maka kita bercakap tentang seni bina berorientasikan perkhidmatan. Prinsipnya ialah kebolehoperasian aplikasi tertumpu pengguna, penggunaan semula perkhidmatan perniagaan, kebebasan tindanan teknologi dan autonomi (evolusi bebas, kebolehskalaan dan penggunaan).

Seni bina berorientasikan perkhidmatan (SOA = seni bina berorientasikan perkhidmatan) menyelesaikan semua masalah monolit yang dikenal pasti: hanya satu perkhidmatan terjejas apabila perubahan berlaku dan API yang jelas menyokong pengkapsulan komponen yang baik.

Tetapi tidak semuanya begitu lancar: SOA mencipta masalah baharu. Panggilan jauh lebih mahal daripada panggilan tempatan, dan mengagihkan semula tanggungjawab antara komponen telah menjadi jauh lebih mahal.

Dengan cara ini, kemungkinan penggunaan bebas adalah ciri yang sangat penting dalam perkhidmatan. Jika perkhidmatan mesti digunakan bersama atau, lebih-lebih lagi, dalam urutan tertentu, maka sistem itu tidak boleh dianggap berorientasikan perkhidmatan. Dalam kes ini, mereka bercakap tentang monolit yang diedarkan (dianggap sebagai anti-corak bukan sahaja dari sudut pandangan SOA, tetapi juga dari sudut pandangan seni bina perkhidmatan mikro).

Seni bina berorientasikan perkhidmatan disokong dengan baik oleh komuniti seni bina dan vendor. Ini membayangkan kehadiran banyak kursus dan pensijilan, corak yang dibangunkan dengan baik. Yang terakhir termasuk, sebagai contoh, bas perkhidmatan perusahaan yang terkenal (ESB = bas perkhidmatan perusahaan). Pada masa yang sama, ESB adalah bagasi daripada vendor; ia tidak semestinya perlu digunakan dalam SOA.

Populariti seni bina berorientasikan perkhidmatan memuncak sekitar tahun 2008, selepas itu ia mula merosot, yang menjadi lebih dramatik dengan ketara selepas kemunculan perkhidmatan mikro (~2015).

Kesimpulan

Selepas kita membincangkan kemungkinan untuk mengatur sistem maklumat dalam bentuk perkhidmatan dan modul, saya mencadangkan untuk akhirnya beralih kepada prinsip seni bina perkhidmatan mikro dan memberi perhatian khusus kepada perbezaan antara seni bina perkhidmatan mikro dan seni bina berorientasikan perkhidmatan dalam bahagian seterusnya.

Pilihan gaya seni bina (bahagian 2)

Sumber: www.habr.com

Tambah komen