ビジネスが大きくなるにつれて、より多くの機能が必要になるため、既存の Rails アプリケーションに新しいモデルやコントローラーを追加せざるを得なくなり、場合によってはモノリスになってしまいます。メンテナンスが不可能になり、デプロイが困難になったモノリス アプリケーションに直面している場合は、それを管理する方法をいくつか知っておく必要があります。プロジェクトを理解し、変更を加えるためにチームが数千行を検討する必要がある場合は、行を分割する必要があります。
アプリケーションを分割する場合
- テストの実行時間が 20 分を超えた場合。
- モデルは数百または数千に成長しました。
- 独立した機能。
- 開発者が独自のモジュールを開発/展開するために独立して作業できない場合。
モノリシック アプリケーションを分割するさまざまな方法
- マイクロサービスの使用。
- 「より高速な」テクノロジーの使用。
- 多数のサーバーを追加します。
マイクロサービスとは マイクロサービスは、大規模なプロジェクトをより小さく、より管理しやすい部分に分解するための戦略的な方法です。マイクロサービスは、独自のコード ベースにリファクタリングされたアプリケーション機能の一部であり、標準プロトコルを介して他のマイクロサービスと通信します。これを実現するには、まずビジネス要件をユーザー管理ロジック、広告ロジック、Web ユーザー インターフェイスなどの関連グループに分割します。
なぜマイクロサービスなのか
マイクロサービスの急増を引き起こした最初の要因は、通常のモノリシック アーキテクチャに対する反発でした。モノリシック アプリは多くの責任を持つ 1 つの大きなプログラムですが、マイクロサービス ベースのアプリケーションは、それぞれが 1 つの責任を持つ小さなプログラムで構成されます。これにより、開発者のチームがさまざまなサービスで独立して作業できるようになります。また、固有の分離により、プログラムがより小さく、より理解しやすくなり、新しい開発者がより早く貢献を開始できるようになります。最後に、アプリケーション全体を表す単一のプログラムはないため、多大なコストをかけずにサービスの方向を変えることができます。特定のサービスにとってより意味のある新しいテクノロジーが利用可能になった場合、そのサービスだけを書き直すことが可能です。同様に、マイクロサービスは異なる言語間で通信するため、Ruby、Java、PHP、Node、Go などの複数の異なるプラットフォームでアプリケーションを問題なく構成できます。
利点
- モジュールは再利用できます。
- デプロイメントは、大規模なアプリケーション全体に関係なくスムーズに行われます。
- 機能の追加も簡単。
- すべてのモジュールではなく 1 つのモジュールをテストすることで、テスト時間を短縮します。
- 大規模なアプリケーションは、小規模なアプリケーションに比べて保守が難しい傾向があります。
- 一連の小さなアプリケーションを使用すると、孤立した部分の作業に集中できます。
- アプリケーションの他の部分を壊さない可能性が高くなるかもしれません。
- 信頼性と耐障害性。
- 移行やアップグレードが簡単です。
- テクノロジーの多様性。
- 単一のアプリケーション機能が動作しなくても、アプリケーション全体がダウンすることはありません。
- 新しい開発者がサービスの機能を理解しやすくなります。
短所
Because everything is now an independent service, you have to handle requests carefully travelling between your modules. There can be a scenario where any of services may not be responding.
Multiple databases and transaction management can be painful.
Productivity will be less till the microservice base is set.
モノリシックとマイクロサービスの比較
以下の図は、人的リソース、時間、メンテナンス、アプリケーションの複雑さの処理の観点から、従来のモノリシック アプリとマイクロサービスの違いを示しています。
マイクロサービスを設定する方法
モノリシック アプリケーションを縮小する戦略的な方法は、プレゼンテーション層、ビジネス ロジック層、データ アクセス層などの層を分割することです。一般的なエンタープライズ アプリケーションは、少なくとも 3 つの異なるタイプのコンポーネントで構成されます。
- Presentation layer – Components that handle HTTP requests and implement either a (REST) API or an
HTML-based web UI. In an application that has a sophisticated user interface. - ビジネス ロジック レイヤー – ビジネス ルールが実装されるアプリケーションの中核となるコンポーネント。
- データ アクセス層 – データベースやメッセージ ブローカーなどのインフラストラクチャ コンポーネントにアクセスできるコンポーネント。
RailsCarma は、開発、トレーニング、デプロイ、Rails コミュニティへの貢献を目的として、初期段階から Ruby on Rails アプリケーションを実装してきました。 RailsCarma は、信頼できる技術的専門知識と完璧な顧客サービスを組み合わせてクライアントに楽しいエクスペリエンスを提供することで、エンドツーエンドのサービスを提供します。 Ruby on Rails 開発 、コンサルティング、アーキテクチャ、管理、および世界中の企業への拡張を行っています。 詳細についてはお問い合わせください.