はじめまして、今年度新卒入社しました、請求管理ロボSREチームの塚本です。
今回は個人的な勉強も兼ねて、「請求管理ロボ」のインフラ構成をざっくりと解説していきたいと思います。
「請求管理ロボ」のインフラ基盤について
「請求管理ロボ」とは、請求書の作成から催促まで請求業務を自動化するクラウドサービスです。請求管理ロボの基盤は、AWSのサービスを活用して構築されています。AWSは多彩なサービスとリソースを提供し、クラウドコンピューティングの利点であるスケーラビリティ、自動化、および管理の簡素化を提供します。
以下に構成図と、それぞれのサービスが担う役割を紹介します。
- Route53:
- ドメイン名の管理とDNSのルーティングにRoute53を使用します。これにより、ユーザーがウェブサイトにアクセスするためのドメイン名を設定できます。
- ALB (Application Load Balancer):
- ALBを使用してトラフィックを分散します。これにより、ECSタスクに負荷分散され、可用性とスケーラビリティが向上します。
- S3 (Simple Storage Service):
- 請求管理ロボでは主にログの保存や、作成された請求書のストレージとして利用しています。
- ECS (Amazon Elastic Container Service)
- コンテナ化されたアプリケーションがある場合、ECSを使用してコンテナをデプロイおよび管理できます。これにより、アプリケーションのスケーラビリティが向上し、環境をコントロールできます。
- 起動するコンテナのタイプをFargateとEC2から選択できますが、請求管理ロボでは主にFargateを選択しています。
- Amazon Aurora MySQL :
- データベース層としてAmazon Aurora MySQLを使用します。Webアプリケーションのデータを格納し、データの管理とバックアップを提供します。
- AWS Batch:
- 高性能コンピューティング (HPC) ジョブやバッチ処理を実行するためのサービス。
- 大規模な計算リソースを自動的にプロビジョニングし、ジョブのキューイングと管理を行います。
- 請求管理ロボでは主に、Webトランザクションで処理してレスポンスを返すには時間がかかりすぎる機能や、定時に実行する必要があるジョブを実行する役割を担います。定期実行されるジョブに関してはEventBridgeがトリガーとなります。
「請求管理ロボ」の運用基盤について
ROBOTPAYMENTの請求管理ロボのインフラセキュリティ対策には、以下のAWSサービスと外部サービスを利用しています。それぞれのサービスについて詳細を説明します。
- EventBridge / CloudWatch Logs:
- EventBridgeは、AWSリソースとアプリケーションのイベントをリアルタイムで監視し、必要なアクションをトリガーするサービスです。これにより、システムの状態変更やセキュリティイベントなどの重要なイベントを捉え、自動的な対応を可能にします。
- CloudWatch Logsは、アプリケーションやシステムのログデータを集約、保存、監視するためのサービスです。ログデータの収集、フィルタリング、アーカイブ、アラート設定などを提供し、セキュリティインシデントの検出や問題のトラブルシューティングに役立ちます。
- WAF (Web Application Firewall):
- WAFは、ウェブアプリケーションのセキュリティを高めるためのAWSのマネージドウェブアプリケーションファイアウォールです。WAFを使用することで、不正なトラフィックや悪意のある攻撃からウェブアプリケーションを守ります。
- WAFは、HTTPリクエストに対するフィルタリング、ブロック、アラートをカスタムルールやAWS Managed Rulesを使用して実行します。これにより、セキュリティリスクを軽減し、SQLインジェクション、クロスサイトスクリプティング(XSS)、DDoS攻撃などから保護します。
- 外部サービス (Mackerel、New Relicなど):
- ROBOTPAYMENTは外部のモニタリングサービス(例: Mackerel、New Relic)と連携して、アプリケーションのメトリクス監視を行っています。これにより、アプリケーションのパフォーマンスやセキュリティに関する情報を収集し、障害や問題が発生した際に即座に対応できる状態を維持しています。
これらのセキュリティ対策およびモニタリング手法により、ROBOTPAYMENTの請求管理ロボのインフラストラクチャはセキュアであり、アプリケーションの安定性とセキュリティが確保されています。
「請求管理ロボ」の開発基盤について
請求管理ロボでは、アプリケーション開発の自動化も進んでおり、以下のような取り組みが行われています。
- CodePipeline/CodeBuildを利用したCI/CDパイプライン:
- CodeBuildで作成されたCI/CDツールをCodePipelineでまとめて動かすことでアプリケーションのリリースプロセスを自動化するなど、迅速なデプロイメントを実現します。
- Pull Request(PR)作成時にユニットテストが走るようなワークフロー:
- 開発者がPRを作成すると、自動的にユニットテストが実行され、コード品質を確保します。
これらのアプローチにより、アプリケーションの開発とデリバリーが迅速化され、品質管理が向上します。
また、これらのAWSリソースのほとんどは、Terraformを使用して管理されています。さらに、GitHub Actionsを用いてterraform plan/applyを半自動化するなど、インフラの管理・変更のワークロードも整備されています。
以上が「請求管理ロボ」を支えるインフラストラクチャの紹介でした!最後まで読んでくださりありがとうございました。
We are hiring!!
ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!
speakerdeck.com
www.robotpayment.co.jp