More Related Content
Similar to AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
Similar to AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現 (20)
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
- 1. © 2022 TIS Inc.
AWSマネージドサービスとOSSによる
ミッションクリティカルなシステムの実現
・DXビジネスユニット ペイメントサービスユニット ペイメントプラットフォームサービス部
・テクノロジー&イノベーション本部 開発基盤センター
- 2. © 2022 TIS Inc. 2
目次
はじめに
1
プロジェクト概要
2
SLO実現のためのアプローチ1:ソフトウェア
3
SLO実現のためのアプローチ2:AWS
4
さいごに
5
- 3. © 2022 TIS Inc. 3
目次
はじめに
1
プロジェクト概要
2
SLO実現のためのアプローチ1:ソフトウェア
3
SLO実現のためのアプローチ2:AWS
4
さいごに
5
- 4. © 2022 TIS Inc. 4
本セッションの想定対象者
➢ 想定対象者
✓ 金融・決済をはじめとするミッションクリティカルなサービスを
モダンなアーキテクチャで構築したい
➢ 想定課題
✓ 高可用サービスを実現するサーバーが高価でサービスの維持が困難
✓ ハードウェア調達のリードタイムが事業成長スピードを阻害している
✓ 上記の課題を解決すべく、クラウドへシフトしたいがSLOの達成が困難
Design For Failure ってどうすればいいの?
- 5. © 2022 TIS Inc. 5
プロジェクト概要
➢ 対象プロジェクト
✓ クレジットカード会社向けの決済系APIを処理するシステムの構築
➢ 特徴
✓ 高可用サーバーで稼働する既存サービスに対する大幅な機能強化とクラウド化
➢ クラウド化におけるモチベーション
✓ ランニングコストを削減をしたい
✓ サービスの変化が早く拡張性を高めたい
✓ 運用ライフサイクルを効率化したい
➢ サービスレベル目標(抜粋)
項目 目標
想定処理件数 秒間 100リクエスト
日次 約200万リクエスト
月次 約6,000万リクエスト
目標レスポンスタイム レスポンスタイム 1秒以内
遵守率 99%
稼働率 99.99%(年間約52分程度の停止)
お客様へ提供するサービス品質向上など
より本質的な部分へ注力したい
- 6. © 2022 TIS Inc. 6
目次
はじめに
1
プロジェクト概要
2
SLO実現のためのアプローチ1:ソフトウェア
3
SLO実現のためのアプローチ2:AWS
4
さいごに
5
- 7. © 2022 TIS Inc. 7
高可用性と高スループットの実現手段
【従来】
ハイスペック かつ 高価なサーバー
【今回】
オープン環境 = 分散システム
『安価』かつ『スピーディー』に柔軟なサービスを提供するため
ソフトウェアレイヤーで高可用性と高スループットを実現
- 8. © 2022 TIS Inc. 8
『Lerna』とは
MW
Application
HW
Public Cloud
Business
Application
MariaDB
Keepalived
HAProxy
Project template Akka
Terraform
script
A toolkit for building highly concurrent, distributed,
and resilient message-driven applications
Lerna
Apache Cassandra
Library
guides
Reference
Code
Learning
content
Private Cloud
VM
OS
VM
OS
オープンな環境で高可用・高スループットなシステムを実現するソフトウェアスタック
✓ クラウド・オンプレ等、プラットフォーム依存なし
✓ 「アクターモデル」「CQRS」「イベントソーシング」のアーキテクチャ
✓ TISでは決済サービス等のミッションクリティカルなシステムの構築に活用
➢ ベンチマークスコア
- 9. © 2022 TIS Inc. 9
Lernaのアーキテクチャ
Web AP DB
✓ 状態を持つAPとDBはネットワーク障害やDC障害
に耐性を持つ3ノード以上のクラスタリング構成
状態保持 状態保持
✓ Keepalivedによる仮想IPアドレスの割り当
て、Master/Backupの切り替え
✓ SSL復号化はHAProxyで行いスケールアウ
ト可能に
アクターモデル
ステートフルな
アプリケーションで
高いスループットを実現
CQRS+イベントソーシング
2つのデータベースを利用
・コマンドサイド:Cassandra
・クエリサイド:RDBMS
✓ 全レイヤを冗長化し、高速なフェイルオーバーを実現
✓ サービスの成長に合わせて全レイヤがスケールアウト可能
- 10. © 2022 TIS Inc. 10
東京データセンター
Lernaを適用したシステムの構成:プライベートクラウド版
VM
大阪データセンター
Akkaクラスタ Apache Cassandraクラスタ
RDB
RDB
➢ コスト削減
✓ 高価なハードウェアからの開放
✓ HAProxy・アプリ・Apache Cassandraを同一VMに配置
➢ 障害への備え
✓ 自社で運用するプライベートクラウドでマルチDC運用
✓ VM停止時は瞬時にフェイルオーバー、VMは手動起動
✓ Apache CassandraとRDBは非同期にDC間でデータ同期、
DC障害時は手動切替
- 11. © 2022 TIS Inc. 11
Lernaを適用したシステムの構成:AWS版?
Amazon
EC2
Akkaクラスタ Apache Cassandraクラスタ
RDB
RDB
➢ コスト削減
✓ HAProxy・アプリ・Cassandraを同一VMに配置
➢ 障害への備え
✓ 自社で運用するプライベートクラウドでマルチDC運用
✓ VM停止時は瞬時にフェイルオーバー、VMは手動起動
✓ CassandraとRDBは非同期にDC間でデータ同期、
DC障害時は手動切替
Lernaはプラットフォーム依存がなく、単純にAmazon EC2に置き換えることでAWS上へ構築可能
AWS Cloud
Tokyo Region Osaka Region
- 12. © 2022 TIS Inc. 12
課題は解決したか?
➢ 当初の課題
✓ 高可用サービスを実現するサーバーが高価でサービスの維持が困難
◎ ソフトウェアレイヤーで実現することでハードウェア費用を削減
✓ ハードウェア調達のリードタイムが事業成長スピードを阻害している
◎ AWSにより調達スピードアップ
✓ 上記の課題を解決すべく、クラウドへシフトしたいがSLOの達成が困難
◎ 障害時、高速にフェイルオーバーする「Lerna」により達成
モダンなアーキテクチャとは!?
コスト削減
拡張性
高可用性
- 13. © 2022 TIS Inc. 13
もうひとつの課題
クラウドのメリットを享受し運用作業を軽減することで
よりお客様向けのサービス品質向上に努めたい
可用性 スループット 運用コスト
評価 ◎ ◎ △
Lerna 99.9999% 1,000TPS -
PJ 99.99% 100TPS -
ハードウェア/ソフトウェア 人件費
○ △
すべてAmazon EC2上に構築するとミドルウェアの運用負荷が高く、かつ、有識者のアサインが必要
- 14. © 2022 TIS Inc. 14
➢ 運用負荷軽減
✓ 可用性を維持しつつ積極的にマネージドサービスを活用
➢ 障害頻度増への備え
✓ アプリ、Cassandra停止時はAWSの機能により自動復旧
➢ 大規模障害への備え
✓ マルチAZ、マルチリージョン構成
✓ リージョン障害時は1時間以内で切替
Lernaを適用したシステムの構成:AWS版<改>
AWS Cloud
Tokyo Region
AZa
AZd
AZc
アプリ
AWS
Fargate
Cassandra RDB
Amazon
Aurora
Auto Scaling group
Amazon EC2
API Gateway
Network Load
Balancer
Osaka Region
AZa
AZc
AZb
アプリ
AWS
Fargate
Cassandra RDB
Amazon
Aurora
Auto Scaling group
Amazon EC2
API Gateway
Network Load
Balancer
Route 53
外部接続先
東京
データ
センター
AWS
Cloud
外部
システム
Design for Failure
- 15. © 2022 TIS Inc. 15
Akkaクラスタ
ポイント 1/2:アプリケーションを Amazon EC2 から コンテナへ
AZa
ECS サービス
Tokyo Region
AWS Fargate
AZc
AWS Fargate
AZd
AWS Fargate
➢ アプリケーションがダウンしたときにECSサービスを自動回復
✓ 回復後にAZの偏りが発生しない
✓ Akkaクラスタへの再ジョインとApache Cassandraからの状態回復はアプリレイヤで行う
- 16. © 2022 TIS Inc. 16
ポイント 2/2:Apache CassandraをAWS上で運用
➢ Amazon DynamoDB/Amazon Keyspaces の導入は断念
➢ Amazon EC2停止時はAuto Scaling Groupで自動復旧
✓ IP変更なし
✓ ディスクアタッチ
- 17. © 2022 TIS Inc. 17
解決した課題
➢ 当初の課題
✓ 高可用サービスを実現するサーバーが高価でサービスの維持が困難
◎ ソフトウェアレイヤーで実現することでハードウェア費用を削減
✓ ハードウェア調達のリードタイムが事業成長スピードを阻害している
◎ AWSにより調達スピードアップ
✓ 上記の課題を解決すべく、クラウドへシフトしたいがSLOを達成できない
◎ 障害時、高速にフェイルオーバーする「Lerna」により達成
➢ もうひとつの課題 New!
✓ ミドルウェアの運用負荷が高く、かつ、有識者のアサインが必要
◎ マネージドサービスの活用と自動復旧により運用負荷を削減
LernaによりSLOを実現し、AWSを活かし運用負荷を最適化
コスト削減
拡張性
高可用性
運用負荷軽減
- 18. © 2022 TIS Inc. 18
➢ Lernaをはじめるには
✓ TISインテックグループの開発ノウハウ集約サイト『Fintan』へ AWSに関するノウハウ多数公開中!
https://fintan.jp/page/503/
➢ (事例)決済統合GW
✓ さまざまな決済手段へ、スピーディーに接続できるゲートウェイサービス
✓ QR決済など大量アクセスが発生しかつ高可用性が求められるサービス向けAPI提供
現在、外部公開に向けて準備中!
OSS Lerna の活用に向けて
決済事業者A
各種サービス
決済事業者C
決済統合GW
決済事業者B
銀行
クレジット
- 19. © 2022 TIS Inc. 19
目次
はじめに
1
プロジェクト概要
2
SLO実現のためのアプローチ1:ソフトウェア
3
SLO実現のためのアプローチ2:AWS
4
さいごに
5
- 20. © 2022 TIS Inc. 20
✓ 東阪マルチリージョン構成とすることで高可用なシステムを実現
リージョン障害が発生した際にも安定して稼働
AWS Cloud
Tokyo Region
AZa
AZd
AZc
アプリ
AWS
Fargate
Cassandra RDB
Amazon
Aurora
Auto Scaling group
Amazon EC2
API Gateway
Network Load
Balancer
Osaka Region
AZa
AZc
AZb
アプリ
AWS
Fargate
Cassandra RDB
Amazon
Aurora
Auto Scaling group
Amazon EC2
API Gateway
Network Load
Balancer
Route 53
外部接続先
東京
データ
センター
AWS
Cloud
外部
システム
①東阪で同等の構成
(Act-Stb構成)
②Cassandraの機能でデータ同期
・AZ間はリアルタイム
・リージョン間は非同期
③Aurora Global Databaseで
リージョン間でのデータ同期
マルチリージョン構成
- 21. © 2022 TIS Inc. 21
AWSを活用して、以下の保守運用作業の効率化を実現
➢ PCI DSS準拠
PAYCIERGE 高セキュリティクラウド基盤サービスを利用することで実現
➢ AWSのマネージドサービスを活用することで安価に自動運用を実現
✓ 無停止ローリングアップデートツール
✓ リージョン切り替え・切り戻しツール
保守運用作業の高度化
- 22. © 2022 TIS Inc. 22
✓ ミドルウェアの運用負荷が高く、かつ、有識者のアサインが必要
例えば、Cassandraの無停止ローリングアップデートやリージョン切り替えでは
それぞれ以下の作業が必要
①AMIの取得
②起動テンプレート新規バージョンの
作成
③既存EC2インスタンスの停止
④新規インスタンスの状態確認
Cassandra無停止ローリングアップデート
①東阪NW分離
※東京リージョンの状態が不明のため
強制的に分離
②東阪Cassandraの分離
③東阪Auroraの分離
④アプリ起動
⑤DNS切り替え
リージョン切り替え
AWSを活用して実装した自動運用
Lerna・AWSどちらの知識も必要
⇒個人のスキルに依存せず、負荷を低減させる仕組みを構築する必要がある
- 23. © 2022 TIS Inc. 23
✓ Cassandra無停止ローリングアップデートのうち、赤枠部分を自動化
✓ IP固定化、EBSボリュームの再利用も自動化
✓ Step Functionsをフル活用、コーディングを最小限にすることで初期構築コストも最小限に
✓ Akkaの無停止ローリングアップデートも同様にStep Functionsで実装
Amazon EC2
AWS Systems Manager
AWS Step Functions workflow
Amazon EC2
①AMIの取得
②起動テンプレート新規バージョンの
作成
③既存EC2インスタンスの停止
④新規インスタンスの状態確認
Cassandra無停止ローリングアップデート
起動テンプレート新規バージョン
作成
既存EC2インスタンス停止
⇒Auto Scalingにより
新規EC2インスタンス起動
RunCommandによる
コマンド実行で
新規EC2インスタンスの
Cassandra状態確認
Cassandra無停止ローリングアップデートの自動化
Cassandraの特性を踏まえた無停止アップデートを自動化
- 24. © 2022 TIS Inc. 24
✓ リージョン切り替えのうち、赤枠部分を自動化
✓ Step Functionsをフル活用、コーディングを最小限にすることで初期コストも最小限に
✓ 切り戻しについても同様にStep Functionsで実装
①東阪NW分離
②東阪Cassandraの分離
③東阪Auroraの分離
④アプリ起動
⑤DNS切り替え
リージョン切り替え
AWS Step Functions workflow
東京リージョンを強制的に
切り離すためNACL変更
RunCommandによる
コマンド実行で
東阪Cassandra分離
東阪Auroraを分離
Amazon VPC
AWS Systems Manager
Amazon RDS
Amazon ECS
大阪リージョンで
アプリ起動
リージョン切り替えの自動化
運用オペレータによる短時間(1時間以内)での切替を実現
- 25. © 2022 TIS Inc. 25
目次
はじめに
1
SLO実現のためのアプローチ1:ソフトウェア
3
SLO実現のためのアプローチ2:AWS
4
さいごに
5
プロジェクト概要
2
- 26. © 2022 TIS Inc. 26
まとめ 1/2
➢ AWS上で高可用性サービスを構築するための2つのアプローチ
✓ アプリケーション
Lernaの活用により、高可用性と費用削減を達成
✓ インフラ
AWSのアーキテクチャを活用した高可用なインフラを実現
マネージドサービスをフル活用し、保守運用作業の自動化
✓ クラウドのメリットを享受した高可用なサービスを実現
✓ 各種自動化の実装により高品質なサービスを低価格で提供
- 27. © 2022 TIS Inc. 27
更なる高可用性とサービス品質の向上により
ミッションクリティカルなシステムでのAWS利用を当たり前に
まとめ 2/2
➢ 今後のチャレンジ
✓ リージョン切り替えを含めたさらなる自動化
個人のスキルに依存せず負荷低減、サービス品質向上などより本質的な部分へ注力
✓ 環境構築の横展開
新たなサービスをスピーディーにお客様へ提供
✓ カオスエンジニアリングによる耐障害性の強化(12月末Fintan公開)
高可用なシステムの品質向上