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/
Facebook: https://www.facebook.com/gese.io/
Twitter: https://twitter.com/gese_io
Komentar
Posting Komentar