マイクロサービスを正しく実装すれば、独立したチームのスケーリングとデプロイの高速化が可能になります。誤って実装すると、分散システムの複雑さという悪夢を生み出します。私たちは、Domain-Driven Designに基づき、適切なインフラストラクチャに支えられ、包括的なオブザーバビリティを備えて運用されるマイクロサービスアーキテクチャを構築し、一般的な混乱なしにそのメリットを提供します。
私たちは、AWS/GCP上のKubernetes、メッセージングにはApache KafkaまたはNATS、高性能な内部APIにはgRPC、外部APIにはREST/GraphQLを使用して構築します。各サービスはDockerでコンテナ化され、ArgoCD経由でデプロイされ、分散トレーシングで監視されます。
初日から独立してスケーリングする必要がある新しいシステムを構築するエンジニアリングチーム、またはサービスの自律性を必要とする複数のチームを持つ組織が対象です。また、マイクロサービスを試みたものの「分散モノリス」に終わってしまったチームに対して、実際のマイクロサービスのメリットを提供できるようアーキテクチャを修正するお手伝いもします。
ビジネスドメインをモデリングし、サービス境界を特定し、所有権と通信契約を定義します。
インフラストラクチャプラットフォーム(Kubernetesクラスター、CI/CD、サービスメッシュ、共有ライブラリ)を設計します。
適切なテスト、コンテナ化、デプロイ自動化を備えたコアサービスを構築します。
サービス間通信、コントラクトテスト、カオスエンジニアリング検証を実装します。
オブザーバビリティをデプロイし、SLOを確立し、アーキテクチャの決定を文書化し、運用ランブックを作成します。
私たちは、domain-driven designを適用し、bounded contextsを特定し、サービス境界を定義し、OpenAPIまたはprotobufによるAPI契約を確立し、サービス間通信パターンを設計し、Kubernetesを用いたデプロイ戦略を策定します。
私たちは、REST と gRPC を介した同期通信、Kafka と RabbitMQ を使用した非同期メッセージング、CQRS と event sourcing を用いたイベント駆動アーキテクチャ、そして分散トランザクション管理のための saga パターンを実装しています。
はい、当社ではstrangler fig patternを使用して、最も独立してデプロイ可能なドメインから開始し、monolithからサービスを段階的に抽出し、backward compatibilityを維持しつつ、稼働中のユーザーへのいかなる中断も回避します。
ConsulまたはKubernetes DNSを使用して service discovery を構築し、API gateways は、Kong、AWS API Gateway、またはカスタムのNestJS/Express gateways を使用して構成します。これらには rate limiting、authentication、request routing、および circuit breaking の機能が含まれています。
マイクロサービス開発は1時間あたり10ドルから50ドルで価格設定されています。段階的なサービス抽出が始まる前に、アーキテクチャ設計と初期サービス分解に通常4週間から8週間かかります。