Salam untuk semua pembaca Habr! Nama saya Igor Rybakov dan saya direktur teknis perusahaan IT Kazakhstan DAR. Hari ini saya akan berbagi dengan Anda pemahaman dan penggunaan prinsip-prinsip komputasi paralel dalam sistem informasi modern. Untuk memahami ini lebih dalam, saya ingin memberikan argumen yang mendukung studi dan aplikasi praktis dari konsep komputasi paralel dan terdistribusi dalam pengembangan sistem informasi modern.
Komputasi paralel atau apa yang dilakukan pendiri Intel
Pertama, sedikit sejarah. Pada tahun 1965, Gordon Moore, salah satu pendiri Intel, menemukan sebuah pola: penampilan model-model microcircuit baru diamati sekitar setahun setelah pendahulunya, sementara jumlah transistor di dalamnya hampir dua kali lipat setiap kali. Ternyata jumlah transistor yang ditempatkan pada chip sirkuit terintegrasi bertambah dua kali lipat setiap 24 bulan. Pengamatan ini kemudian disebut hukum Moore. Pendiri Intel meramalkan bahwa jumlah elemen dalam chip akan meningkat dari 2 ^ 6 (sekitar 60) pada tahun 1965 menjadi 2 ^ 16 (65 ribu) pada tahun 1975 .
Sekarang, untuk dapat mempraktikkan kekuatan komputasi tambahan ini yang diprediksi Moore, menjadi perlu untuk menggunakan komputasi paralel. Selama beberapa dekade, produsen prosesor terus meningkatkan kecepatan jam dan paralelisme pada tingkat instruksi, sehingga pada prosesor baru aplikasi single-threaded lama berjalan lebih cepat tanpa ada perubahan dalam kode program.
Sejak sekitar pertengahan 2000-an, produsen prosesor mulai memilih arsitektur multi-core, tetapi untuk mendapatkan manfaat penuh dari peningkatan kinerja prosesor pusat, program harus ditulis ulang dengan cara yang tepat. Di sini muncul masalah, karena menurut hukum Amdahl , tidak setiap algoritma dapat diparalelkan, sehingga menentukan batas mendasar pada efisiensi penyelesaian masalah komputasi pada superkomputer.
Untuk mengatasi batas ini, pendekatan komputasi terdistribusi digunakan. Ini adalah cara untuk memecahkan masalah komputasi padat karya menggunakan beberapa komputer, yang paling sering digabungkan ke dalam sistem komputasi paralel. Perhitungan berurutan dalam sistem informasi terdistribusi dilakukan dengan mempertimbangkan solusi simultan dari banyak masalah komputasi. Fitur dari sistem komputasi multiprosesor terdistribusi, berbeda dengan superkomputer lokal, adalah kemungkinan peningkatan kinerja tanpa batas karena penskalaan .
Sekitar pertengahan 2005, komputer secara masif dilengkapi dengan prosesor multi-core, yang memungkinkan komputasi paralel. Dan teknologi jaringan modern memungkinkan Anda untuk menggabungkan ratusan dan ribuan komputer. Yang menyebabkan munculnya apa yang disebut "komputasi awan".
Penggunaan komputasi paralel
Sistem informasi saat ini, seperti e-commerce, sangat membutuhkan penyediaan layanan berkualitas kepada pelanggan mereka. Perusahaan bersaing, menciptakan layanan dan produk informasi yang baru. Layanan harus dirancang untuk beban tinggi dan toleransi kesalahan yang tinggi, sebagai pengguna layanan, bukan satu kantor, bukan satu negara, tetapi seluruh dunia.
Pada saat yang sama, penting untuk menjaga kelayakan ekonomi proyek dan tidak menghabiskan dana yang tidak perlu pada peralatan server yang mahal jika perangkat lunak lama yang hanya menggunakan sebagian dari daya komputasi akan bekerja padanya.
Pengembang sistem aplikasi menghadapi masalah baru - kebutuhan untuk menulis ulang sistem informasi untuk memenuhi persyaratan bisnis modern dan kebutuhan untuk lebih memanfaatkan sumber daya server untuk mengurangi total biaya kepemilikan. Tugas-tugas yang perlu ditangani oleh sistem informasi modern beragam.
Mulai dari pembelajaran mesin dan analitik data besar, untuk memastikan operasi yang stabil dari fungsionalitas sistem dasar yang ada selama periode puncak. Misalnya, di sini Anda dapat mengutip penjualan massal di toko online. Semua tugas ini dapat diselesaikan menggunakan kombinasi komputasi paralel dan terdistribusi, misalnya, mengimplementasikan arsitektur layanan mikro.
Kontrol Kualitas Layanan
Untuk mengukur kualitas layanan aktual untuk klien, konsep perjanjian tingkat layanan (SLA) digunakan, yaitu, beberapa metrik statistik kinerja sistem.
Misalnya, pengembang dapat mengatur sendiri tugas yang 95% dari semua permintaan pengguna dilayani dengan waktu respons tidak melebihi 200 ms. Ngomong-ngomong, ini persyaratan non-fungsional yang sangat nyata, karena pengguna tidak suka menunggu.
Untuk menilai kepuasan pengguna dengan layanan, Anda dapat menggunakan indikator Apdex, yang mencerminkan rasio respons yang berhasil (puas) terhadap tidak memuaskan (tidak memuaskan). Misalnya, nilai ambang kami adalah SLA = 1,2 detik, lalu dengan 95% waktu respons permintaan <= 1,2 detik, hasilnya akan berhasil. Dalam kasus sejumlah besar permintaan lebih dari 1,2 detik, tetapi kurang dari 4T (4,8 detik), hasilnya dianggap memuaskan, dan ketika sejumlah besar permintaan melebihi 4T, yang> 4,8 detik, hasilnya dianggap gagal.
Kesimpulan
Sebagai hasilnya, saya ingin mengatakan bahwa pengembangan layanan-mikro sebenarnya melibatkan pemahaman dan aplikasi praktis Komputasi Terdistribusi dan Paralel.
Tentu saja, Anda harus mengorbankan beberapa hal:
- Kesederhanaan pengembangan dan pemeliharaan - upaya pengembang untuk mengimplementasikan modul terdistribusi;
- Ketika bekerja dengan basis data, konsistensi ketat (ACID) dapat menghilangkan dan memerlukan pendekatan lain;
- Daya komputasi digunakan untuk komunikasi dan serialisasi jaringan;
- Kami menghabiskan waktu menerapkan praktik-praktik DevOps untuk pemantauan dan penyebaran yang lebih kompleks.
Sebagai imbalannya, menurut pendapat saya, kita mendapatkan lebih banyak:
- kemampuan untuk menggunakan kembali seluruh modul yang siap digunakan, dan, akibatnya, peluncuran cepat produk di pasar;
- skalabilitas sistem yang tinggi, yang berarti lebih banyak pelanggan tanpa kehilangan SLA;
- Dengan menggunakan konsistensi akhirnya, berdasarkan pada teorema CAP, kami mendapatkan kemampuan untuk mengelola sejumlah besar data, sekali lagi, tanpa kehilangan SLA;
- kemampuan untuk merekam setiap perubahan dalam kondisi sistem untuk analisis lebih lanjut dan pembelajaran mesin.