Case Study

Fintech領域におけるDevOps導入

作成者: Rob|2023/01/13 19:37:59

Challenges

開発はRuby on rails(v2.3)を使用して社内で行われ、アプリケーション実行環境のサーバー要件は非常に厳しいものでした。金融会社であるため、アプリケーションのダウンタイムは受け入れられません。アプリケーションをロードバランサーの下に複数サーバーに配置する標準的なアプローチは、2重送金を引き起こす可能性があることがわかったため、採用できませんでした。暗号通貨のウォレットはPC上でホストされ、オープンAPIを介して通信が行われるため、セキュリティ上の懸念がありました。また同社はAWSに15,000米ドル以上を支払っており、削減したいと考えていました。

主要な要件は以下の通りです

  • サービスの信頼性向上
  • ダウンタイムなしのインフラストラクチャの実現、ブルーグリーンデプロイメント
  • AWS のコスト削減
  • 必要なセキュリティ改善

Our Solution

これらの課題に対して当社は以下のソリューションを提案しました。

サービス・アプリケーションの信頼性向上
アプリケーションを複数のサービスに分割し、サービスをキューイングするためのRabbitMQを導入しました。すべてのアプリケーション間サービスは、RabbitMQ の専用チャネルを使用して通信します。顧客の課題に対処するために、API シークレットを使用して計算されたOne-Timeデジタルシグネチャを活用しました。これにより、秘密鍵を使用して送金情報を暗号化して通信でき、リプレイ攻撃や、偶発的もしくは悪意のあるAPIリクエストからアプリケーションを保護できます。これで、複数のサービスが稼働していても、キュー上の 1 つのメッセージは、アプリケーションの 1 つのインスタンスによってのみ処理され、2重送金の問題は起きません。

ゼロダウンタイム
マイクロサービスの導入とSingle-UseのAPI導入により、サービスを Amazon Container Services にデプロイし、自己修正可能なインフラストラクチャを構築することができました。これにより、ブルーグリーンデプロイメントが可能になり、アプリケーションのアップグレードのダウンタイムをゼロにすることができました。また、vercel.com を活用して、アプリケーションのフロントエンドコードをホストしました。API レスポンスの速度を上げるために、AWS Global Accelerator を導入しました。

コスト削減
アプリケーションを EC2 インスタンスから ECS サービスに移行しましたが、専用ホストで実行されている唯一のサービスは RabbitMQ です。なぜなら暗号通貨ウォレットサービスやブロックチェーンを含むコンテナ化した残りのサービスは、FUSEファイルシステムを使用してS3ストレージサービスに移行したからです。アプリケーションを更新し、コンテナテクノロジに移行することで、AWSのコストを15,000米ドルから3,000米ドルに削減することができました。

Results

アプリケーションに変更を加え、新しい技術を導入することで、お客様のすべての要件に応えることができました。さらにそれ以外にも新しい技術を導入したメリットがありました。API 要求に対する応答時間が短くなったため、以前よりも多くのトランザクションを受け入れて処理できるようになりました。変更を実装するのにかかったコストは、削減されたAWSの支出によって、稼働から1年で回収されました。


Tool Set

  • Cloud - AWS.
  • Git – Bit Bucket.
  • Build - Jenkins.
  • AWS ECS - Container hosting.
  • AWS Secrets manager - Secret manager.
  • AWS EC2 - Virtual Instances.
  • AWS SQS - Queue.
  • AWS ALB + Global Accelerator.
  • AWS Elastic file system.