Memilih arsitektur solusi untuk pasar jasa pengiriman

Agrafreight.com adalah layanan pertama di Rusia untuk perhitungan biaya online dan pemesanan transportasi udara, mobil, dan kontainer, kargo dengan semua alat transportasi, termasuk tarif dari pintu ke pintu.


gambar

Sejarah proyek Agorafreight diceritakan oleh Reksoft Project Manager (bagian dari Technoserv Group of Companies) Dmitry Dolgikh.


Startup Rusia Agorafreight adalah pasar untuk transportasi kargo internasional, yang dirancang untuk menghitung biaya layanan untuk transportasi barang yang disediakan oleh perusahaan pengangkut dan operator. Sistem ini merupakan penghubung antara pelanggan transportasi (klien), perusahaan operator dan perusahaan forwarder. Sistem ini memungkinkan Anda untuk memilih sebelumnya rute, perusahaan dan layanan, serta menghitung biaya transportasi.


Proyek itu sendiri sangat menarik dan ambisius. Setidaknya menarik karena belum ada solusi semacam itu di Rusia. Kata "internasional" memberikan ambiguitas proyek - di satu sisi, ambisi proyek dinyatakan dalam peningkatan ke seluruh dunia, dan di sisi lain, kami memahami bahwa proyek akan membuka jalan dalam lingkungan yang cukup kompetitif. Bagian dari lingkungan seperti itu adalah selalu kemampuan proyek untuk merespons dengan cepat terhadap perubahan, dan pembalikan yang tidak terduga dalam hal persyaratan. Semua ini segera menetapkan tingkat tanggung jawab tertentu dalam memilih arsitektur solusi, terutama karena tidak ada cukup waktu untuk mengimplementasikan versi pertama produk.


Pertama, saya harus memilih database, atau lebih tepatnya sistem manajemen data. Pilihan ada pada MongoDB - basis data berorientasi dokumen NoSQL dengan dukungan untuk geo-queries, pencarian teks lengkap dalam 15 bahasa, dengan struktur data hierarkis. MongoDB tersedia secara gratis di bawah lisensi GNU 3.0. Ini skala secara horizontal dan dapat digunakan sebagai penyimpanan file dengan load balancing dan replikasi data.
Pro


  1. Hierarki data - kemampuan untuk mengoptimalkan skema dan permintaan data hierarkis (multibahasa, tarif, dll.).
  2. Skema-kurang, skema data tidak kaku - perubahan murah dan cepat ke skema database, yang tidak memerlukan migrasi.
  3. Scalable - lebih murah daripada database relasional, tidak memerlukan pemrosesan kode sumber atau penulisan ulang permintaan basis data.
  4. Dukungan untuk geo-query dan indeks, pencarian teks lengkap.
  5. Sistem open source open source.
  6. Ada peluang untuk membeli dukungan berbayar dari penulis MongoDB, dukungan perusahaan.
  7. MongoDB dapat digunakan sebagai penyimpanan file dengan load balancing dan replikasi data.
  8. Dengan MongoDB, lebih mudah dan lebih cepat untuk membuat prototipe aplikasi dan layanan.

Cons
1. Tidak ada dukungan untuk Join'ov, namun, masalah ini diselesaikan oleh hierarki data atau MapReduce-functional (tetapi tidak 100%).


  1. Tidak ada transaksi, ada atomicity di tingkat dokumen, Anda dapat menerapkan emulasi transaksi.
  2. Konsistensi di tingkat basis data tidak diterapkan, perlu untuk melakukan ini dalam kode sumber aplikasi.
  3. Tidak ada pemicu seperti pada database klasik, tetapi seringkali fungsi ini tidak digunakan.

Fitur


  1. MongoDB tidak memerlukan administrasi di awal dan sedikit setelahnya, penyetelan diperlukan untuk penskalaan.
  2. Ada penyedia hosting yang dapat menyediakan MongoDB di cloud pada skala yang tepat, layanan seperti itu jarang terlihat dengan MySQL atau PostgreSQL.
  3. Pemimpin di antara gudang data NoSQL saat ini.
  4. Ini memiliki alat untuk membangun kueri MapReduce, yang dapat digunakan untuk membuat laporan yang kompleks, tetapi tidak secara real-time.
  5. Kekurangan kritis dari database ini diatasi dengan merilis versi ke-3.

Tim membuat pilihan yang mendukung MongoDB berdasarkan analisis proyek. Awalnya, jelas bahwa proyek ini ditandai oleh probabilitas variabilitas yang tinggi dari sudut pandang menetapkan spesifikasi teknis berdasarkan proses bisnis. Hal ini disebabkan oleh fakta bahwa proyek tersebut adalah sebuah startup, sehingga sangat mungkin bahwa banyak proses bisnis akan berubah selama implementasi proyek dan adaptasinya terhadap realitas permintaan pasar. Untuk memastikan fleksibilitas perubahan dan mengurangi biaya internal untuk mengubah model data, serta mengurangi risiko sendiri, sebuah pilihan dibuat untuk mendukung database non-relasional. Salah satu pemimpin di segmen ini hanyalah MongoDB.


Pilihan ini, seperti yang ditunjukkan oleh latihan selanjutnya, ternyata benar. Semuanya terjadi seperti yang diharapkan - perubahan konstan dalam produksi, peningkatan dari seri "tapi kami masih ingin mengimplementasikannya" dan semua ini membutuhkan perubahan yang fleksibel dan cepat dari model data. MongoDB memungkinkan proyek tidak hanya untuk menanggapi perubahan secara memadai, tetapi juga tidak "keluar" dari anggaran. Seperti yang Anda tahu, kekurangan pada tahap desain menyebabkan rekayasa ulang yang signifikan dalam implementasi dan peningkatan risiko kegagalan untuk memenuhi tenggat waktu dan anggaran proyek. Semua risiko ini diminimalkan, termasuk karena arsitektur yang dipilih.


Pilihan arsitektur kedua adalah perpustakaan ReactJS untuk mengimplementasikan frontend. Popularitas teknologi dan komunitas besar yang membentuknya memungkinkan untuk memilih ReactJS.


Keuntungan dari kerangka kerja ini:


  1. Salah satu kerangka pengembangan klien yang paling populer. Ini memiliki komunitas besar, ada banyak contoh penggunaannya, dokumentasi yang baik.
  2. Pengembang perusahaan kami yang berpengalaman dengannya berbicara baik tentang dia.
  3. Lebih fleksibel dalam hal pengembangan dibandingkan, misalnya dengan Angular.
  4. Ini mendukung Server Rendering, yang memungkinkan pengindeksan halaman suatu aplikasi oleh mesin pencari.
  5. Cocok untuk aplikasi dengan banyak halaman dinamis. Kami memiliki banyak halaman seperti itu (formulir input untuk berbagai jenis tarif, biaya tambahan, komisi; formulir untuk menghitung biaya transportasi, dll.)

Sebagai hasilnya, ReactJS memungkinkan untuk mengubah bagian ujung depan dengan cukup fleksibel dan dinamis dengan latar belakang perubahan persyaratan dan peningkatan.


Selama proyek, selain pengembangan, kami harus menyelesaikan masalah algoritmik dan optimisasi dalam menyusun rencana transportasi yang optimal, membandingkan dan membangun ratusan opsi untuk rute pengiriman dengan pemilihan dan pembentukan rekomendasi yang paling optimal. Dan dalam nada ini, proyek memiliki potensi pengembangan tinggi terhadap sistem rekomendasi berdasarkan kecerdasan buatan.
Secara umum, terlepas dari semua kesulitan yang muncul selama pengembangan proyek, itu menarik dari sudut pandang menggunakan teknologi modern dan menjanjikan untuk mengembangkan sistem informasi untuk pasar transportasi internasional.


Saat ini, sistem tersebut berisi puluhan ribu tarif saat ini untuk transportasi laut, jalan dan udara. Cakupan geografi mencakup Cina, Vietnam, Korea Selatan, negara-negara Uni Eropa dan Rusia, dan rencana untuk memperluas ke negara lain. Sekarang puluhan forwarder dari China dan Federasi Rusia sudah bekerja dengan sistem.


gambar

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


All Articles