GESE




SOLUSI YANG DIGUNAKAN DALAM PLATFORM

Kami memahami bahwa platform industri modern harus fleksibel dan skalabel. Bandwidth sistem seharusnya tidak terbatas pada solusi perangkat lunak yang merupakan jenis kendala yang paling sering dihadapi oleh sistem modern yang sangat banyak dimuat.

Untuk mengatasi masalah ini, kami beralih ke pengalaman platform industri kelas dunia. Analisis platform sosial terbesar, seperti Facebook, LinkedIn, dan Twitter, mengungkapkan beberapa fitur umum yang melekat pada proyek-proyek ini:

  • Penggunaan paradigma fungsional Scala;
  • aplikasi panggilan non-blocking;
  • pendekatan reaksi.

Pendekatan yang digunakan dalam pengembangan blockchainis Gese didasarkan pada manifes untuk membangun sistem yang sangat dimuat (https://www.reactivemanifesto.org/). Ini membawa kami pada keputusan untuk menggunakan Kerangka Kerja, yang ditujukan khusus untuk meningkatkan kinerja produk perangkat lunak yang kompleks. Kenyataan bahwa LinkedIn, Coursera dan proyek-proyek lain yang sangat banyak menggunakan kerangka kerja ini dalam opeartions mereka telah menjadi argumen tertimbang dalam keputusan untuk menggunakan pendekatan reaksi modern dan masih belum begitu luas dalam platform kami.

Sebagaimana disebutkan di atas, prinsip-prinsip utama pengembangan aplikasi-reaksi dijelaskan dalam dokumen yang dikenal sebagai «Manifes Reaktif». Mari kita simak kutipan-kutipan manifesto untuk menggambarkan pendekatan-pendekatan utama yang digunakan dalam arsitektur sistem kita.
Organisasi yang bekerja dalam wilayah yang berbeda, terlepas dari satu sama lain datang ke pola yang sama dari konstruksi perangkat lunak.

Sistem ini lebih dapat diandalkan, lebih tangguh, lebih fleksibel, dan lebih cocok untuk memenuhi persyaratan modern.

Perubahan dalam pendekatan pengembangan program adalah karena fakta bahwa persyaratan untuk aplikasi telah sangat berubah dalam beberapa tahun terakhir. Hanya beberapa tahun yang lalu, aplikasi besar memiliki beberapa lusin server, detik waktu respons, jam untuk pemeliharaan offline, dan gigabyte informasi. Hari ini, aplikasi berjalan di semua perangkat, dari gadget seluler hingga cloud cluster, yang menggabungkan ribuan prosesor multi-core. Waktu respons diukur dalam milidetik, dan waktu aktif yang diharapkan adalah 100%. Data diukur dengan petabyte.

Tuntutan hari ini tidak bisa dipenuhi oleh arsitektur perangkat lunak kemarin.
Kami percaya akan perlunya pendekatan yang konsisten terhadap arsitektur sistem, yang telah memperoleh sejumlah persyaratan karakteristik: kami menginginkan sistem (yang kami sebut reaktif) menjadi responsif, stabil, fleksibel, dan dapat dikelola dengan bantuan pesan.

Aplikasi yang dibangun sebagai sistem reaktif lebih fleksibel, digabungkan secara longgar dan dapat skalabel. Fitur-fitur ini menyederhanakan pengembangan dan modifikasi perangkat lunak. Sistem reaktif jauh lebih stabil, jadi ketika kegagalan terjadi, mereka mengatasinya dengan keanggunan bawaan mereka, tanpa mengubah situasi menjadi bencana alam. Selain itu, sistem reaktif sangat responsif, yang memberikan umpan balik yang efektif kepada pengguna.


Karakteristik dari sistem reaktif

  • Ketanggapan adalah landasan kenyamanan dan kegunaan.

Selain itu, responsif berarti bahwa masalah dapat dengan cepat dideteksi dan diselesaikan secara efektif. Sistem responsif berfokus pada penyediaan waktu respons minimal dan stabil dengan batas atas yang ditentukan dengan jelas untuk memastikan kualitas layanan yang konstan. Perilaku berkelanjutan ini, pada gilirannya, menyederhanakan penanganan kesalahan, meningkatkan kepercayaan pengguna akhir, dan memfasilitasi interaksi lebih lanjut dengan sistem.

  • Stabilitas. Sistem tetap stabil dalam menghadapi kegagalan. 


Ini tidak hanya berlaku untuk sistem kritis yang sangat sarat - sistem apa pun yang tidak stabil tidak akan dapat merespons permintaan setelah kegagalan.
Stabilitas dicapai melalui replikasi, penahanan, isolasi dan delegasi. Titik-titik kegagalan terkandung dalam setiap komponen, mengisolasi komponen dari satu sama lain dan dengan demikian memastikan bahwa mereka dapat berhenti bekerja dan pulih tanpa mengorbankan sistem secara keseluruhan. Pemulihan setiap komponen didelegasikan ke komponen lain (eksternal), dan ketersediaan tinggi dijamin, jika perlu, dengan replikasi. Klien komponen tidak dibebani dengan penanganan.
  • Elastisitas: sistem tetap tersedia untuk beban kerja yang berbeda.


Sistem reaktif dapat merespon perubahan volume permintaan yang masuk dengan meningkatkan atau menurunkan sumber daya yang dialokasikan untuk melayani permintaan ini. Implementasi seperti itu menyiratkan tidak adanya titik saingan sumber daya atau kemacetan sentral, yang memberikannya kemampuan untuk mereplikasi komponen dan mengalokasikan sumber daya di antara mereka. Sistem reaktif mendukung algoritma penskalaan prediktif dan reaktif dan menyediakan indikator yang diperlukan untuk kinerja saat ini. Elastisitas dicapai dengan cara yang paling ekonomis pada perangkat keras dan platform perangkat lunak yang tersedia.

  • Pesan didorong. 

Sistem reaktif bergantung pada perpesanan asynchronous untuk menetapkan batas antar komponen. Ini memberikan pengikatan gratis, isolasi dan akses transparan ke komponen. Batasan semacam itu juga memungkinkan transmisi kesalahan dalam bentuk pesan.


Mari kita pertimbangkan secara lebih rinci mekanisme untuk mengimplementasikan masing-masing karakteristik ini. Kami mencatat bahwa dalam konteks platform yang diimplementasikan, penerapan pendekatan pesan-driven akan berlebihan, sehingga ayat berikutnya tidak berisi deskripsi.


React-approach implementation dalam konteks platform target

Kami menggambarkan prinsip-prinsip kunci dari pendekatan reaktif. Sekarang kita perlu memilih implementasi teknis dari konsep ini untuk membangun platform tertentu.

Solusi teknis utama dan paling lengkap yang menggunakan pendekatan-reaksi adalah Kerangka Kerja. Mari kita periksa bagaimana pendekatan reaksi diterapkan dalam solusi yang dipilih.


Ketanggapan

Layanan web tradisional, sebagai suatu peraturan, beroperasi sebagai pemblokiran: klien mengirim permintaan ke back-end dan menunggu respons. Bagian belakang menerima permintaan dan mulai memprosesnya, mengambil utas yang terpisah. Dalam hal ini, logika bisnis tindakan dapat berisi akses ke penyimpanan data yang dapat ditempati pada waktu tertentu, sehingga utas akan diblokir hingga akses ke repositori dipulihkan. Akibatnya, kami kehilangan satu thread sistem yang berfungsi untuk menunggu.

Angka tersebut menunjukkan proses pengiriman permintaan pengguna ke server. Pada titik tertentu, semua utas ditempati oleh permintaan dari pengguna sebelumnya dan mereka tidak dapat diproses: pada saat yang sama operasi lain dilakukan di sisi penyimpanan. Ini adalah keterbatasan perangkat lunak skalabilitas sistem.

Pada titik tertentu, beban pada sistem meningkat sedemikian rupa sehingga bagian perangkat lunak (terlepas dari kapasitas perangkat keras) tidak dapat menggunakan semua sumber daya: penyumbatan terjadi di tingkat perangkat lunak. Pendekatan non-blocking digunakan untuk memecahkan masalah ini. Angka ini menunjukkan penerapannya untuk kerangka Node.js yang populer, yang akan kita gunakan di sisi front-end.



Di sisi server ada prosesor yang mendelegasikan tugas "berfungsi" ke utas. Dengan demikian, thread berubah menjadi cara untuk mengeksekusi query, dan semua tugas ditempatkan dalam konteks eksekusi. Benang layanan khusus menganalisis masalah. Jika tugas tidak diblokir dan dapat dijalankan, tugas diberikan ke utas. Jika tugas diblokir menunggu, itu tetap di kolam. Dengan demikian, pelaksanaan tugas tidak lagi memblokir benang, dan sistem tidak lagi terhalang oleh keterbatasan perangkat lunak yang terjadi dengan pendekatan klasik.

Kami memilih Kerangka Pemutaran karena solusi ini menerapkan pendekatan-reaksi pada tingkat kernel server dengan penggunaan model aktor (komputasi paralel). Server, yang ditulis pada para aktor, memungkinkan Anda untuk berhasil melakukan pemrosesan asynchronous atas permintaan yang masuk.

Berkat penggunaan paradigma fungsional, Play Framework mampu "secara parsial" melakukan tugas, bahkan jika itu diblokir di salah satu tahapan. Sebagai contoh, kita tidak perlu menunggu permintaan data repositori untuk mulai melakukan tugas yang bergantung pada fakta bahwa permintaan itu dieksekusi. Dalam hal ini, kita juga bisa mendapatkan izin untuk tidak menjalankan tugas pemblokiran sama sekali, karena logika dari tugas berikutnya, umumnya, tidak memerlukan hasil dari yang sebelumnya.

Elastisitas (kapasitas penskalaan)

Seperti disebutkan di atas, arsitektur Kerangka Kerja dibuat berdasarkan model aktor, di mana tidak ada pembatasan perangkat lunak pada pemrosesan permintaan. Penskalaan eksekusi query dapat dicapai dengan mengkonfigurasi kolam thread dan konteks eksekusi.

Sendiri, para aktor akan bekerja pada jumlah utas yang kami putuskan untuk dipilih dalam konfigurasi. Tentu saja, mekanisme untuk mengakses repositori juga dapat dikonfigurasi sesuai dengan kebutuhan saat ini. Perlu dicatat bahwa pekerjaan platform kami pada platform perangkat keras yang lemah tidak akan efisien, karena mekanisme penskalaan itu sendiri juga membutuhkan alokasi sumber daya.

Stabilitas

Meningkatkan stabilitas sistem dapat dicapai dengan menggunakan tugas-tugas non-blocking, serta menggunakan monad dan combinator Masa Depan, dan kemudian menampilkan banyak hasil (termasuk yang salah) dalam hasil pemberitahuan dari pekerjaan yang sukses atau salah.

Peran kontrak cerdas Ethereum

Integrasi dengan blockchain Ethereum memungkinkan Anda menggunakan bahasa Soliditas untuk mengembangkan kontrak cerdas.

Kontrak pintar digunakan dalam sistem Gese untuk melayani fungsi platform berikut:

  • • Alokasi Token;
  • • Penghitungan imbalan;
  • • Membangun sistem pemeringkatan;
  • • pertukaran Cryptocurrency, inflow dan outflow;
  • • Operasi bursa saham domestik.

Deskripsi singkat tentang front-end

Berdasarkan tugas yang ditetapkan, telah diputuskan untuk menggunakan platform Node.js yang tersebar luas dengan pendekatan komponen reaktif + redux untuk front-end. Dalam hal ini, halaman akan sepenuhnya dinamis, yang agak menyulitkan pengembangan, tetapi membuat antarmuka pengguna interaktif.

Aplikasi seluler

Secara teknis, aplikasi seluler dalam banyak hal mengulangi fungsionalitas antarmuka web, menambahkan beberapa fitur tambahan:
  • • Geolokasi;
  • • Pembacaan NFC-tag.

Prinsip kerja dengan aplikasi back-end serupa dengan aplikasi untuk back-end.

Skema akhir dari platform Gese ditunjukkan pada gambar.




SISTEM PROTEKSI

Platform dan sistem perlindungannya beroperasi berdasarkan pengidentifikasi dengan nilai-nilai yang disimpan di blockchain dan terdiri dari beberapa lapisan perlindungan.

Produsen memesan kumpulan pengenal produk yang berisi data yang diprogram ke dalam tag khusus, setelah diterima oleh pabrikan, tag dilampirkan ke produk yang sesuai.

Setelah tag dilampirkan, produk dikirim ke titik penjualan mereka. Dengan tag di tempat, setiap kali seseorang membaca tag menggunakan aplikasi seluler platform, lokasi item dipetakan oleh geolokasi.
Dengan memindai tag, pengenal dicadangkan di bawah akun pembeli dan kemudian, nanti (dalam jangka waktu yang diizinkan), ia dapat membuat catatan dalam aplikasi bahwa produk tersebut dibeli (produk harus mengubah data geolokasi yang sesuai).

Jika tag dicadangkan untuk seseorang tetapi dipindai oleh pengguna lain, cadangan dihapus. Dalam hal konsumen menandai produk sebagai dibeli, tetapi kemudian muncul di tempat lain sebagai tersedia, sistem menghukum pengguna karena mencoba untuk menipu sistem.

Untuk menghindari tingkat penipuan yang lebih besar, sistem juga memblokir sementara token yang diterima oleh pengguna ini untuk dugaan pembelian.

Karena identifier tidak dapat dipalsukan (diprogram di pabrik manufaktur), hanya satu yang dapat ada di dalam sistem, datanya tidak dapat diubah. Sistem kontrol yang dipertahankan oleh konsumen (cash back) adalah apa yang menjamin keamanan produk.

Terima kasih atas perhatiannya  semoga apa yang sampaikan dapat bermanfaat bagi kawan kawan yang membaca,dilain waktu saya akan bahas lebih lengkap.sekian


Eth: 0x5F53C937FD1cc13c75B12Db84F61cbE58A4a255e

Informasi lengkap

Website: https://gese.io/



Komentar

Postingan Populer