Microservicesは常に最適な解決策とは限りませんが、モノリスがチームの速度を低下させ、スケーリングが求められるときには、当社が適切な移行方法を熟知しています。分散型の複雑さを生み出すのではなく、Microservicesを成功させるための境界付けられたコンテキストを設計し、イベント駆動型通信を実装し、運用プラクティスを確立します。
サービス要件に応じて、Node.js、Python、Goを使用してMicroservicesを構築します。イベントにはApache KafkaまたはRabbitMQ、同期呼び出しにはgRPC、オーケストレーションにはKubernetesを介して通信します。各サービスは、Dockerベースのローカル開発環境とともに、独自のPostgreSQLまたはRedisインスタンスを持ちます。
モノリスがチームの速度やスケーリングのボトルネックとなっているシリーズB+のスタートアップ。複数のチームが互いのコードに干渉している、デプロイが危険、または単一コンポーネントが独立してスケールできない場合、Microservicesを検討する時期です。
ビジネスドメインをマッピングし、境界付けられたコンテキストを特定し、最大のインパクトを得るために最初に抽出するサービスを決定します。
サービスインターフェース、通信パターン、データ所有権、デプロイメントトポロジーを設計します。
ストラングラーフィグパターンを使用してサービスを一つずつ抽出し、システム全体の安定性を維持します。
共有インフラストラクチャ(サービステンプレート、CI/CDパイプライン、オブザーバビリティ、開発者ツール)を構築します。
サービス所有権についてチームをトレーニングし、運用プラクティスを確立し、アーキテクチャの決定を文書化します。
モノリスがデプロイのボトルネックを引き起こしている場合、異なるコンポーネントを個別にスケーリングする必要がある場合、またはチームが8〜10人を超えるエンジニアに成長した場合に、マイクロサービスを検討することをお勧めします。MicrocosmWorksは、この移行を適切なタイミングで行うのに役立ちます。
MicrocosmWorksでのマイクロサービスアーキテクチャとスケーリングは、スタートアップ向けには時給25ドルから50ドルです。コストを分散しリスクを軽減するために、サービスを一つずつ抽出する段階的なアプローチを取っています。
はい、私たちはバイラルな成長に対応するために、オートスケーリング、データベースリードレプリカ、キャッシングレイヤー、CDN配信、および非同期処理を実装します。また、ユーザーが気づく前にスケーリングの問題を把握できるよう、モニタリングとアラートを設定します。
3〜5つのサービス、メッセージブローカー、およびAPIゲートウェイを備えた、EKSやGKEのようなマネージドサービス上のKubernetesから始めることをお勧めします。小規模なスタートアップ向けには、運用上の複雑さとコストを削減するために、ECSまたはCloud Runでコンテナオーケストレーションを使用します。
私たちは、小規模チームにとってマイクロサービスを管理しやすくするサービスメッシュ、一元化されたロギング、分散トレーシング、および自動化されたデプロイパイプラインを実装します。また、オンコール負担を最小限に抑えるために、自己修復インフラストラクチャと自動化されたランブックも設定します。