SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
レッドハット株式会社

シニアソリューションアーキテクト 松田 絵里奈

Cloud Nativeを見据えた

アプリケーションアーキテクチャと

レガシーモダナイゼーション

1
Copyright 2020 Red Hat K.K.2
本セッションでお話すること

レガシーアプリケーションを

クラウドネイティブなアプリケーションに移行する際の

重要なポイントとおすすめの移行方法

Copyright 2020 Red Hat K.K.
クラウドネイティブ・アプリケーションとは

3
● 疎結合された小型の独立したサービスの集合

● アプリケーション構築とアップデートを迅速化し、ビジネスニーズに素早く対応可能

素早くデプロイ シンプルなコード
スケーラブル迅速なアプリケーション開発
Copyright 2020 Red Hat K.K.4
立ちはだかる壁

● モノリシックなアプリケーションをどう分割するか?

● 長きにわたるメンテナンスによりコードがスパゲティ状態

● ドキュメント未整備のためブラックボックス化

● ウォーターフォール開発から脱却しなければとは思うが、経験がない





    さて、どうする?

Copyright 2020 Red Hat K.K.5
レガシーアプリモダナイズ上の検討事項

● どのようなアーキテクチャにすべきか

● 製品・ツールの選定

● 開発方法・開発体制の変更

● 移行方法の検討(画面、データ、ロジック)

● 移行スケジュールの検討(移行単位、一括か逐次か等)



Copyright 2020 Red Hat K.K.6
レガシーアプリモダナイズ上の検討事項

● どのようなアーキテクチャにすべきか

● 製品・ツールの選定

● 開発方法・開発体制の変更

● 移行方法の検討(画面、データ、ロジック)

● 移行スケジュールの検討(移行単位、一括か逐次か等)



本日の注目ポイント



(残りは別の回にて)
7
“ルール駆動開発”のおすすめ

Copyright 2020 Red Hat K.K.8
“ルール駆動開発”の3つの特長

● ルール(ロジック)とデータアクセスを完全分割

● 業務目線でルールを整理し、そのまま実装

● 小さく作ってはテストを繰り返す、イテレーション開発



モノリシックなシステムの分割指針

どのようなアーキテクチャにすべきか
9
Copyright 2020 Red Hat K.K.10
マイクロサービス化とは言うけれど・・・

What is
MICROSERVICE?
Copyright 2020 Red Hat K.K.
画面
ロジック
フロー
データ
アプリケーション
連携
ロジック プロセス
データ
アクセス
他シス連
携
画面
データ
モノリシックで

スパゲッティ

画面・ロジック・プロセス・データアクセスという役割ごとにサービス化し、そ
れらをサービス連携するアーキテクチャにする

画面・ロジック・プロセス・データを分離
することで



✔ スパゲッティの解消

✔ メンテナンス性の向上

✔ Water Fallから繰返し開発方式へ

✔ 開発生産性の向上

✔ 分散環境に対応

11
役割ごとにサービス化する

Copyright 2020 Red Hat K.K.12
ロジックとデータアクセスの混在がスパゲティ化の原因

ロジックとデータアクセスが混在する従来のプログラム例

DB参照を繰り返しながら、ロ
ジックが走る。
Copyright 2020 Red Hat K.K.
デシジョンサービス

データサービス

13
ロジックはデシジョンサービスとして分離する

ルール
連携サービス

社員
給与
データ

取得
ルール

実行

データ
格納

チェック

勤務時間計算

休日深夜出勤



• デシジョンサービスで必要な
データは、あらかじめDBに問
合せをしてデータを取得し、呼
び出し時に一括で渡す。



• デシジョンサービスからはDBを
直接参照させない。



画面
画面
申請
シフト
休日データ
結果
ルールエンジンを利用する

ルール駆動開発に欠かせないツール
14
Copyright 2020 Red Hat K.K.15
ルール駆動開発にはルールエンジンの利用が最適











● BRMS(Business Rule Management System)、ルールベースAI

● ロジック(ルール)をアプリケーションから分離し別管理

● 複雑なロジックをシンプルに記述可能

● 業務担当者にも理解可能な、直感的なルール実装が可能

● ルールをすぐにRESTサービスとして実行できるサーバ機能を提供

Copyright 2020 Red Hat K.K.16
Rete アルゴリズム (since 1974〜) がベース。

ルール条件に一致するデータを高速で検索(パターンマッチング)し、一致したルールをアジェンダに登
録し、自動的に実行する。

























Red Hat Decision Managerのアルゴリズム

ルールエンジン

パターン

マッチング
アジェンダ登録
ルール

ルール

ルール

データ
 データ

データ
 データ

データ
 データ

データはJavaオブジェ
クトとして渡す
条件
  ○○ならば
アクション
  △△する
実行
Copyright 2020 Red Hat K.K.
★デシジョンテーブルを利用したルール実装例
17
わかりやすいルール記述が可能

If (member.getRank() == “C”
|| member.getRank)) == “D”
|| memer.getRank() == “E”) {
If (cart.getAmount() >= 3000) {
cart.setDiscountRate(0.05) ;
}
} Else If (member.getRank() == “A” ||
member.getRank() == “B”) {

cart.setDiscountRate(0.08);
}
If (cart.getAmount() >= 100000 {
cart.setDiscountRate(0.1);
cart.setShippingFee(0);

}
・・・

通常プログラミングの例
• わかりやすい!

• ルールが可視化!

• メンテナンスが容易!
※Red Hat Decision Managerの技術詳細は、以下のURLのトレーニング資料を参照ください。



http://redhat.lookbookhq.com/rhdm_handson2019/

ロジックの移行を無駄なく迅速に行う
方法

ロジックの移行方法と開発方法
18
?
Copyright 2020 Red Hat K.K.19
現行コードの解析から始めるのはNG

現行プログラムコードにありがちな罠

▸ 継ぎ足し継ぎ足し、秘伝のタレ状態

・ その場しのぎの改修

・ リファクタリングされていない冗長なコード



▸ 不要なゴミコードの山

・ 不要かどうかはコードからは不明

・ ゴミの移行に時間とお金をかけることに

40%
60%
Copyright 2020 Red Hat K.K.20
知ってる人に聞くのが一番の近道

• 知りたいことは業務用件=業務ルール



• 1から10まで聞く必要はない

(そもそも知っている人はいない)



• 誰でも知ってる基本的なルールから



• 業務マニュアルや業務フロー図など、設計書とは別に業務
がわかる資料があることもある

Copyright 2020 Red Hat K.K.
キャンペーン割
引判定
カート情報
会員ランク
値引率判定
キャンペーン情報
受注金額計算
値引額算出
商品価格マスタ
手数料算出
請求金額算出
送料算出
判定ロジック
データ
21
ヒアリング内容をDMNで整理

DMN(Decision Model and Notation)
業務ルールの国際記法
手数料マスタ
業務用語で書くこと!
Copyright 2020 Red Hat K.K.
キャンペーン割
引判定
カート情報
会員ランク
値引率判定
キャンペーン情報
受注金額計算
値引額算出
商品価格マスタ
手数料算出
請求金額算出
送料算出
22
一連の業務ルールを”サービス”として切り出す

「請求金額算出」デシジョンサービス



<インプット>
• 商品価格マスタ

• カート情報

• 会員ランク

• キャンペーン情報



<アウトプット>
• 請求金額(手数料、送料、値引額)



途中の判定で必要になるデータは、あらかじめ
取得して渡すようにする
Copyright 2020 Red Hat K.K.23
ルール詳細を実装していく

ルールは「〇〇ならば、▲▲する」という条件とアクションのみを記述する。

処理の順序やデータの並び替えなどは、基本的に記述の必要がないため、業務ルールにフォーカスしたシンプルかつわかりやすい実装が
可能になる。

値引率判定
受注金額計算
送料算出
Copyright 2020 Red Hat K.K.24
小さく作ってテストを繰り返しながらルールを育てていく





誰でも知ってる基本ルールをまず
実装してテスト

不一致箇所について、調査し
ルールを追加してテスト

必要なルールがすべて揃った状
態

まず根幹を形作る。そして本当に必要なルールだけを追加していく。
Copyright 2020 Red Hat K.K.
業務ルール

業務ナレッジ
 ルールの作成

入力データ

(過去の入力)

期待値

(過去の出力)

実行結果

テスト結果

業務担当者

テスト

25
ルールのイテレーション開発

デシジョンサービス単位で、新旧一致テストを繰り返し、ルールの精度を高速にあげていくテスト手法

フィードバック
Copyright 2020 Red Hat K.K.26
イテレーション開発の例

要件把握

新アーキテ
クチャ設計

プロトタ
イプ実装
イテレーション開発
解析・要件定義 設計・開発 テスト
ウォーターフォール開発 

● 現行システムの概
要把握
● 現行業務の概要把
握
● 現行ソースの詳細
解析は行わない
● サービス分割した新アーキ
テクチャに落とし込む
● 一部機能について、プロトタ
イピングを実施。新アーキテ
クチャの実現可能性を確認
● 開発効率の測定
● 性能基礎値の測定
● 開発標準の策定 など
イテレーション開発

● 数週間のスプリントで、各サービス単
位に開発/テスト/ユーザレビューを
繰り返しながら進めていく。
● 進むにつれて対象範囲を広げ、それ
ぞれのサービスを結合しながらテス
トとフィードバックを繰り返す
Copyright 2020 Red Hat K.K.27
正しいルール駆動開発


 



• システム担当と業務担当が協同で行う



• 現行コードは見ない



• 業務担当者が理解できる形式で実装



• 幹となるルールから抽出



• テストおよびユーザレビューを繰り返しながら
品質向上



• システム担当だけで行う



• 現行コードや設計書から読み解く



• システム担当がコードで実装



• 現行の全ての要件を最初に抽出



• ユーザレビューはユーザテストの時まで行われな
い



正しい 間違い
Copyright 2020 Red Hat K.K.
項目名 Red Hat 製品名
アプリケーションロジック Red Hat Decision Manager
業務プロセスの進捗管理 Red Hat Process Automation Manager
分散環境におけるデータの管理 Red Hat A-MQ
システムの並行稼動
(データの分流・新旧データ突合)
Red Hat Fuse
Red Hat Decision Manager
サービス連携におけるトランザクション管理 Red Hat Fuse
API管理によるアクセス制御 Red Hat 3Scale API Management
Web Application Server Red Hat JBoss EAP
コンテナ化したアプリケーションのデプロイ・運用の簡素化 Red Hat OpenShift Container Platform
大量バッチ処理の高速化 Red Hat JBoss Data Grid
シングルサインオン環境 Red Hat Single Sign-On
技術支援 Global Professional Service
28
移行におけるRed Hat製品の役割例

Copyright 2020 Red Hat K.K.29
Red Hat製品マッピング例

連携
ロジック
プロセス
データ
アクセス
他シス連
携
画面
データ
Red Hat Fuse
Red Hat Decision
Manager
Red Hat Process
Automation Manager
Red Hat A-MQ
Red Hat Data Grid
Red Hat OpenShift Container Platform
Copyright 2020 Red Hat K.K.30
まとめ

レガシーアプリのモダナイズには“ルール駆動開発”

● データアクセスとルールを完全分離。改修コストが下がり、ビジネスアジリティが向上。スケーラブルでクラウ
ドネイティブなアーキテクチャに。

● 現行コードからではなく業務ルールからのアプローチで、無駄を省いたロジックの移行が可能

● ルールエンジンの利用により、複雑なロジックがシンプル化。

● 実装→テストを繰り返す開発により、ソフトウェアの品質向上。


Más contenido relacionado

La actualidad más candente

新たなビジネスにおけるデータ活用 ~小田急電鉄のローカル・コミュニティ活性化アプリ「KYOUDOKO」の場合~(2021/9/15)
新たなビジネスにおけるデータ活用 ~小田急電鉄のローカル・コミュニティ活性化アプリ「KYOUDOKO」の場合~(2021/9/15)新たなビジネスにおけるデータ活用 ~小田急電鉄のローカル・コミュニティ活性化アプリ「KYOUDOKO」の場合~(2021/9/15)
新たなビジネスにおけるデータ活用 ~小田急電鉄のローカル・コミュニティ活性化アプリ「KYOUDOKO」の場合~(2021/9/15)
オラクルエンジニア通信
 

La actualidad más candente (20)

【Japan Partner Conference 2019】2025 年の崖を克服! 「Microsoft Dynamics 365 x Power P...
【Japan Partner Conference 2019】2025 年の崖を克服! 「Microsoft Dynamics 365 x Power P...【Japan Partner Conference 2019】2025 年の崖を克服! 「Microsoft Dynamics 365 x Power P...
【Japan Partner Conference 2019】2025 年の崖を克服! 「Microsoft Dynamics 365 x Power P...
 
新たなビジネスにおけるデータ活用 ~小田急電鉄のローカル・コミュニティ活性化アプリ「KYOUDOKO」の場合~(2021/9/15)
新たなビジネスにおけるデータ活用 ~小田急電鉄のローカル・コミュニティ活性化アプリ「KYOUDOKO」の場合~(2021/9/15)新たなビジネスにおけるデータ活用 ~小田急電鉄のローカル・コミュニティ活性化アプリ「KYOUDOKO」の場合~(2021/9/15)
新たなビジネスにおけるデータ活用 ~小田急電鉄のローカル・コミュニティ活性化アプリ「KYOUDOKO」の場合~(2021/9/15)
 
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
 
KongHQ Summit Japan 2021
KongHQ Summit Japan 2021KongHQ Summit Japan 2021
KongHQ Summit Japan 2021
 
OutSystems 新機能紹介: Reactive Web
OutSystems 新機能紹介: Reactive WebOutSystems 新機能紹介: Reactive Web
OutSystems 新機能紹介: Reactive Web
 
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
 
JPC2017 [D1-1] MS HoloLens と MS Azure で実現する製造業における経営の意思決定変革
JPC2017 [D1-1] MS HoloLens と MS Azure で実現する製造業における経営の意思決定変革JPC2017 [D1-1] MS HoloLens と MS Azure で実現する製造業における経営の意思決定変革
JPC2017 [D1-1] MS HoloLens と MS Azure で実現する製造業における経営の意思決定変革
 
Developers Summit 2018 | IoTサービスを始める際に必要なこととは
Developers Summit 2018 | IoTサービスを始める際に必要なこととはDevelopers Summit 2018 | IoTサービスを始める際に必要なこととは
Developers Summit 2018 | IoTサービスを始める際に必要なこととは
 
会社紹介
会社紹介会社紹介
会社紹介
 
MongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&AtlasMongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&Atlas
 
HCL Leap 概説
HCL Leap 概説HCL Leap 概説
HCL Leap 概説
 
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようEinsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみよう
 
CSP パートナー向け向け Azure マネージド サービス プレイブック
CSP パートナー向け向け Azure マネージド サービス プレイブックCSP パートナー向け向け Azure マネージド サービス プレイブック
CSP パートナー向け向け Azure マネージド サービス プレイブック
 
OutSystems ユーザー会 セッション資料
OutSystems ユーザー会 セッション資料OutSystems ユーザー会 セッション資料
OutSystems ユーザー会 セッション資料
 
JPC2017 [A3] CSP as a Transformation Platform
JPC2017 [A3] CSP as a Transformation PlatformJPC2017 [A3] CSP as a Transformation Platform
JPC2017 [A3] CSP as a Transformation Platform
 
Qlik TechFest C-7 QlikWorld 2021の顧客事例ハイライト
Qlik TechFest C-7 QlikWorld 2021の顧客事例ハイライトQlik TechFest C-7 QlikWorld 2021の顧客事例ハイライト
Qlik TechFest C-7 QlikWorld 2021の顧客事例ハイライト
 
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法についてSalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
SalesforceにおけるCDC(変更データキャプチャ)の実装・活用法について
 
【Japan Partner Conference 2019】Microsoft Surface で広がるビジネス機会 ~Microsoft 365 の魅...
【Japan Partner Conference 2019】Microsoft Surface で広がるビジネス機会 ~Microsoft 365 の魅...【Japan Partner Conference 2019】Microsoft Surface で広がるビジネス機会 ~Microsoft 365 の魅...
【Japan Partner Conference 2019】Microsoft Surface で広がるビジネス機会 ~Microsoft 365 の魅...
 
LLL ASIA 会社・サービス紹介資料 ver2.1
LLL ASIA 会社・サービス紹介資料 ver2.1LLL ASIA 会社・サービス紹介資料 ver2.1
LLL ASIA 会社・サービス紹介資料 ver2.1
 
Cloud enablement desk説明資料
Cloud enablement desk説明資料Cloud enablement desk説明資料
Cloud enablement desk説明資料
 

Similar a Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーション

Hybrid Sourcing Service [evelink] by CSK Serviceware
Hybrid Sourcing Service [evelink] by CSK ServicewareHybrid Sourcing Service [evelink] by CSK Serviceware
Hybrid Sourcing Service [evelink] by CSK Serviceware
Intelligence, Ltd.
 
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
オラクルエンジニア通信
 
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRMMSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
kumo2010
 

Similar a Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーション (20)

【de:code 2020】 25 年 1,300 社以上の実績をベースにした「リシテア/就業管理クラウドサービス」とそれを支える「デジタルソリューション...
【de:code 2020】 25 年 1,300 社以上の実績をベースにした「リシテア/就業管理クラウドサービス」とそれを支える「デジタルソリューション...【de:code 2020】 25 年 1,300 社以上の実績をベースにした「リシテア/就業管理クラウドサービス」とそれを支える「デジタルソリューション...
【de:code 2020】 25 年 1,300 社以上の実績をベースにした「リシテア/就業管理クラウドサービス」とそれを支える「デジタルソリューション...
 
IDC 電子ブック 『マイクロソフト モダン パートナー シリーズ 2016』パート 1: 成長が期待できるクラウド ビジネス
IDC 電子ブック 『マイクロソフト モダン パートナー シリーズ 2016』パート 1: 成長が期待できるクラウド ビジネスIDC 電子ブック 『マイクロソフト モダン パートナー シリーズ 2016』パート 1: 成長が期待できるクラウド ビジネス
IDC 電子ブック 『マイクロソフト モダン パートナー シリーズ 2016』パート 1: 成長が期待できるクラウド ビジネス
 
成功するパートナー 2.0 (ITソリューションプロバイダーが収益性の高いクラウド事業を構築するために知っておくべきこと、IDC)
成功するパートナー 2.0 (ITソリューションプロバイダーが収益性の高いクラウド事業を構築するために知っておくべきこと、IDC)成功するパートナー 2.0 (ITソリューションプロバイダーが収益性の高いクラウド事業を構築するために知っておくべきこと、IDC)
成功するパートナー 2.0 (ITソリューションプロバイダーが収益性の高いクラウド事業を構築するために知っておくべきこと、IDC)
 
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]プライベートクラウドへの準備はできていますか?[ホワイトペーパー]
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]
 
Open Hybrid Cloudを検討すべき理由.pdf
Open Hybrid Cloudを検討すべき理由.pdfOpen Hybrid Cloudを検討すべき理由.pdf
Open Hybrid Cloudを検討すべき理由.pdf
 
デジタル戦略立案サービス
デジタル戦略立案サービスデジタル戦略立案サービス
デジタル戦略立案サービス
 
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」 Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」
 
Hybrid Sourcing Service [evelink] by CSK Serviceware
Hybrid Sourcing Service [evelink] by CSK ServicewareHybrid Sourcing Service [evelink] by CSK Serviceware
Hybrid Sourcing Service [evelink] by CSK Serviceware
 
ハイブリッドソーシング 「evelink」 ご紹介資料
ハイブリッドソーシング 「evelink」 ご紹介資料ハイブリッドソーシング 「evelink」 ご紹介資料
ハイブリッドソーシング 「evelink」 ご紹介資料
 
【de:code 2020】 ハイブリッド プラットフォームの最新動向を知る
【de:code 2020】 ハイブリッド プラットフォームの最新動向を知る【de:code 2020】 ハイブリッド プラットフォームの最新動向を知る
【de:code 2020】 ハイブリッド プラットフォームの最新動向を知る
 
ERPのデータをフロントシステムでどう活かすか
ERPのデータをフロントシステムでどう活かすかERPのデータをフロントシステムでどう活かすか
ERPのデータをフロントシステムでどう活かすか
 
2022年3月期決算プレゼンテーション
2022年3月期決算プレゼンテーション2022年3月期決算プレゼンテーション
2022年3月期決算プレゼンテーション
 
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
 
クラウド座談会資料
クラウド座談会資料クラウド座談会資料
クラウド座談会資料
 
LiBRA 07.2020 / cloud
LiBRA 07.2020 / cloudLiBRA 07.2020 / cloud
LiBRA 07.2020 / cloud
 
製造業のDX最新動向、 ハノーバーメッセでマイクロソフトが伝えたこと。
製造業のDX最新動向、 ハノーバーメッセでマイクロソフトが伝えたこと。製造業のDX最新動向、 ハノーバーメッセでマイクロソフトが伝えたこと。
製造業のDX最新動向、 ハノーバーメッセでマイクロソフトが伝えたこと。
 
LiBRA 08.2020 / クラウド・コンピューティング
LiBRA 08.2020 / クラウド・コンピューティングLiBRA 08.2020 / クラウド・コンピューティング
LiBRA 08.2020 / クラウド・コンピューティング
 
LiBRA 09.2020 / クラウド・コンピューティング
LiBRA 09.2020 / クラウド・コンピューティングLiBRA 09.2020 / クラウド・コンピューティング
LiBRA 09.2020 / クラウド・コンピューティング
 
企業の生産性とクラウドの活用_202205.pptx
企業の生産性とクラウドの活用_202205.pptx企業の生産性とクラウドの活用_202205.pptx
企業の生産性とクラウドの活用_202205.pptx
 
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRMMSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
 

Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーション

  • 2. Copyright 2020 Red Hat K.K.2 本セッションでお話すること
 レガシーアプリケーションを
 クラウドネイティブなアプリケーションに移行する際の
 重要なポイントとおすすめの移行方法

  • 3. Copyright 2020 Red Hat K.K. クラウドネイティブ・アプリケーションとは
 3 ● 疎結合された小型の独立したサービスの集合
 ● アプリケーション構築とアップデートを迅速化し、ビジネスニーズに素早く対応可能
 素早くデプロイ シンプルなコード スケーラブル迅速なアプリケーション開発
  • 4. Copyright 2020 Red Hat K.K.4 立ちはだかる壁
 ● モノリシックなアプリケーションをどう分割するか?
 ● 長きにわたるメンテナンスによりコードがスパゲティ状態
 ● ドキュメント未整備のためブラックボックス化
 ● ウォーターフォール開発から脱却しなければとは思うが、経験がない
 
 
     さて、どうする?

  • 5. Copyright 2020 Red Hat K.K.5 レガシーアプリモダナイズ上の検討事項
 ● どのようなアーキテクチャにすべきか
 ● 製品・ツールの選定
 ● 開発方法・開発体制の変更
 ● 移行方法の検討(画面、データ、ロジック)
 ● 移行スケジュールの検討(移行単位、一括か逐次か等)
 

  • 6. Copyright 2020 Red Hat K.K.6 レガシーアプリモダナイズ上の検討事項
 ● どのようなアーキテクチャにすべきか
 ● 製品・ツールの選定
 ● 開発方法・開発体制の変更
 ● 移行方法の検討(画面、データ、ロジック)
 ● 移行スケジュールの検討(移行単位、一括か逐次か等)
 
 本日の注目ポイント
 
 (残りは別の回にて)
  • 8. Copyright 2020 Red Hat K.K.8 “ルール駆動開発”の3つの特長
 ● ルール(ロジック)とデータアクセスを完全分割
 ● 業務目線でルールを整理し、そのまま実装
 ● 小さく作ってはテストを繰り返す、イテレーション開発
 

  • 10. Copyright 2020 Red Hat K.K.10 マイクロサービス化とは言うけれど・・・
 What is MICROSERVICE?
  • 11. Copyright 2020 Red Hat K.K. 画面 ロジック フロー データ アプリケーション 連携 ロジック プロセス データ アクセス 他シス連 携 画面 データ モノリシックで
 スパゲッティ
 画面・ロジック・プロセス・データアクセスという役割ごとにサービス化し、そ れらをサービス連携するアーキテクチャにする
 画面・ロジック・プロセス・データを分離 することで
 
 ✔ スパゲッティの解消
 ✔ メンテナンス性の向上
 ✔ Water Fallから繰返し開発方式へ
 ✔ 開発生産性の向上
 ✔ 分散環境に対応
 11 役割ごとにサービス化する

  • 12. Copyright 2020 Red Hat K.K.12 ロジックとデータアクセスの混在がスパゲティ化の原因
 ロジックとデータアクセスが混在する従来のプログラム例
 DB参照を繰り返しながら、ロ ジックが走る。
  • 13. Copyright 2020 Red Hat K.K. デシジョンサービス
 データサービス
 13 ロジックはデシジョンサービスとして分離する
 ルール 連携サービス
 社員 給与 データ
 取得 ルール
 実行
 データ 格納
 チェック
 勤務時間計算
 休日深夜出勤
 
 • デシジョンサービスで必要な データは、あらかじめDBに問 合せをしてデータを取得し、呼 び出し時に一括で渡す。
 
 • デシジョンサービスからはDBを 直接参照させない。
 
 画面 画面 申請 シフト 休日データ 結果
  • 15. Copyright 2020 Red Hat K.K.15 ルール駆動開発にはルールエンジンの利用が最適
 
 
 
 
 
 ● BRMS(Business Rule Management System)、ルールベースAI
 ● ロジック(ルール)をアプリケーションから分離し別管理
 ● 複雑なロジックをシンプルに記述可能
 ● 業務担当者にも理解可能な、直感的なルール実装が可能
 ● ルールをすぐにRESTサービスとして実行できるサーバ機能を提供

  • 16. Copyright 2020 Red Hat K.K.16 Rete アルゴリズム (since 1974〜) がベース。
 ルール条件に一致するデータを高速で検索(パターンマッチング)し、一致したルールをアジェンダに登 録し、自動的に実行する。
 
 
 
 
 
 
 
 
 
 
 
 
 Red Hat Decision Managerのアルゴリズム
 ルールエンジン
 パターン
 マッチング アジェンダ登録 ルール
 ルール
 ルール
 データ
 データ
 データ
 データ
 データ
 データ
 データはJavaオブジェ クトとして渡す 条件   ○○ならば アクション   △△する 実行
  • 17. Copyright 2020 Red Hat K.K. ★デシジョンテーブルを利用したルール実装例 17 わかりやすいルール記述が可能
 If (member.getRank() == “C” || member.getRank)) == “D” || memer.getRank() == “E”) { If (cart.getAmount() >= 3000) { cart.setDiscountRate(0.05) ; } } Else If (member.getRank() == “A” || member.getRank() == “B”) {
 cart.setDiscountRate(0.08); } If (cart.getAmount() >= 100000 { cart.setDiscountRate(0.1); cart.setShippingFee(0);
 } ・・・
 通常プログラミングの例 • わかりやすい!
 • ルールが可視化!
 • メンテナンスが容易! ※Red Hat Decision Managerの技術詳細は、以下のURLのトレーニング資料を参照ください。
 
 http://redhat.lookbookhq.com/rhdm_handson2019/

  • 19. Copyright 2020 Red Hat K.K.19 現行コードの解析から始めるのはNG
 現行プログラムコードにありがちな罠
 ▸ 継ぎ足し継ぎ足し、秘伝のタレ状態
 ・ その場しのぎの改修
 ・ リファクタリングされていない冗長なコード
 
 ▸ 不要なゴミコードの山
 ・ 不要かどうかはコードからは不明
 ・ ゴミの移行に時間とお金をかけることに
 40% 60%
  • 20. Copyright 2020 Red Hat K.K.20 知ってる人に聞くのが一番の近道
 • 知りたいことは業務用件=業務ルール
 
 • 1から10まで聞く必要はない
 (そもそも知っている人はいない)
 
 • 誰でも知ってる基本的なルールから
 
 • 業務マニュアルや業務フロー図など、設計書とは別に業務 がわかる資料があることもある

  • 21. Copyright 2020 Red Hat K.K. キャンペーン割 引判定 カート情報 会員ランク 値引率判定 キャンペーン情報 受注金額計算 値引額算出 商品価格マスタ 手数料算出 請求金額算出 送料算出 判定ロジック データ 21 ヒアリング内容をDMNで整理
 DMN(Decision Model and Notation) 業務ルールの国際記法 手数料マスタ 業務用語で書くこと!
  • 22. Copyright 2020 Red Hat K.K. キャンペーン割 引判定 カート情報 会員ランク 値引率判定 キャンペーン情報 受注金額計算 値引額算出 商品価格マスタ 手数料算出 請求金額算出 送料算出 22 一連の業務ルールを”サービス”として切り出す
 「請求金額算出」デシジョンサービス
 
 <インプット> • 商品価格マスタ
 • カート情報
 • 会員ランク
 • キャンペーン情報
 
 <アウトプット> • 請求金額(手数料、送料、値引額)
 
 途中の判定で必要になるデータは、あらかじめ 取得して渡すようにする
  • 23. Copyright 2020 Red Hat K.K.23 ルール詳細を実装していく
 ルールは「〇〇ならば、▲▲する」という条件とアクションのみを記述する。
 処理の順序やデータの並び替えなどは、基本的に記述の必要がないため、業務ルールにフォーカスしたシンプルかつわかりやすい実装が 可能になる。
 値引率判定 受注金額計算 送料算出
  • 24. Copyright 2020 Red Hat K.K.24 小さく作ってテストを繰り返しながらルールを育てていく
 
 
 誰でも知ってる基本ルールをまず 実装してテスト
 不一致箇所について、調査し ルールを追加してテスト
 必要なルールがすべて揃った状 態
 まず根幹を形作る。そして本当に必要なルールだけを追加していく。
  • 25. Copyright 2020 Red Hat K.K. 業務ルール
 業務ナレッジ
 ルールの作成
 入力データ
 (過去の入力)
 期待値
 (過去の出力)
 実行結果
 テスト結果
 業務担当者
 テスト
 25 ルールのイテレーション開発
 デシジョンサービス単位で、新旧一致テストを繰り返し、ルールの精度を高速にあげていくテスト手法
 フィードバック
  • 26. Copyright 2020 Red Hat K.K.26 イテレーション開発の例
 要件把握
 新アーキテ クチャ設計
 プロトタ イプ実装 イテレーション開発 解析・要件定義 設計・開発 テスト ウォーターフォール開発 
 ● 現行システムの概 要把握 ● 現行業務の概要把 握 ● 現行ソースの詳細 解析は行わない ● サービス分割した新アーキ テクチャに落とし込む ● 一部機能について、プロトタ イピングを実施。新アーキテ クチャの実現可能性を確認 ● 開発効率の測定 ● 性能基礎値の測定 ● 開発標準の策定 など イテレーション開発
 ● 数週間のスプリントで、各サービス単 位に開発/テスト/ユーザレビューを 繰り返しながら進めていく。 ● 進むにつれて対象範囲を広げ、それ ぞれのサービスを結合しながらテス トとフィードバックを繰り返す
  • 27. Copyright 2020 Red Hat K.K.27 正しいルール駆動開発
 
 
 
 • システム担当と業務担当が協同で行う
 
 • 現行コードは見ない
 
 • 業務担当者が理解できる形式で実装
 
 • 幹となるルールから抽出
 
 • テストおよびユーザレビューを繰り返しながら 品質向上
 
 • システム担当だけで行う
 
 • 現行コードや設計書から読み解く
 
 • システム担当がコードで実装
 
 • 現行の全ての要件を最初に抽出
 
 • ユーザレビューはユーザテストの時まで行われな い
 
 正しい 間違い
  • 28. Copyright 2020 Red Hat K.K. 項目名 Red Hat 製品名 アプリケーションロジック Red Hat Decision Manager 業務プロセスの進捗管理 Red Hat Process Automation Manager 分散環境におけるデータの管理 Red Hat A-MQ システムの並行稼動 (データの分流・新旧データ突合) Red Hat Fuse Red Hat Decision Manager サービス連携におけるトランザクション管理 Red Hat Fuse API管理によるアクセス制御 Red Hat 3Scale API Management Web Application Server Red Hat JBoss EAP コンテナ化したアプリケーションのデプロイ・運用の簡素化 Red Hat OpenShift Container Platform 大量バッチ処理の高速化 Red Hat JBoss Data Grid シングルサインオン環境 Red Hat Single Sign-On 技術支援 Global Professional Service 28 移行におけるRed Hat製品の役割例

  • 29. Copyright 2020 Red Hat K.K.29 Red Hat製品マッピング例
 連携 ロジック プロセス データ アクセス 他シス連 携 画面 データ Red Hat Fuse Red Hat Decision Manager Red Hat Process Automation Manager Red Hat A-MQ Red Hat Data Grid Red Hat OpenShift Container Platform
  • 30. Copyright 2020 Red Hat K.K.30 まとめ
 レガシーアプリのモダナイズには“ルール駆動開発”
 ● データアクセスとルールを完全分離。改修コストが下がり、ビジネスアジリティが向上。スケーラブルでクラウ ドネイティブなアーキテクチャに。
 ● 現行コードからではなく業務ルールからのアプローチで、無駄を省いたロジックの移行が可能
 ● ルールエンジンの利用により、複雑なロジックがシンプル化。
 ● 実装→テストを繰り返す開発により、ソフトウェアの品質向上。