Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Copyright © 2018 EXA CORPORATION Drive “exa way”!
F 2 0 1 8EXa o r
umV
alue
既存ウェブシステムのSaaS化とDevOps適用
(株)エクサ テクノロジーイノベーション部
金丸 正憲
2018/11/7
Copyright © 2018 EXA CORPORATION Drive “exa way”!
目次
1. はじめにa. 目的b. 技術分野と実施内容c. ESEC®-EXESとは
2. 既存WebシステムのSaaS化a. 認証方式b. マルチテナント方式c. バッチプロセスのAPI化d. Framework移植
3. DevOpsの適用a. インフラ構築の自動化b. アプリ構築の自動化
4. むすび※本資料に記載されているロゴ、システム名称、 企業名称、製品名称は各社の登録商標または商標です。
1
Copyright © 2018 EXA CORPORATION Drive “exa way”!
1.はじめに
a. 目的b. 技術分野と実施内容c. ESEC®-EXESとは
2
Copyright © 2018 EXA CORPORATION Drive “exa way”!
a) 既存WebシステムSaaS化の目的
今回のお話
オンプレミスな社内資産をSaaS商品化するための技術を蓄積する
実現に向けた進め方
3
Copyright © 2018 EXA CORPORATION Drive “exa way”!
b) 技術分野と実施内容
技術分野 実施内容 状況
1. セキュリティ技術 1) SaaSの非機能要件策定 ◎
2) SAML認証 ◎
3) ADとの連携 ◎
4) セキュアなマルチテナント対応 ◎
5) データ更新のAPI化 ◎
6) F/Wの脆弱性対策 ◎
2.DevOps技術 1) 自動構築ツール/フレームワーク技術 ◎
2) SaaSに適したプロセスフロー ◎
3.API技術 1) SpringFrameworkによるAPI公開用I/Fとアーキテクチャの設計 ◎
2) バッチプロセスのAPI化 ◎
4.フレームワーク技術 1) struts1 から Spring MVCへ移植 ◎
2) Spring 3から4へ移植 ◎
3) iBatis から MyBatis へ移植試行 △
5. 運用 1) DevOpsによる運用 〇
状況凡例◎ 完了○ 実施中△ 試行のみ× 未実施
4
Copyright © 2018 EXA CORPORATION Drive “exa way”!
業務経歴表
②業務経歴管理システム(業歴)
①目標管理システム
目標管理シート
能力開発計画・実績表
・・・
スキルデータ(時系列)
③技術管理システム(技管)
連携
スキル開発計画を連携
④E-ラーニングと研修実績管理システム
Eラーニングシステム
研修実績管理システム
遠隔研修システム
連携育成支援ITシステム
• ①目標管理• ②業務経歴管理• ③技術管理• ④・E-ラーニング
・遠隔研修受講・研修実績管理
レベルを認定スペシャリスト制度
計画
目標管理
P
研鑽OJT、研修、自学
D
点検・評価自己申告と面接
C
合意と改善達成評価と記録
A
③② ④
①③
③
c) EXESとは(1/2) - EXA SE育成プロセスと育成支援ITシステム
EXAEngineersSkill management system
EXES = SE育成プロセス 育成支援ITシステム
ESEC®-EXES (以下EXES)
5
Copyright © 2018 EXA CORPORATION Drive “exa way”!
c) EXESとは(2/2) – 技術管理システム機能概要
1. ダッシュボード表示
2. タイムライン表示
3. レーダーチャート表示
4. スキルセット検索
5. 目標設定と実績評価
6. 運用機能:更新状況の追跡調査
7. 入力を支援するレコメンド機能
本人 室平均 本部平均
技術項目の登録数
登録数の5年間の変化
カテゴリ(技術分類の中分類項目)別に最大値をレーダーチャート表示
技術管理システム機能概要
① ③
②④
6
Copyright © 2018 EXA CORPORATION Drive “exa way”!
2.既存WebシステムのSaaS化
a. 認証方式b. マルチテナント方式c. バッチAPI化d. Framework移植
7
Copyright © 2018 EXA CORPORATION Drive “exa way”!
目的・要求
現行の統合認証システム(AD)をそのまま利用できる
複数のSPがシングルサインオン(SSO)できる
個人情報を外部に置かない
認証方式
イントラネット
エクサ統合認証サーバ(AD)
ユーザー(イントラ)
LDAP
技術管理システム(SP)
業務経歴システム(SP)
フェデレーション方式(SAML)IdPを社内に配置
IdP-SP間はブラウザが中継(redirect)
ADFS(Federation Service)
(IdP)
インターネット
他の社内システム
Trust Circle
Spring Security SAML
Terminologies
SSO: Single Sign On
AD: Active Directory ™ (Microsoft ™)
ADFS: Active Directory ™ Federation Service (Microsoft ™)
IdP: Identification Provider (SAML)
SP: Service Provider (SAML)
Copyright © 2018 EXA CORPORATION Drive “exa way”!
マルチテナンシーモデル
① ② ③
b) マルチテナント方式 (1/3) – マルチテナンシーモデル
Web アプリケーションをマルチテナント型 SaaS ソリューションに変換するマルチテナンシーモデルhttps://www.ibm.com/developerworks/jp/cloud/library/cl-multitenantsaas/
変更工数:大・DBスキーマの変更・アプリの改修
リソースの効率
シングルテナントを並べたもの アプリケーションを統合データベースは独立
Better
使用例:Salseforce
アプリ、DBとも統合
[出典]
目的・要求
マルチテナントを扱えるようにする
各テナントで干渉しない(独立性)
テナント当たりのコストが少ない
アプリの改修が少なくて済むEXESで採用
Copyright © 2018 EXA CORPORATION Drive “exa way”!
モデル② モデル③
b) マルチテナント方式 (2/3) – DBの分離方法
DB DB DBDB
リソース効率/制御の粒度
A B C D
DB単位課金:Heroku PostgreSQL、AWS Aurora PostgreSQL スキーマ単位課金:Bluemix DashDB、AWS Aurora MySQL
データモデル変更不要 データベースを単一にできる
Better/Finer
分離モデル
インスタンス統合DBは独立
インスタンスDBとも独立
EXESで採用
DBは統合スキーマで独立
させる
スキーマ(破線)
データベースオブジェクト
インスタンス
[参考]
DBは分離したままがいい(修正工数を下げたい)
DBは統合したい(テナント単価を下げたい)
矛盾する要求
解決策
Copyright © 2018 EXA CORPORATION Drive “exa way”!
b) マルチテナント方式 (3/3) – アーキテクチャ
全体のアーキテクチャ
t1.war
Apache(WAF+LB)
Tomcat
t2.war
Connection Pools DB2
Java VM
https://foo.com/t1
https://foo.com/t2
特徴• ウェブアクセスは1つのサーバに統一 (必要に応じて負荷分散)
• ソースコードは1つに統合• 実行モジュール(war)はテナント毎にデプロイする(カスタマイズの余地)
• DBはスキーマでテナント別、モジュール別に住みわける
user:t1schema:t1
user:t2schema:t2
11
Copyright © 2018 EXA CORPORATION Drive “exa way”!
Spring Batch を用いた公開用API のアーキテクチャ
c) バッチプロセスのAPI化
利用者
Client
Adaptor
(SpringBatch)
※既存Batch
DB
csvアップロード
Adaptorをキック
既存Batchをキック
ステータスコードを返す
レスポンスステータスコード
を返す
クライアントWeb サーバ DB サーバ
※ 場合によってはBatch サーバ
scpでコピー
CSVデータ
REST API
(SpringMVC)
• API独自の認証機構(API鍵方式)• 自動実行機能
バッチの形式 利用実績
同期型 Shell script (既存shell scriptをそのまま利用可) 人事情報更新、研修実績更新バッチ
Javaプログラム
非同期型 Shell script(既存shell scriptをそのまま利用可)
Javaプログラム 休業者データの投入バッチ
目的・要求
運用者による作業をなくし、ユーザが処理を行える
既存のバッチ処理がそのまま使える
Copyright © 2018 EXA CORPORATION Drive “exa way”!
目的・要求
既存Webアプリで利用する版が古く、脆弱性があるため更新が必須
現在メンテナンスされていて、将来もメンテナンスされそうなフレームワーク
基本的に最新バージョンを使用するが、社内標準があるものは合わせる
d) Framework移植一覧(主なもの)
旧 新 成果
Struts1 SpringMVC • 全画面移植済• EVF2017発表• アセット登録済
Spring Framework 3.2Spring Security 3.2
Spring Framework 4.0Spring Security 4.0
• 移植済• Incidentチケット提供可能
iBatis 2.3 myBatis 3.2 • 着手後移植は見送り• 変更点と工数の調査結果提供可能• SQL injection、CSRFに対応する脆
弱性対策を実施
* 業務履歴管理システムのFrameworkについて業歴システムはWebFrameworkに「Struts2」を利用している。Struts2は、プロジェクト開始当初は、WebPotと同等ということで、移植対象外としていたが、後にStruts2に対するOGNL(Object Graph Navigation Library)インジェクションを利用した攻撃が問題となったため、リクエスト元のIPアドレスを制限することにより、セキュリティ対策とした
13
Copyright © 2018 EXA CORPORATION Drive “exa way”!
DevOpsの適用
a. インフラ構築の自動化b. アプリ構築の自動化
DevOpsといえども、アプリとインフラで目的・要求が異なる為、分けて説明する。
14
Copyright © 2018 EXA CORPORATION Drive “exa way”!
目的・要求
迅速にサービスを立ち上げられる
スケーリングが容易にできる
自動化よる作業効率と品質の向上
セキュリティアップデート適用の迅速化
社内仮
想基版
成果
インフラ構築・変更、テストの自動化• 各環境のOSの設定、ミドルウェアのインストールと設定(Chef)
• OS、ミドルウェアの設定確認(Serverspec)
a) DevOps – インフラ構築・運用の自動化インフラの自動化プロセス
Local PC
Converge(Chef)
Test(Serverspec)
Staging機
Product機
Install, Settings
Testing
Process flow凡例
DB2Apache, Tomcat
DB2Apache, Tomcat
DB2Apache, Tomcat
DB2Apache, Tomcat
IT機
CI/CDサーバ
Integration /
Delivery(Jenkins)
15
Copyright © 2018 EXA CORPORATION Drive “exa way”!
目的・要求
迅速にサービスの変更修正ができる
アジャイルによるCI/CD開発
自動化よる作業効率の向上
テスト工数の大幅削減/品質向上
社内仮
想基版
b) DevOps – アプリの構築・運用の自動化
Local PC
war
Compile(java)
deploy
Test(selenium)
Staging機
Product機
Data Access
Deploy
Browser Control
Web Access
Process flow凡例
DBWeb
Container
DBWeb
Container
DBWeb
Container
DBWeb
Container
IT機
CI/CDサーバ
Integration /
Delivery(Jenkins)
ブラウザ実行環境
成果
ビルド・デプロイ・テストの自動化• 各環境に特化したwarファイルの生成(Gradle)
• 各環境へのデプロイ(Jenkins)
• Seleniumテストの実行環境整備(Selenium-Grid)
• 開発・本番環境の等価性[Environment Parity](Vagrant)
アプリの自動化プロセス
16
Copyright © 2018 EXA CORPORATION Drive “exa way”!
成果物の社内公開状況
むすび
技術分野 資料公開状況
2-a 認証方式 アセット登録済
2-b マルチテナント方式 アセット登録済
2-c バッチAPI化 アセット登録済
2-d FW移植一覧 EVF2017発表資料公開、アセット登録済
3-a3-b
DevOps インフラ:アセット登録済アプリ :アセット登録済
今後の課題– 外部サービスとの連携、API強化
– テナント毎のカスタマイズ方法
現在のステータス
– 運用中(2017/11~現在)
既存のWebシステムからのSaaS化案件があれば支援できます
17
Copyright © 2018 EXA CORPORATION Drive “exa way”!
信頼という底力。
e
aご清聴いただきありがとうございました
18