Buku Panduan Aplikasi Arsitektur Cloud

Panduan ini panduan desain terstruktur untuk aplikasi cloud yang skalabel, ulet, dan mudah diakses. Ini dirancang untuk membantu Anda membuat keputusan tentang arsitektur Anda, apa pun platform cloud yang Anda gunakan.

Manual ini disusun sebagai urutan langkah - memilih arsitektur → memilih teknologi untuk menghitung dan menyimpan data → merancang aplikasi Azure → memilih template → memeriksa arsitektur. Untuk masing-masing dari mereka, ada rekomendasi yang akan membantu Anda dalam mengembangkan arsitektur aplikasi.


Hari ini kami menerbitkan bagian dari bab pertama buku ini. Anda dapat mengunduh versi lengkapnya secara gratis di sini .



Daftar isi


  • Pilihan arsitektur - 1;
  • Pilihan teknologi untuk komputasi dan menyimpan data - 35;
  • Merancang aplikasi Azure: prinsip-prinsip desain - 60;
  • Merancang aplikasi Azure: indikator kualitas - 95;
  • Merancang aplikasi Azure: pola desain - 103;
  • Direktori Templat - 110;
  • Daftar Periksa Validasi Arsitektur - 263;
  • Kesimpulan - 291;
  • Arsitektur Referensi Azure - 292;

Pilihan arsitektur


Keputusan pertama yang perlu Anda buat saat merancang aplikasi cloud adalah memilih arsitektur. Pilihan arsitektur tergantung pada kompleksitas aplikasi, ruang lingkup, jenisnya (IaaS atau PaaS) dan tugas yang dimaksudkan. Penting juga untuk mempertimbangkan keterampilan tim pengembangan dan manajer proyek, serta ketersediaan arsitektur yang sudah jadi untuk aplikasi tersebut.

Pilihan arsitektur memberlakukan batasan tertentu pada struktur aplikasi, membatasi pilihan teknologi dan elemen aplikasi lainnya. Batasan ini dikaitkan dengan kelebihan dan kekurangan dari arsitektur yang dipilih.

Informasi di bagian ini akan membantu Anda menemukan keseimbangan di antara mereka ketika menerapkan arsitektur tertentu. Bagian ini mencantumkan sepuluh prinsip desain yang perlu diingat. Mengikuti prinsip-prinsip ini akan membantu Anda membuat aplikasi yang lebih skalabel, tangguh, dan mudah dikelola.

Kami telah mengidentifikasi serangkaian opsi arsitektur yang biasanya digunakan dalam aplikasi cloud. Bagian yang didedikasikan untuk masing-masing berisi:

  • deskripsi dan logika arsitektur;
  • rekomendasi tentang ruang lingkup arsitektur ini;
  • keuntungan, kerugian dan rekomendasi untuk digunakan;
  • Opsi penyebaran yang disarankan menggunakan layanan Azure yang sesuai.

Tinjauan Arsitektur


Bagian ini memberikan tinjauan singkat tentang opsi arsitektur yang telah kami identifikasi, serta rekomendasi umum untuk penggunaannya. Anda dapat menemukan informasi lebih rinci di bagian terkait yang tersedia melalui tautan.

Tingkat-N


Arsitektur N-tier paling umum digunakan dalam aplikasi perusahaan. Untuk mengelola dependensi, aplikasi dibagi menjadi beberapa lapisan, yang masing-masing bertanggung jawab atas fungsi logis tertentu, misalnya untuk penyajian data, logika bisnis, atau akses ke data. Sebuah layer dapat memanggil layer lain di bawah ini. Namun, pembagian seperti itu menjadi lapisan horisontal dapat menyebabkan kesulitan tambahan. Misalnya, mungkin sulit untuk melakukan perubahan pada satu bagian aplikasi tanpa mempengaruhi elemen lainnya. Oleh karena itu, memperbarui aplikasi seperti itu seringkali tidak mudah, dan pengembang harus menambahkan fitur baru lebih jarang.

Arsitektur N-tier adalah pilihan alami ketika mentransfer aplikasi yang sudah digunakan yang dibangun berdasarkan arsitektur tier. Oleh karena itu, arsitektur ini paling sering digunakan dalam solusi IaaS (infrastruktur sebagai layanan) atau dalam aplikasi yang menggabungkan IaaS dengan layanan terkelola.



Antarmuka Web - Antrian - Peran Pekerja


Untuk solusi PaaS, arsitektur web-interface-queue-work-role cocok. Dengan arsitektur ini, aplikasi memiliki antarmuka web yang memproses permintaan HTTP, dan peran kerja server yang bertanggung jawab untuk operasi yang membutuhkan waktu lama atau menuntut sumber daya komputasi. Antrian pesan asinkron digunakan untuk berkomunikasi antara antarmuka dan peran kerja server.

Arsitektur "antarmuka web - antrian - peran kerja" cocok untuk tugas yang relatif sederhana yang memerlukan sumber daya komputasi. Seperti arsitektur N-tier, model ini mudah dimengerti. Menggunakan layanan terkelola menyederhanakan penerapan dan pengoperasian. Tetapi ketika membuat aplikasi untuk area subjek yang kompleks, mungkin sulit untuk mengontrol dependensi. Antarmuka web dan peran kerja dapat dengan mudah diperluas ke komponen monolitik besar yang sulit untuk dipertahankan dan diperbarui. Seperti halnya arsitektur N-tier, model ini ditandai dengan tingkat pembaruan yang lebih rendah dan peluang peningkatan yang terbatas.



Layanan microser


Jika aplikasi ini dirancang untuk memecahkan masalah yang lebih kompleks, cobalah untuk mengimplementasikannya berdasarkan arsitektur layanan microsoft. Aplikasi semacam itu terdiri dari banyak layanan independen kecil. Setiap layanan bertanggung jawab atas fungsi bisnis yang terpisah. Layanan secara longgar digabungkan dan menggunakan kontrak API untuk berinteraksi.

Tim kecil pengembang dapat bekerja untuk menciptakan layanan terpisah. Layanan dapat digunakan tanpa koordinasi yang kompleks antar pengembang, sehingga mudah untuk memperbaruinya secara berkala. Arsitektur microservice lebih sulit untuk diimplementasikan dan dikelola daripada dua pendekatan sebelumnya. Ini membutuhkan budaya manajemen pembangunan yang matang. Tetapi jika semuanya diatur dengan benar, pendekatan ini membantu meningkatkan frekuensi rilis versi baru, mempercepat implementasi inovasi dan membuat arsitektur lebih toleran terhadap kesalahan.



Cqrs


Arsitektur CQRS (Command and Query Responsibility Segregation, distribusi tanggung jawab antara tim dan pertanyaan) memungkinkan Anda untuk memisahkan operasi baca dan tulis antara masing-masing model. Akibatnya, bagian dari sistem yang bertanggung jawab untuk mengubah data diisolasi dari bagian-bagian dari sistem yang bertanggung jawab untuk membaca data. Selain itu, operasi baca dapat dilakukan dalam tampilan terwujud yang secara fisik terpisah dari database yang sedang ditulis. Ini memungkinkan Anda untuk secara mandiri mengukur proses membaca dan menulis dan mengoptimalkan presentasi yang dibuat untuk eksekusi permintaan.

Model CQRS paling baik digunakan untuk subsistem arsitektur yang lebih besar. Secara umum, itu tidak boleh diterapkan ke seluruh aplikasi, karena ini tidak perlu mempersulit arsitekturnya. Ini bekerja dengan baik dalam sistem kolaborasi, di mana sejumlah besar pengguna secara bersamaan bekerja dengan data yang sama.



Arsitektur Berbasis Acara


Arsitektur berbasis acara menggunakan model berlangganan-penerbitan di mana pemasok mempublikasikan acara dan konsumen berlangganan. Pemasok tidak tergantung pada konsumen, dan konsumen tidak tergantung satu sama lain.

Arsitektur berbasis peristiwa sangat cocok untuk aplikasi yang perlu menerima dan memproses data dalam jumlah besar dengan latensi rendah, seperti Internet of Things. Selain itu, arsitektur seperti itu berfungsi dengan baik jika subsistem yang berbeda harus memproses data peristiwa yang sama secara berbeda.



Data besar, komputasi besar


Data besar dan komputasi besar adalah opsi arsitektur khusus yang digunakan untuk menyelesaikan masalah khusus. Saat menggunakan arsitektur big data, kumpulan data besar dibagi menjadi beberapa fragmen, yang kemudian diproses secara paralel untuk keperluan analisis dan pelaporan. Komputasi besar juga disebut komputasi kinerja tinggi (HPC). Teknologi ini memungkinkan Anda untuk mendistribusikan komputasi di antara beberapa (ribuan) inti prosesor. Arsitektur ini dapat digunakan untuk simulasi, render 3D dan tugas serupa lainnya.

Pilihan arsitektur sebagai batasan


Arsitektur bertindak sebagai kendala dalam merancang solusi, khususnya, ia menentukan elemen mana yang dapat digunakan dan koneksi mana di antara mereka yang mungkin. Batasan mendefinisikan "bentuk" dari arsitektur dan memungkinkan Anda untuk membuat pilihan dari serangkaian opsi yang lebih sempit. Jika batasan arsitektur yang dipilih terpenuhi, solusinya akan memiliki sifat karakteristik arsitektur ini.

Sebagai contoh, layanan microsoft ditandai oleh pembatasan berikut:

  • setiap layanan bertanggung jawab atas fungsi yang terpisah;
  • layanan tidak tergantung satu sama lain;
  • Data hanya tersedia untuk layanan yang bertanggung jawab untuknya. Layanan tidak bertukar data.

Mengikuti batasan-batasan ini mengarah pada penciptaan sistem di mana layanan dapat digunakan secara independen satu sama lain, kesalahan diisolasi, pembaruan sering dimungkinkan, dan teknologi baru mudah ditambahkan ke aplikasi.

Sebelum memilih arsitektur, pastikan Anda memahami prinsip-prinsip dasar dan batasan terkait dengan baik. Jika tidak, Anda bisa mendapatkan solusi yang sesuai dengan model arsitektur yang dipilih, tetapi tidak sepenuhnya mengungkapkan potensi model ini. Akal sehat juga penting. Terkadang lebih bijaksana untuk meninggalkan satu atau lain keterbatasan daripada berusaha untuk arsitektur yang bersih.

Tabel berikut ini menunjukkan bagaimana manajemen ketergantungan diterapkan di masing-masing arsitekturnya, dan untuk tugas-tugas apa arsitektur ini atau itu paling cocok.



Analisis kelebihan dan kekurangan


Keterbatasan menimbulkan kesulitan tambahan, jadi penting untuk memahami apa yang harus Anda korbankan ketika memilih satu atau beberapa opsi arsitektur, dan untuk dapat menjawab pertanyaan apakah kelebihan dari opsi yang dipilih lebih besar daripada kerugiannya untuk tugas tertentu dalam konteks tertentu.

Di bawah ini adalah beberapa kelemahan yang perlu dipertimbangkan ketika memilih arsitektur:

  • Kompleksitas Apakah penggunaan arsitektur kompleks dibenarkan untuk tugas Anda? Dan sebaliknya, apakah arsitektur yang terlalu sederhana dipilih untuk tugas yang kompleks? Dalam hal ini, Anda berisiko mendapatkan sistem tanpa struktur yang jelas, karena arsitektur yang digunakan tidak memungkinkan Anda untuk mengelola dependensi dengan benar.
  • Pesan tidak sinkron dan akhirnya konsistensi. Pesan asinkron membantu memisahkan layanan dan meningkatkan keandalan (berkat kemampuan untuk mengirim ulang pesan) dan skalabilitas. Namun, itu menciptakan kesulitan tertentu, seperti semantik hanya satu transmisi dan masalah koherensi dalam jangka panjang.
  • Interaksi antar layanan. Jika Anda membagi aplikasi menjadi layanan yang terpisah, ada risiko bahwa pertukaran data antara layanan tersebut akan memakan waktu terlalu lama atau menyebabkan kemacetan jaringan (misalnya, ketika menggunakan layanan mikro).
  • Kelola. Seberapa sulitkah mengelola aplikasi, memantau pekerjaannya, menyebarkan pembaruan, dan melakukan tugas-tugas lain?

Arsitektur N-tier


Dalam arsitektur N-tier, aplikasi dibagi menjadi lapisan logis dan lapisan fisik.



Lapisan adalah mekanisme untuk berbagi tanggung jawab dan mengelola dependensi. Setiap lapisan memiliki bidang tanggung jawab masing-masing. Lapisan tingkat yang lebih tinggi menggunakan layanan lapisan tingkat yang lebih rendah, tetapi tidak sebaliknya.

Level-levelnya terpisah secara fisik dan bekerja pada komputer yang berbeda. Satu tingkat dapat mengakses yang lain secara langsung atau menggunakan pesan asinkron (antrian pesan). Meskipun setiap lapisan harus ditempatkan pada levelnya sendiri, ini tidak perlu. Anda dapat menempatkan beberapa layer pada satu level. Pemisahan fisik level membuat solusi tidak hanya lebih scalable dan toleran terhadap kesalahan, tetapi juga lebih lambat, karena jaringan sering digunakan untuk interaksi. Aplikasi tiga tingkat tradisional terdiri dari tingkat presentasi, tingkat menengah, dan tingkat basis data. Tingkat menengah adalah opsional. Aplikasi yang lebih kompleks dapat terdiri dari lebih dari tiga level. Diagram di atas menunjukkan aplikasi dengan dua tingkat menengah yang bertanggung jawab untuk berbagai bidang fungsional.

Aplikasi N-tier mungkin memiliki arsitektur lapisan tertutup atau arsitektur lapisan terbuka.

  • Dalam arsitektur tertutup, lapisan sewenang-wenang hanya dapat mengakses lapisan bawah terdekat.
  • Dalam arsitektur terbuka, lapisan sewenang-wenang dapat merujuk ke lapisan yang lebih rendah.

Arsitektur lapisan tertutup membatasi ketergantungan antar lapisan. Namun, penggunaannya dapat secara berlebihan meningkatkan lalu lintas jaringan jika lapisan tertentu hanya meneruskan permintaan ke lapisan berikutnya.

Aplikasi Arsitektur


Arsitektur N-tier biasanya digunakan dalam aplikasi IaaS, di mana setiap tier berjalan pada set mesin virtual yang terpisah. Namun, aplikasi N-tier tidak harus menjadi aplikasi IaaS murni. Seringkali nyaman untuk menggunakan layanan terkelola untuk beberapa komponen solusi, terutama untuk caching, pengiriman pesan, dan penyimpanan data.

Arsitektur N-tier direkomendasikan untuk digunakan dalam kasus berikut:

  • aplikasi web sederhana;
  • Porting aplikasi lokal ke Azure dengan refactoring minimal
  • penyebaran aplikasi lokal dan cloud yang konsisten.

Arsitektur N-tier adalah umum di antara aplikasi lokal biasa, sehingga sangat cocok untuk porting aplikasi yang sudah ada ke Azure.

Manfaatnya


  • Kemampuan untuk mentransfer aplikasi antara penyebaran di tempat dan cloud, serta antara platform cloud.
  • Kurang pelatihan untuk sebagian besar pengembang.
  • Perpanjangan alami dari model aplikasi tradisional.
  • Dukungan untuk lingkungan heterogen (Windows / Linux).

Kekurangan


  • Sangat mudah untuk mendapatkan aplikasi di mana tingkat menengah hanya melakukan operasi CRUD dalam database, meningkatkan waktu pemrosesan permintaan dan tidak membawa manfaat apa pun.
  • Arsitektur monolitik tidak akan memungkinkan pengembangan komponen individu oleh tim pengembangan independen.
  • Mengelola aplikasi IaaS lebih memakan waktu daripada aplikasi hanya layanan yang dikelola.
  • Sulit untuk mengelola keamanan jaringan dalam sistem besar.

Rekomendasi


  • Gunakan penskalaan otomatis pada beban variabel. Lihat Praktik Terbaik untuk Penskalaan Otomatis.
  • Gunakan pesan tidak sinkron untuk memisahkan level satu sama lain.
  • Tembolok data semi-statis. Lihat Pertimbangan Caching.
  • Pastikan ketersediaan tinggi tingkat database dengan solusi seperti Grup Ketersediaan Selalu di SQL Server.
  • Instal firewall aplikasi web (WAF) antara antarmuka dan Internet.
  • Tempatkan setiap level di subnet Anda sendiri; gunakan subnet sebagai batas keamanan.
  • Batasi akses ke tingkat data dengan hanya mengizinkan kueri dari tingkat menengah.

Arsitektur mesin virtual N-tier


Bagian ini memberikan pedoman untuk membangun arsitektur N-tier menggunakan mesin virtual.



Bagian ini memberikan pedoman untuk membangun arsitektur N-tier menggunakan mesin virtual. Setiap tingkatan terdiri dari dua atau lebih mesin virtual yang dihosting dalam set ketersediaan atau dalam set mesin virtual yang dapat diskalakan. Penggunaan beberapa mesin virtual memberikan toleransi kesalahan jika terjadi kegagalan salah satunya. Untuk mendistribusikan permintaan antara mesin virtual pada level yang sama, subsistem load balancing digunakan. Level dapat ditingkatkan secara horizontal, menambahkan mesin virtual baru ke pool.

Setiap level juga ditempatkan di dalam subnetnya sendiri. Ini berarti bahwa alamat IP internal mereka berada dalam kisaran yang sama. Ini membuatnya mudah untuk menerapkan aturan Grup Keamanan Jaringan (NSG) dan tabel routing ke masing-masing layer.

Tingkat web tier dan tingkat bisnis tidak dipantau. Mesin virtual apa pun dapat menangani permintaan apa pun untuk level ini. Lapisan data harus terdiri dari basis data yang direplikasi. Untuk Windows, kami sarankan menggunakan SQL Server dengan Grup Selalu Aktif untuk ketersediaan tinggi. Untuk Linux, Anda harus memilih database yang mendukung replikasi, seperti Apache Cassandra.

Akses ke setiap level dibatasi oleh grup keamanan jaringan (NSGs). Misalnya, akses ke tingkat basis data hanya diizinkan untuk tingkat bisnis

Fitur Tambahan


  • Arsitektur N-tier tidak harus terdiri dari tiga tingkatan. Aplikasi yang lebih kompleks cenderung menggunakan lebih banyak level. Dalam hal ini, gunakan perutean melalui lapisan 7 untuk mengarahkan permintaan ke tingkat tertentu.
  • Level membatasi keputusan mengenai skalabilitas, keandalan, dan keamanan. Disarankan agar Anda menggunakan level yang berbeda untuk layanan dengan persyaratan berbeda untuk karakteristik ini.
  • Gunakan penskalaan otomatis menggunakan set mesin virtual yang dapat diskalakan.
  • Temukan elemen dalam arsitektur Anda yang dapat Anda terapkan dengan layanan terkelola tanpa refactoring utama. Secara khusus, perhatikan caching, perpesanan, penyimpanan, dan basis data.
  • Untuk meningkatkan keamanan, letakkan aplikasi di belakang jaringan perimeter. Jaringan perimeter mencakup komponen jaringan virtual yang menyediakan keamanan, seperti firewall dan inspektur paket. Untuk informasi lebih lanjut, lihat Arsitektur Jaringan Referensi Perimeter.
  • Untuk ketersediaan tinggi, tempatkan dua atau lebih komponen jaringan virtual dalam kumpulan ketersediaan dan tambahkan load balancer untuk mendistribusikan permintaan Internet di antara mereka. Untuk informasi lebih lanjut, lihat Menyebarkan Komponen Jaringan Virtual untuk Ketersediaan Tinggi.
  • Jangan izinkan akses langsung ke mesin virtual yang menjalankan kode aplikasi melalui protokol RDP dan SSH. Sebagai gantinya, operator harus memasukkan node benteng. Ini adalah mesin virtual yang terletak di jaringan yang digunakan oleh administrator untuk terhubung ke mesin virtual lain. Pada bastion host, aturan NSG dikonfigurasikan untuk memungkinkan akses melalui RDP dan SSH hanya dari alamat IP publik yang disetujui.
  • Anda dapat memperluas jaringan virtual Azure ke jaringan lokal menggunakan jaringan-ke-jaringan tipe virtual (VPN) atau Azure ExpressRoute. Untuk informasi lebih lanjut, lihat Arsitektur Referensi Jaringan Hibrid.
  • Jika organisasi Anda menggunakan Active Directory untuk manajemen identitas, Anda dapat memperluas lingkungan Active Directory Anda ke jaringan virtual Azure. Untuk informasi lebih lanjut, lihat Arsitektur Referensi Manajemen Identitas.
  • Jika tingkat ketersediaan yang lebih tinggi diperlukan daripada yang disyaratkan oleh Perjanjian Tingkat Layanan Mesin Virtual Azure, gandakan aplikasi antara kedua wilayah dan konfigurasikan Manajer Lalu Lintas Azure untuk failover. Untuk informasi lebih lanjut, lihat Memulai mesin virtual Windows di beberapa wilayah dan Memulai mesin virtual Linux di beberapa wilayah.



Anda dapat mengunduh versi lengkap buku ini secara gratis dan mempelajarinya di tautan di bawah ini.

Unduh

Source: https://habr.com/ru/post/id423179/


All Articles