SlideShare a Scribd company logo
© 2019 NTT DATA Corporation 1 © 2019 NTT DATA Corporation
NTTデータ テクノロジーカンファレンス 2019
NTTデータ流 Infrastructure as Code
~大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~
2019年9月5日
株式会社NTTデータ 技術革新統括本部 佐々木 優太朗
高井 昭人
© 2019 NTT DATA Corporation 2
本日のアジェンダ
1. 自己紹介
2. パラメータシートとは?
3. IaCとは?
4. 今までのパラメータシート×IaC
5. 新方式のパラメータシート×IaC
6. デモ
7. 特徴
8. まとめ
© 2019 NTT DATA Corporation 3
自己紹介 (佐々木 優太朗)
佐々木 優太朗
Sasaki, Yutaro
• 所属
株式会社NTTデータ 技術革新統括本部 システム技術本部
生産技術部 クラウド技術センタ 課長代理
• 技術領域
サーバ仮想化、基盤自動化(Puppet,
Chef, Ansible, Serverspec, Terraform)
• 最近の活動(社外)
PuppetConf 2015/2016 参加
Puppet[設定&管理]活用ガイド 出版
JJUG CCC 2017 Fall 講演
© 2019 NTT DATA Corporation 4
自己紹介(高井 昭人)
高井 昭人
Takai, Akihito
• 所属
株式会社NTTデータ 技術革新統括本部 システム技術本部
生産技術部 クラウド技術センタ 主任
• 経歴
2014年にNTTデータ社に入社。OSSを用いたミッションクリティカルなストレージシステムの運用・保守に従事。2019年から
社内クラウドの基盤構築に携わり今に至る。
• 現在の業務内容
社内自動化ソリューションの開発
社内クラウドへ自動化ソリューションの適用
© 2019 NTT DATA Corporation 5
本講演のスコープ
IaaS
OS
ミドルウェア
アプリケーション
基盤(IaaS, OS, ミドルウェア)領域
© 2019 NTT DATA Corporation 6
基盤の開発で欠かせないものは?
パラメータシート
(略してパラシ)
© 2019 NTT DATA Corporation 7
パラメータシートってどんなもの?
© 2019 NTT DATA Corporation 8
パラメータシートってどんなもの?(詳細)
パラメータ
サーバ毎の
設定値
設定する
対象サーバ
パラメータの
設定方針
パラメータの
意味
© 2019 NTT DATA Corporation 9
パラメータシートの大切な役割①
① "実機の状態"を示す
唯一のドキュメント
© 2019 NTT DATA Corporation 10
パラメータシートの大切な役割①
"実機の状態"は
実機を見れば一番正確なのでは?
© 2019 NTT DATA Corporation 11
パラメータシートの大切な役割①
セキュリティ上の理由から
実機は簡単に触れない (ことが多い)
何週間も前から申請が必要
(ルールですから(キリッ))
手順書通りの作業のみ実施可能
(予定外の作業は許しません)
© 2019 NTT DATA Corporation 12
パラメータシートの大切な役割①
台数が多いと確認が大変
サーバ間で比較するのも大変
ssh…ssh…ssh…
diff…diff…diff…
© 2019 NTT DATA Corporation 13
パラメータシートの大切な役割②
② "設計根拠"を辿る道標
① 実機の状態を示す唯一のドキュメント
© 2019 NTT DATA Corporation 14
パラメータシートの大切な役割②
設定値があれば構築できる
"設計根拠"なんているの?
© 2019 NTT DATA Corporation 15
パラメータシートの大切な役割②
"設計根拠"がないと
設定理由・変更要否が分からない
そもそもこの設定変えていいのか
な?過去の何度も変更されている
けど経緯が全く分からない・・・
(秘伝のタレ状態)
なぜこの設定になっているんだろ?
初期メンバーはもういないし・・・サービス開始から数年後、
急遽、パラメータ変更が
必要になったが・・・
© 2019 NTT DATA Corporation 16
パラメータシートの大切な役割③
③ コミュニケーションツール
② 設計根拠をたどる道標
① 実機の状態を示す唯一のドキュメント
© 2019 NTT DATA Corporation 17
パラメータシートの大切な役割③
開発者と運用者を繋ぐ
ドキュメント
開発者「監視項目
の一覧はこちらに
なります」
運用者「非常に具体
的。解釈の余地が無
くて助かります!」
© 2019 NTT DATA Corporation 18
パラメータシートの大切な役割
まとめ
© 2019 NTT DATA Corporation 19
パラメータシートの大切な役割
パラシは非常に大事!
ポイントは三つ
① 実機の状態を示す唯一のドキュメント
② 設計根拠を辿る道標
③ コミュニケーションツール
© 2019 NTT DATA Corporation 20
パラメータシートの課題
その一方で …
© 2019 NTT DATA Corporation 21
パラメータシートの現実
パラシは厳密さが求められる
運用フェーズでの変更が多い
基本設計書
詳細設計書
パラメータシート
© 2019 NTT DATA Corporation 22
パラメータシートの課題
変更履歴の管理が大変
これは本来バージョン管理で解決すべきもの
→ バージョン管理できるようテキスト化したい
(テキスト化するとIaCと相性が良いはず!)
© 2019 NTT DATA Corporation 23
Infrastructure as Codeとは
そもそも
Infrastructure as Code(IaC)って?
© 2019 NTT DATA Corporation 24
Infrastructure as Codeとは
コード
リポジトリ 自動化管理
サーバ
格納
配置
実行
設定
試験
構築
実行
実行
© 2019 NTT DATA Corporation 25
Infrastructure as Codeとは
コード
リポジトリ 自動化管理
サーバ
格納
配置
実行
設定
試験
構築
実行
実行
基盤(インフラストラクチャ)をコード化し
© 2019 NTT DATA Corporation 26
Infrastructure as Codeとは
コード
リポジトリ 自動化管理
サーバ
格納
配置
実行
設定
試験
構築
実行
実行
バージョン管理しながら
© 2019 NTT DATA Corporation 27
Infrastructure as Codeとは
コード
リポジトリ 自動化管理
サーバ
格納
配置
実行
設定
試験
構築
実行
実行
自動化ツールで自動構築・自動試験
いつ・誰が・どのように実行しても同じ結果
© 2019 NTT DATA Corporation 28
Infrastructure as Codeのメリット
IaCのメリットをまとめると
© 2019 NTT DATA Corporation 29
Infrastructure as Codeのメリット
Q. オペミスのリスク低減
C. 管理コストの削減
D. 迅速な構築・試験
© 2019 NTT DATA Corporation 30
パラシとIaCを連携したい!
さて話は戻りますが
© 2019 NTT DATA Corporation 31
本テーマ
本取組みの重要なポイント
• パラシは大事
• パラシとIaCを連携したい
現状のパラシ×IaCはどうか?
© 2019 NTT DATA Corporation 32
現状のパラシ×IaC
コード
リポジトリ
パラシ
© 2019 NTT DATA Corporation 33
現状のパラシ×IaC
コード
リポジトリ
パラシとコードで
パラメータを二重管理
→ 整合性の維持が大変
パラシ
© 2019 NTT DATA Corporation 34
素朴な改善アイディア
コード
リポジトリ
二重管理が問題なら
パラシから自動で転記
すればいいのでは?
パラシ
© 2019 NTT DATA Corporation 35
パラシ
実際にやってみました
コード
リポジトリ
パラシの統一フォーマットを決め
パラシからコードの変換ツールを
作成したが…
統一フォーマット(Excel)
© 2019 NTT DATA Corporation 36
パラシ
新たな課題が出てきた
コード
リポジトリ
課題 データとビューが一体化しており
パラメータ抽出処理・変換処理が複雑
バージョン管理した際、ビューの
変更も変更履歴の対象になる
統一フォーマット(Excel)
データ要素 ビュー要素
© 2019 NTT DATA Corporation 37
既存パラシに固執する必要はない
データとビューを分離しよう
そこで新たなアイディア
© 2019 NTT DATA Corporation 38
パラシ
そこで新たなアイディア
コード
リポジトリ既存のパラシから
データ要素とビュー要素を分離すると ...
データ要素 ビュー要素
分離
© 2019 NTT DATA Corporation 39
新方式のパラシ×IaC
コード
リポジトリ
データ
テキスト
リポジトリ
一次情報を
リポジトリ管理
動的に生成
シンプルなデータ変換
一次情報をシンプルにしたことで連携が容易
一次情報
ビュー
(パラシ)
© 2019 NTT DATA Corporation 40
パラシ×IaC
以下の違いをまとめます
• 今までのパラシ×IaC
• 新方式のパラシ×IaC
© 2019 NTT DATA Corporation 41
今までのパラシ×IaC
今までの パラシ × IaC
© 2019 NTT DATA Corporation 42
今までのパラシ×IaC
手動 or
自動
コード
リポジトリ 自動化管理
サーバ
格納
配置
実行
設定
試験
構築
パラシ
© 2019 NTT DATA Corporation 43
新方式のパラシ×IaC
新方式の パラシ × IaC
© 2019 NTT DATA Corporation 44
自動化管理
サーバ
新方式のパラシ×IaC
リポジトリ
データ
データ
テキスト
コード
コード
コード +
+
+
データ
格納
配置
変換+実行
一次情報
動的に生成
次にシナリオベースのデモをお見せします
設定
試験
構築
変換+実行
変換+実行
ビュー
(パラシ)
© 2019 NTT DATA Corporation 45
デモ
© 2019 NTT DATA Corporation 46
デモシナリオ
構築済みのサーバの変更要件が来たぞ
新規パッケージ(httpd)を
インストールする必要があるな
© 2019 NTT DATA Corporation 47
デモのシステム構成
構築対象サーバ
(RHEL)
自動化管理サーバ
(RHEL)
作業者サーバ
(Windows)
パラメータファイル編集ツール
リポジトリ
git
※パラメータファイルをもとに
Ansibleを用いて
サーバ構築済み
構築対象サーバの初期構築は完了している状態
Ansible用
Ansible
Playbook
リポジトリ
gitマスタ
パラメータ
ファイル
text
パラメータ
ファイル
text
VBA
© 2019 NTT DATA Corporation 48
設定反映までの流れ【1 / 3】
構築対象サーバ
(RHEL)
自動化管理サーバ
(RHEL)
作業者サーバ
(Windows)
パラメータファイル編集ツール
パラメータファイルを編集
Playbook
手動でパラメータファイルにパッケージ情報
を追加し、リポジトリに登録
リポジトリ
git
リポジトリ
gitマスタ
パラメータ
ファイル
text
パラメータ
ファイル
text
VBA
© 2019 NTT DATA Corporation 49
設定反映までの流れ【2 / 3】
構築対象サーバ
(RHEL)
自動化管理サーバ
(RHEL)
作業者サーバ
(Windows)
Playbook
パラメータファイル編集ツール Ansible
登録をトリガに自動的に対象サーバを変更
Ansible用
データ変換ツール
(Ansible用)
リポジトリ
git
リポジトリ
gitマスタ
パラメータ
ファイル
text
パラメータ
ファイル
text
自動でYAMLに変換され
VBA
© 2019 NTT DATA Corporation 50
設定反映までの流れ【3 / 3】
構築対象サーバ
(RHEL)
自動化管理サーバ
(RHEL)
作業者サーバ
(Windows)
Playbook
パラメータファイル編集ツール
登録をトリガに自動的に対象サーバを変更
Ansible用
データ変換ツール
(Ansible用)
Ansible
+
自動でAnsibleを実行
リポジトリ
git
リポジトリ
gitマスタ
パラメータ
ファイル
text
パラメータ
ファイル
text
VBA
© 2019 NTT DATA Corporation 51
作業者
サーバ
自動化管理
サーバ
構築対象
サーバ
git git
デモ① パラメータファイルのオープン
作業者サーバ上で実行
gitリポジトリ内のパラメータファイルを
専用ツールでオープン
ダブルクリック
★主なポイント
従来のパラメータシートのように
各種パラメータを確認できる
© 2019 NTT DATA Corporation 52
作業者
サーバ
自動化管理
サーバ
構築対象
サーバ
git git
デモ② パラメータファイルの編集
インストールパッケージ情報の箇所に
「httpd」パッケージ情報を追加
★主なポイント
従来の操作感でパラメータを追
加できる
© 2019 NTT DATA Corporation 53
作業者
サーバ
自動化管理
サーバ
構築対象
サーバ
git git
デモ③ パラメータファイルの保存
ctrl + s でパラメータファイルを保存
★主なポイント
変更内容の保存も従来の操作感で
可能
© 2019 NTT DATA Corporation 54
作業者
サーバ
自動化管理
サーバ
構築対象
サーバ
git git
デモ④ 変更差分の確認
git diff コマンドで差分を表示
$ git diff
diff --git a/RHEL74.sdf b/RHEL74.sdf
index 414e98f..274cb53 100644
--- a/RHEL74.sdf
+++ b/RHEL74.sdf
@@ -1340,6 +1340,7 @@ System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::strace-4.12-4.el7.x86_
System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,setting_value,[Yes]
+System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,setting_value,[Yes]
@@ -1351,6 +1352,7 @@ System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::strace-4.12-4.el7.x86_
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,setting_value,[Yes]
+System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,setting_value,[Yes]
@@ -1362,6 +1364,7 @@ System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::strace-4.12-4.el7.x86_
System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,setting_value,[Yes]
+System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes]
-,-,-,-,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,data_type,Boolean(Meta)
-,-,-,-,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,data_type,Boolean(Meta)
-,-,-,-,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,data_type,Boolean(Meta)
@@ -1373,6 +1376,7 @@ System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,s
-,-,-,-,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,data_type,Boolean(Meta)
-,-,-,-,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,data_type,Boolean(Meta)
-,-,-,-,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,data_type,Boolean(Meta)
+-,-,-,-,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,data_type,Boolean(Meta)
-,-,-,-,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,parameter_descripton,パッケージ情報
-,-,-,-,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,parameter_descripton,パッケージ情報
-,-,-,-,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,parameter_descripton,パッケージ情報
…
+System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes]
★主なポイント
変更箇所を機械的に確認できる。
git log を見ることで変更履歴を確認可能
© 2019 NTT DATA Corporation 55
作業者
サーバ
自動化管理
サーバ
構築対象
サーバ
git git
デモ⑤ 変更内容をマージ
自動化管理サーバのリポジトリへ変更内容を
マージ
$ git commit -a -m "add httpd package"
[develop 58fea27] add httpd package
1 file changed, 9 insertions(+)
$ git push origin develop
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
…
* [new branch] develop -> develop
$ git merge develop
Updating 7154d94..58fea27
Fast-forward
RHEL74.sdf | 9 +++++++++
1 file changed, 9 insertions(+)
作業者サーバ上で実行
自動化管理サーバ上で実行
© 2019 NTT DATA Corporation 56
作業者
サーバ
自動化管理
サーバ
構築対象
サーバ
git git
デモ⑥ マージをフックに自動反映
自動化管理サーバのリポジトリへ変更内容を
マージ
$ git commit -a -m "add httpd package"
[develop 58fea27] add httpd package
1 file changed, 9 insertions(+)
$ git push origin develop
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
…
* [new branch] develop -> develop
$ git merge develop
Updating 7154d94..58fea27
Fast-forward
RHEL74.sdf | 9 +++++++++
1 file changed, 9 insertions(+)
作業者サーバ上で実行
自動化管理サーバ上で実行
$ rpm -qa | grep httpd
httpd-2.4.6-67.el7.x86_64
構築対象サーバでは、httpd パッ
ケージがインストールされている
© 2019 NTT DATA Corporation 57
特徴
© 2019 NTT DATA Corporation 58
特徴
• パラメータファイルは従来と同様の操作感で確認・編集可能!
• パラメータの変更箇所は機械的に確認できる!
パラメータ
ファイル
テキスト
$ git diff
diff --git a/RHEL74.sdf b/RHEL74.sdf
index 414e98f..274cb53 100644
--- a/RHEL74.sdf
+++ b/RHEL74.sdf
@@ -1340,6 +1340,7 @@ System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::strace-4.12-4.el7.x86_
System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,setting_value,[Yes]
+System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,setting_value,[Yes]
System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,setting_value,[Yes]
★主なポイント
機械的に差分を残せるため維持管理のコスト減
★主なポイント
テキストを感じさせない従来と同様の操作感
もちろんパラシの役割として活用も可能
© 2019 NTT DATA Corporation 59
特徴(その他)
• 一次情報からコードへ変換する難易度が下がった
パラメータ
ファイル
パラメータ
情報
YAML形式
Ansibleが使用
パラメータ
情報
パラメータ
情報
Key=Value
試験自動化
構築自動化(IaaS層)
YAML形式
Serverspecが使用
Key-Value形式
Terraformが使用
text
構築自動化(OS・ミドル層)
テキストファイルから各種形式への変換ツール
★主なポイント
出力形式のフォーマットが決まっていれ
ば、論理的にはどんな形式でも自動変
換することが可能。
Ansible用データ変換ツール
Serverspec用データ変換ツール
Terraform用データ変換ツール
© 2019 NTT DATA Corporation 60
まとめ
© 2019 NTT DATA Corporation 61
まとめ
 パラメータシートは重要
• 実機の状態を示す唯一のドキュメント
• 設計根拠をたどる道標
• コミュニケーションツール
 パラメータシート×IaCの新たな姿を開発
• パラメータシートをデータとビューに分割
 一次情報(データ)から一気通貫の基盤自動化を実現
© 2019 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

What's hot

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料) by nttdata-tech
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
13.9K views63 slides
Oracleからamazon auroraへの移行にむけて by ssuser634e60
Oracleからamazon auroraへの移行にむけてOracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけて
Yoichi Sai
5.1K views69 slides
なぜ「マイクロサービス“化”」が必要なのか by yusuke
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
Yusuke Suzuki
28.2K views59 slides
20200826 AWS Black Belt Online Seminar AWS CloudFormation by AmazonWebServicesJapan
20200826 AWS Black Belt Online Seminar AWS CloudFormation 20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation
Amazon Web Services Japan
40K views105 slides
Amazon Aurora - Auroraの止まらない進化とその中身 by AmazonWebServicesJapan
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
22.7K views65 slides
20210526 AWS Expert Online マルチアカウント管理の基本 by AmazonWebServicesJapan
20210526 AWS Expert Online マルチアカウント管理の基本20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
Amazon Web Services Japan
16.1K views58 slides
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料) by nttdata-tech
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
4.7K views68 slides
イミュータブルデータモデル(入門編) by kawasima
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
191.6K views24 slides

What's hot (20)

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料) by nttdata-tech
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Oracleからamazon auroraへの移行にむけて by ssuser634e60
Oracleからamazon auroraへの移行にむけてOracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけて
Yoichi Sai5.1K views
なぜ「マイクロサービス“化”」が必要なのか by yusuke
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
Yusuke Suzuki28.2K views
Amazon Aurora - Auroraの止まらない進化とその中身 by AmazonWebServicesJapan
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
20210526 AWS Expert Online マルチアカウント管理の基本 by AmazonWebServicesJapan
20210526 AWS Expert Online マルチアカウント管理の基本20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料) by nttdata-tech
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
イミュータブルデータモデル(入門編) by kawasima
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima191.6K views

Similar to NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)

Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料) by nttdata-tech
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
NTT DATA Technology & Innovation
633 views48 slides
20190915 hayashi nw_jaws by mhayasi
20190915 hayashi nw_jaws 20190915 hayashi nw_jaws
20190915 hayashi nw_jaws
Hayashi Masayuki
718 views30 slides
Aws summit tokyo 2016 by shotaromotomura
Aws summit tokyo 2016Aws summit tokyo 2016
Aws summit tokyo 2016
Shotaro Motomura
9.9K views54 slides
システム間連携を担うSpring Integrationのエンタープライズ開発での活用 by apkiban
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
apkiban
5.8K views61 slides
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く by apkiban
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗くSpring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
apkiban
1.6K views84 slides
Accel series 2019_Winter by open-intra-mart
Accel series 2019_WinterAccel series 2019_Winter
Accel series 2019_Winter
NTTDATA INTRAMART
1.3K views66 slides
Accel series 2020_spring by open-intra-mart
Accel series 2020_springAccel series 2020_spring
Accel series 2020_spring
NTTDATA INTRAMART
181 views66 slides
AIのビジネス実装を成功に近づけるために by renom-user-group
AIのビジネス実装を成功に近づけるためにAIのビジネス実装を成功に近づけるために
AIのビジネス実装を成功に近づけるために
ReNom User Group
338 views20 slides

Similar to NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05) (20)

Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料) by nttdata-tech
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
20190915 hayashi nw_jaws by mhayasi
20190915 hayashi nw_jaws 20190915 hayashi nw_jaws
20190915 hayashi nw_jaws
Hayashi Masayuki718 views
システム間連携を担うSpring Integrationのエンタープライズ開発での活用 by apkiban
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
apkiban5.8K views
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く by apkiban
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗くSpring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
apkiban1.6K views
AIのビジネス実装を成功に近づけるために by renom-user-group
AIのビジネス実装を成功に近づけるためにAIのビジネス実装を成功に近づけるために
AIのビジネス実装を成功に近づけるために
ReNom User Group338 views

Slideshows for you

ビッグデータ処理データベースの全体像と使い分け
2018年version by tetsutarowatanabe
ビッグデータ処理データベースの全体像と使い分け
2018年versionビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年version
Tetsutaro Watanabe
21.5K views59 slides
テスト文字列に「うんこ」と入れるな by ketaiorg
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
257K views16 slides
先駆者に学ぶ MLOpsの実際 by tetsutarowatanabe
先駆者に学ぶ MLOpsの実際先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際
Tetsutaro Watanabe
20.1K views32 slides
Python 3.9からの新定番zoneinfoを使いこなそう by ryu22e
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
8.5K views42 slides
目grep入門 +解説 by murachue
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
murachue
91.6K views83 slides
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 by t_wada
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
154.8K views45 slides
テストコードの DRY と DAMP by YusukeKAGATA1
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
2.9K views11 slides
Marp Tutorial by RuiWatanabe3
Marp TutorialMarp Tutorial
Marp Tutorial
Rui Watanabe
4.2K views15 slides

Slideshows for you (20)

ビッグデータ処理データベースの全体像と使い分け
2018年version by tetsutarowatanabe
ビッグデータ処理データベースの全体像と使い分け
2018年versionビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年version
Tetsutaro Watanabe21.5K views
テスト文字列に「うんこ」と入れるな by ketaiorg
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui257K views
先駆者に学ぶ MLOpsの実際 by tetsutarowatanabe
先駆者に学ぶ MLOpsの実際先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際
Tetsutaro Watanabe20.1K views
Python 3.9からの新定番zoneinfoを使いこなそう by ryu22e
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui8.5K views
目grep入門 +解説 by murachue
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
murachue91.6K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 by t_wada
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada154.8K views
テストコードの DRY と DAMP by YusukeKAGATA1
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata2.9K views

More from NTT DATA Technology & Innovation

PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料) by nttdata-tech
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
37 views49 slides
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料) by nttdata-tech
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
78 views19 slides
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料) by nttdata-tech
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)
NTT DATA Technology & Innovation
51 views22 slides
auto_explainのススメ (第48回 PostgreSQLアンカンファレンス 発表資料) by nttdata-tech
auto_explainのススメ (第48回 PostgreSQLアンカンファレンス 発表資料)auto_explainのススメ (第48回 PostgreSQLアンカンファレンス 発表資料)
auto_explainのススメ (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
74 views16 slides
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料) by nttdata-tech
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
54 views23 slides
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料) by nttdata-tech
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
54 views15 slides
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料) by nttdata-tech
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
310 views18 slides
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料) by nttdata-tech
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
239 views22 slides

More from NTT DATA Technology & Innovation (20)

PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料) by nttdata-tech
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料) by nttdata-tech
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料) by nttdata-tech
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)
auto_explainのススメ (第48回 PostgreSQLアンカンファレンス 発表資料) by nttdata-tech
auto_explainのススメ (第48回 PostgreSQLアンカンファレンス 発表資料)auto_explainのススメ (第48回 PostgreSQLアンカンファレンス 発表資料)
auto_explainのススメ (第48回 PostgreSQLアンカンファレンス 発表資料)
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料) by nttdata-tech
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料) by nttdata-tech
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料) by nttdata-tech
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料) by nttdata-tech
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)

NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)

  • 1. © 2019 NTT DATA Corporation 1 © 2019 NTT DATA Corporation NTTデータ テクノロジーカンファレンス 2019 NTTデータ流 Infrastructure as Code ~大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~ 2019年9月5日 株式会社NTTデータ 技術革新統括本部 佐々木 優太朗 高井 昭人
  • 2. © 2019 NTT DATA Corporation 2 本日のアジェンダ 1. 自己紹介 2. パラメータシートとは? 3. IaCとは? 4. 今までのパラメータシート×IaC 5. 新方式のパラメータシート×IaC 6. デモ 7. 特徴 8. まとめ
  • 3. © 2019 NTT DATA Corporation 3 自己紹介 (佐々木 優太朗) 佐々木 優太朗 Sasaki, Yutaro • 所属 株式会社NTTデータ 技術革新統括本部 システム技術本部 生産技術部 クラウド技術センタ 課長代理 • 技術領域 サーバ仮想化、基盤自動化(Puppet, Chef, Ansible, Serverspec, Terraform) • 最近の活動(社外) PuppetConf 2015/2016 参加 Puppet[設定&管理]活用ガイド 出版 JJUG CCC 2017 Fall 講演
  • 4. © 2019 NTT DATA Corporation 4 自己紹介(高井 昭人) 高井 昭人 Takai, Akihito • 所属 株式会社NTTデータ 技術革新統括本部 システム技術本部 生産技術部 クラウド技術センタ 主任 • 経歴 2014年にNTTデータ社に入社。OSSを用いたミッションクリティカルなストレージシステムの運用・保守に従事。2019年から 社内クラウドの基盤構築に携わり今に至る。 • 現在の業務内容 社内自動化ソリューションの開発 社内クラウドへ自動化ソリューションの適用
  • 5. © 2019 NTT DATA Corporation 5 本講演のスコープ IaaS OS ミドルウェア アプリケーション 基盤(IaaS, OS, ミドルウェア)領域
  • 6. © 2019 NTT DATA Corporation 6 基盤の開発で欠かせないものは? パラメータシート (略してパラシ)
  • 7. © 2019 NTT DATA Corporation 7 パラメータシートってどんなもの?
  • 8. © 2019 NTT DATA Corporation 8 パラメータシートってどんなもの?(詳細) パラメータ サーバ毎の 設定値 設定する 対象サーバ パラメータの 設定方針 パラメータの 意味
  • 9. © 2019 NTT DATA Corporation 9 パラメータシートの大切な役割① ① "実機の状態"を示す 唯一のドキュメント
  • 10. © 2019 NTT DATA Corporation 10 パラメータシートの大切な役割① "実機の状態"は 実機を見れば一番正確なのでは?
  • 11. © 2019 NTT DATA Corporation 11 パラメータシートの大切な役割① セキュリティ上の理由から 実機は簡単に触れない (ことが多い) 何週間も前から申請が必要 (ルールですから(キリッ)) 手順書通りの作業のみ実施可能 (予定外の作業は許しません)
  • 12. © 2019 NTT DATA Corporation 12 パラメータシートの大切な役割① 台数が多いと確認が大変 サーバ間で比較するのも大変 ssh…ssh…ssh… diff…diff…diff…
  • 13. © 2019 NTT DATA Corporation 13 パラメータシートの大切な役割② ② "設計根拠"を辿る道標 ① 実機の状態を示す唯一のドキュメント
  • 14. © 2019 NTT DATA Corporation 14 パラメータシートの大切な役割② 設定値があれば構築できる "設計根拠"なんているの?
  • 15. © 2019 NTT DATA Corporation 15 パラメータシートの大切な役割② "設計根拠"がないと 設定理由・変更要否が分からない そもそもこの設定変えていいのか な?過去の何度も変更されている けど経緯が全く分からない・・・ (秘伝のタレ状態) なぜこの設定になっているんだろ? 初期メンバーはもういないし・・・サービス開始から数年後、 急遽、パラメータ変更が 必要になったが・・・
  • 16. © 2019 NTT DATA Corporation 16 パラメータシートの大切な役割③ ③ コミュニケーションツール ② 設計根拠をたどる道標 ① 実機の状態を示す唯一のドキュメント
  • 17. © 2019 NTT DATA Corporation 17 パラメータシートの大切な役割③ 開発者と運用者を繋ぐ ドキュメント 開発者「監視項目 の一覧はこちらに なります」 運用者「非常に具体 的。解釈の余地が無 くて助かります!」
  • 18. © 2019 NTT DATA Corporation 18 パラメータシートの大切な役割 まとめ
  • 19. © 2019 NTT DATA Corporation 19 パラメータシートの大切な役割 パラシは非常に大事! ポイントは三つ ① 実機の状態を示す唯一のドキュメント ② 設計根拠を辿る道標 ③ コミュニケーションツール
  • 20. © 2019 NTT DATA Corporation 20 パラメータシートの課題 その一方で …
  • 21. © 2019 NTT DATA Corporation 21 パラメータシートの現実 パラシは厳密さが求められる 運用フェーズでの変更が多い 基本設計書 詳細設計書 パラメータシート
  • 22. © 2019 NTT DATA Corporation 22 パラメータシートの課題 変更履歴の管理が大変 これは本来バージョン管理で解決すべきもの → バージョン管理できるようテキスト化したい (テキスト化するとIaCと相性が良いはず!)
  • 23. © 2019 NTT DATA Corporation 23 Infrastructure as Codeとは そもそも Infrastructure as Code(IaC)って?
  • 24. © 2019 NTT DATA Corporation 24 Infrastructure as Codeとは コード リポジトリ 自動化管理 サーバ 格納 配置 実行 設定 試験 構築 実行 実行
  • 25. © 2019 NTT DATA Corporation 25 Infrastructure as Codeとは コード リポジトリ 自動化管理 サーバ 格納 配置 実行 設定 試験 構築 実行 実行 基盤(インフラストラクチャ)をコード化し
  • 26. © 2019 NTT DATA Corporation 26 Infrastructure as Codeとは コード リポジトリ 自動化管理 サーバ 格納 配置 実行 設定 試験 構築 実行 実行 バージョン管理しながら
  • 27. © 2019 NTT DATA Corporation 27 Infrastructure as Codeとは コード リポジトリ 自動化管理 サーバ 格納 配置 実行 設定 試験 構築 実行 実行 自動化ツールで自動構築・自動試験 いつ・誰が・どのように実行しても同じ結果
  • 28. © 2019 NTT DATA Corporation 28 Infrastructure as Codeのメリット IaCのメリットをまとめると
  • 29. © 2019 NTT DATA Corporation 29 Infrastructure as Codeのメリット Q. オペミスのリスク低減 C. 管理コストの削減 D. 迅速な構築・試験
  • 30. © 2019 NTT DATA Corporation 30 パラシとIaCを連携したい! さて話は戻りますが
  • 31. © 2019 NTT DATA Corporation 31 本テーマ 本取組みの重要なポイント • パラシは大事 • パラシとIaCを連携したい 現状のパラシ×IaCはどうか?
  • 32. © 2019 NTT DATA Corporation 32 現状のパラシ×IaC コード リポジトリ パラシ
  • 33. © 2019 NTT DATA Corporation 33 現状のパラシ×IaC コード リポジトリ パラシとコードで パラメータを二重管理 → 整合性の維持が大変 パラシ
  • 34. © 2019 NTT DATA Corporation 34 素朴な改善アイディア コード リポジトリ 二重管理が問題なら パラシから自動で転記 すればいいのでは? パラシ
  • 35. © 2019 NTT DATA Corporation 35 パラシ 実際にやってみました コード リポジトリ パラシの統一フォーマットを決め パラシからコードの変換ツールを 作成したが… 統一フォーマット(Excel)
  • 36. © 2019 NTT DATA Corporation 36 パラシ 新たな課題が出てきた コード リポジトリ 課題 データとビューが一体化しており パラメータ抽出処理・変換処理が複雑 バージョン管理した際、ビューの 変更も変更履歴の対象になる 統一フォーマット(Excel) データ要素 ビュー要素
  • 37. © 2019 NTT DATA Corporation 37 既存パラシに固執する必要はない データとビューを分離しよう そこで新たなアイディア
  • 38. © 2019 NTT DATA Corporation 38 パラシ そこで新たなアイディア コード リポジトリ既存のパラシから データ要素とビュー要素を分離すると ... データ要素 ビュー要素 分離
  • 39. © 2019 NTT DATA Corporation 39 新方式のパラシ×IaC コード リポジトリ データ テキスト リポジトリ 一次情報を リポジトリ管理 動的に生成 シンプルなデータ変換 一次情報をシンプルにしたことで連携が容易 一次情報 ビュー (パラシ)
  • 40. © 2019 NTT DATA Corporation 40 パラシ×IaC 以下の違いをまとめます • 今までのパラシ×IaC • 新方式のパラシ×IaC
  • 41. © 2019 NTT DATA Corporation 41 今までのパラシ×IaC 今までの パラシ × IaC
  • 42. © 2019 NTT DATA Corporation 42 今までのパラシ×IaC 手動 or 自動 コード リポジトリ 自動化管理 サーバ 格納 配置 実行 設定 試験 構築 パラシ
  • 43. © 2019 NTT DATA Corporation 43 新方式のパラシ×IaC 新方式の パラシ × IaC
  • 44. © 2019 NTT DATA Corporation 44 自動化管理 サーバ 新方式のパラシ×IaC リポジトリ データ データ テキスト コード コード コード + + + データ 格納 配置 変換+実行 一次情報 動的に生成 次にシナリオベースのデモをお見せします 設定 試験 構築 変換+実行 変換+実行 ビュー (パラシ)
  • 45. © 2019 NTT DATA Corporation 45 デモ
  • 46. © 2019 NTT DATA Corporation 46 デモシナリオ 構築済みのサーバの変更要件が来たぞ 新規パッケージ(httpd)を インストールする必要があるな
  • 47. © 2019 NTT DATA Corporation 47 デモのシステム構成 構築対象サーバ (RHEL) 自動化管理サーバ (RHEL) 作業者サーバ (Windows) パラメータファイル編集ツール リポジトリ git ※パラメータファイルをもとに Ansibleを用いて サーバ構築済み 構築対象サーバの初期構築は完了している状態 Ansible用 Ansible Playbook リポジトリ gitマスタ パラメータ ファイル text パラメータ ファイル text VBA
  • 48. © 2019 NTT DATA Corporation 48 設定反映までの流れ【1 / 3】 構築対象サーバ (RHEL) 自動化管理サーバ (RHEL) 作業者サーバ (Windows) パラメータファイル編集ツール パラメータファイルを編集 Playbook 手動でパラメータファイルにパッケージ情報 を追加し、リポジトリに登録 リポジトリ git リポジトリ gitマスタ パラメータ ファイル text パラメータ ファイル text VBA
  • 49. © 2019 NTT DATA Corporation 49 設定反映までの流れ【2 / 3】 構築対象サーバ (RHEL) 自動化管理サーバ (RHEL) 作業者サーバ (Windows) Playbook パラメータファイル編集ツール Ansible 登録をトリガに自動的に対象サーバを変更 Ansible用 データ変換ツール (Ansible用) リポジトリ git リポジトリ gitマスタ パラメータ ファイル text パラメータ ファイル text 自動でYAMLに変換され VBA
  • 50. © 2019 NTT DATA Corporation 50 設定反映までの流れ【3 / 3】 構築対象サーバ (RHEL) 自動化管理サーバ (RHEL) 作業者サーバ (Windows) Playbook パラメータファイル編集ツール 登録をトリガに自動的に対象サーバを変更 Ansible用 データ変換ツール (Ansible用) Ansible + 自動でAnsibleを実行 リポジトリ git リポジトリ gitマスタ パラメータ ファイル text パラメータ ファイル text VBA
  • 51. © 2019 NTT DATA Corporation 51 作業者 サーバ 自動化管理 サーバ 構築対象 サーバ git git デモ① パラメータファイルのオープン 作業者サーバ上で実行 gitリポジトリ内のパラメータファイルを 専用ツールでオープン ダブルクリック ★主なポイント 従来のパラメータシートのように 各種パラメータを確認できる
  • 52. © 2019 NTT DATA Corporation 52 作業者 サーバ 自動化管理 サーバ 構築対象 サーバ git git デモ② パラメータファイルの編集 インストールパッケージ情報の箇所に 「httpd」パッケージ情報を追加 ★主なポイント 従来の操作感でパラメータを追 加できる
  • 53. © 2019 NTT DATA Corporation 53 作業者 サーバ 自動化管理 サーバ 構築対象 サーバ git git デモ③ パラメータファイルの保存 ctrl + s でパラメータファイルを保存 ★主なポイント 変更内容の保存も従来の操作感で 可能
  • 54. © 2019 NTT DATA Corporation 54 作業者 サーバ 自動化管理 サーバ 構築対象 サーバ git git デモ④ 変更差分の確認 git diff コマンドで差分を表示 $ git diff diff --git a/RHEL74.sdf b/RHEL74.sdf index 414e98f..274cb53 100644 --- a/RHEL74.sdf +++ b/RHEL74.sdf @@ -1340,6 +1340,7 @@ System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::strace-4.12-4.el7.x86_ System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,setting_value,[Yes] System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,setting_value,[Yes] System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,setting_value,[Yes] +System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes] System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,setting_value,[Yes] System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,setting_value,[Yes] System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,setting_value,[Yes] @@ -1351,6 +1352,7 @@ System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::strace-4.12-4.el7.x86_ System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,setting_value,[Yes] System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,setting_value,[Yes] System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,setting_value,[Yes] +System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes] System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,setting_value,[Yes] System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,setting_value,[Yes] System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,setting_value,[Yes] @@ -1362,6 +1364,7 @@ System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::strace-4.12-4.el7.x86_ System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,setting_value,[Yes] System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,setting_value,[Yes] System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,setting_value,[Yes] +System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes] -,-,-,-,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,data_type,Boolean(Meta) -,-,-,-,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,data_type,Boolean(Meta) -,-,-,-,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,data_type,Boolean(Meta) @@ -1373,6 +1376,7 @@ System1,Env1,base,node3,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,s -,-,-,-,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,data_type,Boolean(Meta) -,-,-,-,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,data_type,Boolean(Meta) -,-,-,-,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,data_type,Boolean(Meta) +-,-,-,-,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,data_type,Boolean(Meta) -,-,-,-,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,parameter_descripton,パッケージ情報 -,-,-,-,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,parameter_descripton,パッケージ情報 -,-,-,-,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,parameter_descripton,パッケージ情報 … +System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes] ★主なポイント 変更箇所を機械的に確認できる。 git log を見ることで変更履歴を確認可能
  • 55. © 2019 NTT DATA Corporation 55 作業者 サーバ 自動化管理 サーバ 構築対象 サーバ git git デモ⑤ 変更内容をマージ 自動化管理サーバのリポジトリへ変更内容を マージ $ git commit -a -m "add httpd package" [develop 58fea27] add httpd package 1 file changed, 9 insertions(+) $ git push origin develop Enumerating objects: 5, done. Counting objects: 100% (5/5), done. … * [new branch] develop -> develop $ git merge develop Updating 7154d94..58fea27 Fast-forward RHEL74.sdf | 9 +++++++++ 1 file changed, 9 insertions(+) 作業者サーバ上で実行 自動化管理サーバ上で実行
  • 56. © 2019 NTT DATA Corporation 56 作業者 サーバ 自動化管理 サーバ 構築対象 サーバ git git デモ⑥ マージをフックに自動反映 自動化管理サーバのリポジトリへ変更内容を マージ $ git commit -a -m "add httpd package" [develop 58fea27] add httpd package 1 file changed, 9 insertions(+) $ git push origin develop Enumerating objects: 5, done. Counting objects: 100% (5/5), done. … * [new branch] develop -> develop $ git merge develop Updating 7154d94..58fea27 Fast-forward RHEL74.sdf | 9 +++++++++ 1 file changed, 9 insertions(+) 作業者サーバ上で実行 自動化管理サーバ上で実行 $ rpm -qa | grep httpd httpd-2.4.6-67.el7.x86_64 構築対象サーバでは、httpd パッ ケージがインストールされている
  • 57. © 2019 NTT DATA Corporation 57 特徴
  • 58. © 2019 NTT DATA Corporation 58 特徴 • パラメータファイルは従来と同様の操作感で確認・編集可能! • パラメータの変更箇所は機械的に確認できる! パラメータ ファイル テキスト $ git diff diff --git a/RHEL74.sdf b/RHEL74.sdf index 414e98f..274cb53 100644 --- a/RHEL74.sdf +++ b/RHEL74.sdf @@ -1340,6 +1340,7 @@ System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::strace-4.12-4.el7.x86_ System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::traceroute-2.0.22-2.el7.x86_64,setting_value,[Yes] System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::tcpdump-4.9.0-5.el7.x86_64,setting_value,[Yes] System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::sos-3.4-5.el7.noarch,setting_value,[Yes] +System1,Env1,base,node1,RHEL7,-,packages(YUM),Properties::httpd-2.4.6-67.el7.x86_64,setting_value,[Yes] System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::wireshark-1.10.14-14.el7.x86_64,setting_value,[Yes] System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::nmap-6.40-7.el7.x86_64,setting_value,[Yes] System1,Env1,base,node2,RHEL7,-,packages(YUM),Properties::net-snmp-5.7.2-28.el7.x86_64,setting_value,[Yes] ★主なポイント 機械的に差分を残せるため維持管理のコスト減 ★主なポイント テキストを感じさせない従来と同様の操作感 もちろんパラシの役割として活用も可能
  • 59. © 2019 NTT DATA Corporation 59 特徴(その他) • 一次情報からコードへ変換する難易度が下がった パラメータ ファイル パラメータ 情報 YAML形式 Ansibleが使用 パラメータ 情報 パラメータ 情報 Key=Value 試験自動化 構築自動化(IaaS層) YAML形式 Serverspecが使用 Key-Value形式 Terraformが使用 text 構築自動化(OS・ミドル層) テキストファイルから各種形式への変換ツール ★主なポイント 出力形式のフォーマットが決まっていれ ば、論理的にはどんな形式でも自動変 換することが可能。 Ansible用データ変換ツール Serverspec用データ変換ツール Terraform用データ変換ツール
  • 60. © 2019 NTT DATA Corporation 60 まとめ
  • 61. © 2019 NTT DATA Corporation 61 まとめ  パラメータシートは重要 • 実機の状態を示す唯一のドキュメント • 設計根拠をたどる道標 • コミュニケーションツール  パラメータシート×IaCの新たな姿を開発 • パラメータシートをデータとビューに分割  一次情報(データ)から一気通貫の基盤自動化を実現
  • 62. © 2019 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。