[レポート] オープンソースを使用してモノリシックアプリケーションを再構築する #OPN210 #reinvent
本記事は、AWS re:Invent 2019 の「OPN210 - Using open source to re-architect monolithic applications」についてレポートします。
セッション情報
スピーカー
- Vadzim Dabravolski - Sr Customer Solutions Manager, Amazon Web Services
- Alan Prestwich - Senior Software Developer, Verizon
セッション概要
Learn how the Verizon Operations Automation team was able to take a monolithic .NET, SSRS, and SQL Server application and re-deploy it in AWS utilizing only open source solutions. To comply with data governance and SOX compliance requirements, the application was re-architected to include only the reporting modules, optimized for AWS, and moved to CentOS EC2 and Amazon RDS MySQL. Required .NET code was kept in-tact, stored procedures updated, schemas converted with AWS Schema Conversion Tool, data was migrated, and 19 on-premise servers were migrated to single EC2 and RDS instances with Auto-scaling Groups.
Verizon Operations Automationチームがどのようにモノリシックな.NET、SSRS、およびSQL Serverアプリケーションを取得し、オープンソースソリューションのみを利用してAWSに再デプロイできたかをご覧ください。 データガバナンスとSOXコンプライアンス要件に準拠するために、アプリケーションは、AWS用に最適化されたレポートモジュールのみを含むように再設計され、CentOS EC2およびAmazon RDS MySQLに移行されました。 必要な.NETコードはそのまま保持され、ストアドプロシージャが更新され、AWS Schema Conversion Toolでスキーマが変換され、データが移行され、19台のオンプレミスサーバーが自動スケーリンググループを使用して単一のEC2およびRDSインスタンスに移行されました。
レポート
アジェンダ
- AWSがオープンソースへの顧客の移行を容易にする方法
- モノリシックな専用アプリケーションを分解するためのベライゾンのアプローチ
- verizonがオープンソースとAWSクラウドに移行する方法
- 質疑応答
鍵となるマイルストーン
AWSがオープンソースへの移行をどのようにサポートするか
by proving open source as a service
AWSが提供しているマネージドサービスで置き換えることができる。
オープンソースプロジェクトへの貢献
変換と移行を簡素化するツールを提供
- オープンソースに移行するツールを提供
- Linuxを使用してライセンスを節約
Verizonでのユースケース
課題
- 高価でレガシーな商用およびモノリシックアプリケーションから、より柔軟で費用対効果の高いソリューションに移行する必要
ユースケース
- ワークロードをマイクロサービスアーキテクチャにリファクタリング
- オープンソースソフトウェアを活用
- AWSクラウドへの移行
分解するか迂回するか
- モノリシックを分解する
- どこでモノリシックを分解できるか?
- アプリケーションの一部のみをリエンジニアリングするか?
- 既存のコードを使用してマイクロサービスまたはREST APIを作成し、作業を削減する
- モノリシックを迂回する
- モノリシックアーキテクチャを分解するためのアプリケーションのリエンジニアリング
- Mode-View-Controller (MVC)
- Microservices, REST API
- 部品を再利用できるか?
アプリケーションの将来を決定する
- アクティブな開発サイクルを使用したアプリケーション
- 時間の経過とともに大きなリターンを伴う高い労力
- 静的長期アプリケーション
- 変更の数を減らしたい
- アプリケーションの廃止
- より大きな変更、しかし労力は少ない
課題を特定する
- 互換性の問題
- ASP.NET on Linux
- データベースの違い
- 独自ソフトウェア x != オープンソース y
- 密結合アプリケーション
- サポートされていないプラットフォーム
- 専門家がいない
- 長年の修正による非構造化コード
- 未知のこと
Verisonでの移行経験
アプリケーションのオープンソースへの移行
- Verison Change Online Product (VCOP)
- 分解および再構築(モノリスを解体)
- 7年間のデータおよびアプリケーションの機能強化
- 廃止。履歴データにアクセスする必要がある
- 可用性メトリックとレポートアプリケーション(Amara)
- ビューを再設計し、バックエンド処理を維持(モノリスを迂回)
- エンタープライズメトリックとレポート
移行
データベース
オンプレミスからRDS MySQLへ移行
コンピュート
EC2(CentOS)をオートスケーリングで構築し移行
アプリケーション
- ASP.NET と C#はApacheとMonoモジュールに移行
- AmaraはWildFly、ReactとJava Restfulサービスに移行
データベースマイグレーション
スキーマコンバージョン
AWS Schema Conversion Tool
- ソースデータベースをターゲットデータベースに自動的に変換
- スキーマ、ビュー、ストアド・プロシージャ、ファンクション
- オンプレミスデータベースは Amazon RDS
- AWS SCTは、アプリケーションコードのSQLも変換
- AWS Workload Qualification Framework (AWS WQF)
- データベースの移行を計画
AWS MDS migration playbooks
Microsoft SQL Server to Amazon Aurora with MySQL Compatibility 456-page guide
- 移行に関しての巨大なガイド
- 自動化のレベルや必要な手作業がわかる
直面したスキーマ変換の課題
- 155テーブル、37ビュー
- クエリのテーブル名の大文字と小文字 (Windows to Linux)
- "SELECT * FROM USERS" vs "SELECT * FROM users"
- MySQLを使用する場合のWindowsからLinux
VCOP ストアドプロシージャの課題
- 必要な手順を特定する
- フォーマットの問題
- たとえば、プロシージャの途中にある「DECLARE」ステートメント
- 多くは1000行、いくつかは10000行以上
- 数百のプロシージャを22のストアドプロシージャと50の関数に削減
- パフォーマンスを向上させるために書き直し
- 1分以上から1秒未満まで
アプリケーションの移行
VCOP
- ほとんどのコードは使用されていなかった
- 検索コードと完全なレコード表示を維持する分割と征服
- 単一の検索ページを書く
- 19台のオンプレミスサーバーから4つのAmazon EC2インスタンス
- Apacheウェブサーバ
- ASP.NETを提供するApache用のMonoモジュール
- サービスまたはスケジュールされたタスクを実行するMono
- Amazon Linux 2 AMI with .NET Core
- The Amazon Linux 2 AMI with .NET Core includes Mono
- Mono 5.18, .NET Framework 4.7.2 (.NET Core 2.2)
Amara
- ビューの再構築
- React と Java JAX-RS (Java API for RESTful Web Services)
- バックエンドのデータ収集をオンプレミスLinuxに移動
- WildFly アプリケーションサーバ
- 15のオンプレミスサーバーから4つのAmazon EC2および2つの共有オンプレミスサーバ
発生した問題
- コード内のパス (Windows "\" vs Linux "/" )
- System.IO.Path.DirectorySeparatorChar(C#)
- java.io.File.pathSeparator (Java)
- ファイルと大文字と小文字の区別
- コードの大文字と小文字を修正
さいごに
WindowsからLinuxへの移行、データベースの移行について実体験に基づく内容のセッションでした。ライセンス費用の削減、オープンソースへの移行をお考えの方には参考になるのではないでしょうか。