貨物サービスの市場向けのソリューションのアーキテクチャの選択

Agrafreight.comは、ロシアで最初のオンラインコスト計算および航空、自動車およびコンテナ輸送、ドアツードア料金を含むすべての輸送モードによる貨物の注文のためのサービスです。







画像

Agorafreightプロジェクトの歴史については、プロジェクトマネージャーReksoft(Technoservグループの一部)Dmitry Dolgikhに語っています。







ロシアのスタートアップAgorafreightは、国際貨物輸送の市場であり、運送会社や運送業者によって提供される商品の輸送サービスのコストを計算するように設計されています。 このシステムは、輸送顧客(クライアント)、運送会社、運送業者の間のリンクです。 このシステムでは、ルート、企業、サービスを事前に選択したり、輸送コストを計算したりできます。







プロジェクト自体は非常に興味深く、野心的です。 ロシアにはまだそのような解決策がないという点で少なくとも興味深い。 「国際的」という言葉はプロジェクトに曖昧さを与えました-一方では、プロジェクトの野心は世界全体へのスケールアップの観点から述べられ、他方では、プロジェクトはかなり競争の激しい環境で道を開くことを理解しました。 そのような環境の一部は、常にプロジェクトが変更に迅速に対応する能力と、要件の面での予期しない逆転です。 特に、製品の最初のバージョンを実装するのに十分な時間がなかったため、このすべてがソリューションアーキテクチャの選択に一定の責任を直ちに設定しました。







まず、データベースを選択するか、データ管理システムを選択する必要がありました。 選択はMongoDBに委ねられました。MongoDBは、ジオクエリ、15言語での全文検索、階層データ構造をサポートするNoSQLドキュメント指向データベースです。 MongoDBは、GNU 3.0ライセンスの下で無料で利用できます。 水平方向にスケーリングし、負荷分散とデータ複製を備えたファイルストレージとして使用できます。

長所







  1. データの階層-階層データ(多言語、料金など)のスキームと要求を最適化する機能。
  2. スキーマレスで非剛体のデータスキーマ-データベーススキーマへの安価で迅速な変更。移行は不要です。
  3. スケーラブル-リレーショナルデータベースよりも安価で、ソースコードの処理やデータベースクエリの書き換えを必要としません。
  4. ジオクエリとインデックス、フルテキスト検索のサポート。
  5. オープンソースのオープンソースシステム。
  6. MongoDBの作成者からエンタープライズサポートの有料サポートを購入することができます。
  7. MongoDBは、負荷分散とデータ複製を備えたファイルストレージとして使用できます。
  8. MongoDBを使用すると、アプリケーションとサービスのプロトタイプを簡単かつ迅速に作成できます。


短所

1. Join'ovのサポートはありませんが、この問題はデータ階層またはMapReduce機能によって解決されます(100%ではありません)。







  1. トランザクションはありません。ドキュメントレベルで原子性があり、トランザクションエミュレーションを実装できます。
  2. データベースレベルでの一貫性は実装されていません。アプリケーションのソースコードでこれを行う必要があります。
  3. 従来のデータベースのようなトリガーはありませんが、多くの場合、この機能は使用されません。


特徴







  1. MongoDBは、開始時に管理を必要とせず、その少し後、スケーリングのためにチューニングが必要です。
  2. クラウドでMongoDBを適切な規模で提供できるホスティングプロバイダーがあります。このようなサービスは、MySQLやPostgreSQLではめったに見られません。
  3. 現在、NoSQLデータウェアハウスのリーダーです。
  4. MapReduceクエリを作成するためのツールがあり、これを使用して複雑なレポートを作成できますが、リアルタイムではできません。
  5. このデータベースの重大な欠点は、第3バージョンのリリースで解決されました。


チームは、プロジェクトの分析に基づいて、MongoDBを選択しました。 当初、プロジェクトは、ビジネスプロセスに基づいて技術仕様を設定するという観点から、変動の可能性が高いことによって特徴付けられることが明らかでした。 これは、プロジェクトがスタートアップであるという事実によるものであるため、多くのビジネスプロセスは、プロジェクトの実装および市場の需要の現実への適応中に変更される可能性が高いです。 変更の柔軟性を確保し、データモデルを変更する内部コストを削減し、独自のリスクを削減するために、非リレーショナルデータベースを選択しました。 このセグメントのリーダーの1人は、MongoDBだけです。







この選択は、その後の実践が示しているように、正しいことが証明されました。 すべてが期待どおりに行われました-生産における絶え間ない変更、「それでも実装したかった」シリーズからの改善、そしてこれらすべてにはデータモデルの柔軟かつ迅速な変更が必要でした。 MongoDBは、プロジェクトが変更に適切に対応するだけでなく、予算から「抜け出す」ことも許可しました。 ご存じのとおり、設計段階での欠点は、実装の大幅なリエンジニアリングと、プロジェクトの期限と予算を満たせないリスクの増加につながります。 選択されたアーキテクチャを含め、これらのリスクはすべて最小化されました。







2番目のアーキテクチャの選択は、フロントエンドを実装するためのReactJSライブラリでした。 ReactJSを選択できるようにしたのは、テクノロジーの人気と大規模なコミュニティです。







このフレームワークの利点:







  1. 最も人気のあるクライアント開発フレームワークの1つ。 大規模なコミュニティがあり、その使用例、優れたドキュメントが多数あります。
  2. 彼との経験がある当社の開発者は、彼についてよく話します。
  3. たとえば、Angularと比較して、開発に関してより柔軟性があります。
  4. いわゆるサーバーレンダリングをサポートします。これにより、検索エンジンによるアプリケーションのページのインデックス作成が可能になります。
  5. 多数の動的ページを持つアプリケーションに適しています。 このようなページが多数あります(さまざまなタイプの関税、追加料金、手数料の入力フォーム、輸送コストの計算フォームなど)。


その結果、ReactJSでは、要件と改善の変化を背景に、フロントエンドパーツを非常に柔軟かつ動的に変更できました。







プロジェクトでは、開発に加えて、最適な輸送計画を作成し、最適な推奨事項の選択と形成を伴う配送ルートの数百のオプションを比較および構築するアルゴリズムと最適化の問題を解決する必要がありました。 そして、この流れで、プロジェクトは人工知能に基づく推奨システムに向けて高い開発の可能性を秘めています。

一般に、プロジェクトの開発中に生じたすべての困難にもかかわらず、国際輸送市場向けの情報システムを開発するための近代的で有望な技術を使用するという点で興味深いものでした。







現在、このシステムには、海、道路、航空輸送に対する現在の関税が何万も含まれています。 対象地域は、中国、ベトナム、韓国、EU諸国、ロシアをカバーしており、他の国にも拡大する予定です。 現在、中国とロシア連邦の数十社のフォワーダーがすでにこのシステムを使用しています。







画像







All Articles