SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
Copyright © NTT Communications Corporation. All Rights Reserved.
クラウドを最大限活用するInfrastructure as
Codeを考えよう
NTTコミュニケーションズ
イノベーションセンター テクノロジー部門
牧志 純
1

Copyright © NTT Communications Corporation. All Rights Reserved.
Infrastructure as Code
インフラをコードで記述し、ソフトウェアと同じように取り扱うプラクティス。コードを
実装・変更し、テストし、それを本番に適用する一連のアプローチとそれを構成す
る技術。
Define everything as code.
Defining all your stuff “as code” is a core practice for making changes rapidly and
reliably. There are a few reasons why this helps:
● Reusability
● Consistency
● Transparency
2
"Infrastructure as Code: Dynamic Systems for the Cloud Age", Kief Morris, O’Reilly
Copyright © NTT Communications Corporation. All Rights Reserved.
自己紹介
3
NTTコミュニケーションズ
プラットフォームアーキテクト
牧志 純
略歴
● OpenFlowなどのSDN技術開発
● エンタープライズクラウドのNWオーケストレータ開発
● アメリカシリコンバレー駐在(2016 - 2019)
● DevOpsプラットフォーム開発(現在)
外部発表
● KubeCon 2019 Europe
● Google Cloud Next Tokyo 2019
● KubeCon 2020 Europe
@JunMakishi
https://github.com/j-maxi
Copyright © NTT Communications Corporation. All Rights Reserved.
NTTコミュニケーションズの
プラットフォームサービス開発
4
Copyright © NTT Communications Corporation. All Rights Reserved.
Flexible InterConnect
5
Copyright © NTT Communications Corporation. All Rights Reserved.
Super OCN Flexible Connect
6
Copyright © NTT Communications Corporation. All Rights Reserved.
裏側はGCP/GKE Kubernetes

クラウド上でマイクロサービスを高
速で開発できるSDKを整備
共通機能を整備することで、
標準アーキテクチャでコントローラを
量産
Preview
Active
コンテナ基盤およびその運用モ
デル (SRE) を標準化
DevOps
platform
Design
Patterns
アプリケーション開発者の
End-EndのDevOps (CI/CD)
を支援するデザインパターン
/カタログを提供
裏側 - ソフトウェア基盤技術の標準化
7
SDK Portal
サービタイゼーション
共通コンポーネント
KUJIRA基盤
Qmonus SDK
Copyright © NTT Communications Corporation. All Rights Reserved.
Infrastructure as Codeを分解する
8
Copyright © NTT Communications Corporation. All Rights Reserved.
Cloudの普及
9
分散されたコンポーネント、サービスを組み合わせる時代
● Microserviceの普及
● Purpose-build databaseを使ったアーキテクチャパターン
● Multi Cloudの採用
2021 HashiCorp State of Cloud Strategy Survey (https://www.hashicorp.com/state-of-the-cloud)
Copyright © NTT Communications Corporation. All Rights Reserved.
競争力としてのInfrastructure as Code
Infrastructureをコードで管理することは強い組織の必要条件
● 早くかつ安全にインフラを変更するためにはきちんとした変更管理が必要 *1
● あとからコード化・自動化するのは手遅れになるケースが多い
Infrastructure as Codeはツールだけの話ではない
● 組織として、インフラとその上のアプリケーションのライフサイクルをどう管理するか
● 組織によって、最適なツールスタックが異なる
Infrastructure as Codeのツール/エコシステムが解く課題を分析し、組織に
あったツールスタックを組み方を考察する
10
*1 "2020 Puppet State of DevOps Report", https://puppet.com/resources/report/2020-state-of-devops-report
Copyright © NTT Communications Corporation. All Rights Reserved.
Infrastructure as Codeを分解する
Feedback loop
Test
Workflow
User Interface どうやってインフラをコード定義するか。
どうやってインフラに設定を適用するか(順序)。
どうやってインフラが正常か確認するか。
どうやってインフラを観察し期待値に収束させるか。
User
Infrastructure
Infrastructure as Code
11
Copyright © NTT Communications Corporation. All Rights Reserved.
本発表のフォーカス
Feedback loop
Test
Workflow
User Interface どうやってインフラをコード定義するか。
どうやってインフラに設定を適用するか(順序)。
どうやってインフラが正常か確認するか。
どうやってインフラを観察し期待値に収束させるか。
User
Infrastructure
Infrastructure as Code
12
Copyright © NTT Communications Corporation. All Rights Reserved.
Terraform、Kubernetesを例に考える
13
Feedback loop
Test
Workflow
User Interface
Terraform
Kubernetes
+kubectl
HCL
(Hashicorp Configuration Language)
YAML
Reconcile Loopによる
コンテナ (Pod) の自動構築
Stateファイルを使った
Diffの計算
宣言されたものを
kubectlで1つ1つ適用
変更のPreview Dry Run
依存関係を自動解決
Copyright © NTT Communications Corporation. All Rights Reserved.
User Interface
インフラを制御するコード定義であり、ソフトウェア開発者が実装・管理する対象。
ある程度の規模になると、共通的なコードと環境依存のコードを分離し、さらにテンプレートやオー
バーレイを使ってコードを実装・保守メンテしたくなる。
14
## GCP Memorystore (REDIS) ###
resource "google_redis_instance" "cache" {
name = "ha-memory-cache"
tier = "BASIC"
memory_size_gb = 1
location_id = "asia-northeast1"
redis_version = "REDIS_4_0"
}
YAMLでリソースを1つ1つ宣言する。
HCLでリソースを1つ1つ宣言する。
## Deployment ###
apiVersion: v1
kind: Deployment
metadata:
name: redis
spec:
template:
...
Terraform Kubernetes (+kubectl)
User Interface
Copyright © NTT Communications Corporation. All Rights Reserved.
Workflow
インフラ制御を実行する方法および、その実行順序を制御する方式。
CI/CDパイプラインの中で順序を明示的に指定(kubectlを呼ぶ順番を制御) するだけでなく、ツー
ルによっては自動で順序を解決する。
15
## GCP Memorystore (REDIS) ###
resource "google_redis_instance" "cache" {
name = "ha-memory-cache"
authorized_network =
google_compute_network.test.self_link
}
kubectlコマンドで明示的に順番に設定
リソース間のDependency graphを自動解決
Terraform Kubernetes (+kubectl)
networkを先に構築してから redisが作
成される
### Ingress設定前にPodをReady stateにしたい ###
$ kubectl apply -f resources.yaml
$ kubectl apply -f gce-ingress.yaml
※ Kubernetes標準のリソースは順序を意識
しなくて良いものがそもそも多い
Workflow
Copyright © NTT Communications Corporation. All Rights Reserved.
Test
定義したコードを試験する方式、および実際に設定したインフラを試験する方式。
セキュリティポリシー通り設定されているか検査することも必要(例: CIS Benchmark)。
ある程度の規模になると、インフラを設定・確認する
sandbox環境が欲しくなる。
16
$ terraform plan
# google_redis_instance.cache will be created
+ resource "google_redis_instance" "cache" {
+ name = "ha-memory-cache"
+ id = (known after apply)
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
サーバ側でリソースを作成せず検査する
適用する変更点のPreviewを見て確認
Terraform Kubernetes (+kubectl)
### Server Side Apply (option: DryRun) ###
kubectl apply -f target.yaml --dry-run=server
Test
Copyright © NTT Communications Corporation. All Rights Reserved.
Feedback loop
宣言したコード通りにインフラ設定を収束する方式。
過去にデプロイしたインフラのStateを持ち、今回適用するコードとの差分を計算し、期待値に収束さ
せる。
17
$ terraform apply
# google_redis_instance.cache will be updated in-place
~ resource "google_redis_instance" "cache" {
~ memory_size_gb = 10
}
...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
tfstateファイルに保存したstateと比較し変更を適用
Terraform Kubernetes (+kubectl)
コントローラのReconcile loopにより状態
を観察・収束
Deployment/
ReplicaSet
Controller
が作る
Deployment
ReplicaSet
Pod (Container)
Feedback loop
Copyright © NTT Communications Corporation. All Rights Reserved.
ツールを組み合わせる
設定したいインフラの性質、管理したいライフサイクルの単位を考慮して、
ツールスタックを作る
18
HCL
ArgoCD
YAML
Terraform
Feedback loop
Test
Workflow
User Interface
組み上げ例
(NTT Comの例ではありません)
GCPリソースをデプロイ
するスタック
コンテナをデプロイする
スタック
Container
Kubernetes
(Deployment)
Copyright © NTT Communications Corporation. All Rights Reserved.
インターフェースの複雑化
リソース数の増大に伴い、インターフェース管理が複雑・煩雑化してくる。
一般的なProgramming言語で活用してきたソフトウェア開発アプローチを適用していきたい。
(例: コンテクストをモジュールにまとめる)
19
Feedback loop
Test
Workflow
User Interface
依存関係がわかりにくく、
見通しが悪くなってくる
(module化を進める?)
環境ごとのリソース定義を重複して
管理することで保守コストが増大
HCL
ArgoCD
YAML
Terraform
Container
Kubernetes
(Deployment)
Copyright © NTT Communications Corporation. All Rights Reserved.
期待するライフサイクルとFeedback loopの乖離
単体のツールだけではリソースのライフサイクルと、実際に変更を計算・適用する
Feedback
loopの頻度が合わなくなってくる。
● 本来はリソースごとに変更したいアクター、変更頻度が異なる
○ Configuration Driftを強く制限したいリソースは早い
Feedback loopを
● 1つの大きなFeedback loopでは変更管理が大変
20
Feedback loop
Test
Workflow
User Interface
全リソースを一括で
変更管理する大きい
Feedback Loop
(Stateを分ける?)
HCL
ArgoCD
YAML
Terraform
Container
Kubernetes
(Deployment)
プリセットされたリソース
(例: Deployment, ReplicaSet)
のための小さいFeedback Loop
Copyright © NTT Communications Corporation. All Rights Reserved.
Infrastructure as Codeでぶつかる壁
● 分散するリソース定義とコスト高な変更管理
○ 「ここを変更する場合、こっちも変更しないとダメだよ」
● 属人的なノウハウ
○ 「ここで宣言してるリソースって何に使ってるんですか?」
● ガバナンスを効かせにくい
○ 「この命名規則に基づいて管理してるので独自で命名しないで」
● 独自Script/DSLの保守コスト増大
○ 「Python + Jinjaでテンプレート化したツールをどうやって試験しよう・・」
● アプリ開発者がコントロールできない
○ 「新しいクラウドサービスを試したい? PRを作ってインフラ担当の Approvalをもらってください。次
のリリースで適用します。」
● 第三者の変更に気づけない
○ 「パブリッククラウド側のバージョンアップで設定値が変わっていました」
21
※個人の経験の一例
Copyright © NTT Communications Corporation. All Rights Reserved.
Infrastructure as Codeのエコシステム
※ どのツールが良い・悪いと述べるつもりはなく、
各ツールがどのような課題を解いているのか簡単に探索していきます
22
Copyright © NTT Communications Corporation. All Rights Reserved.
Kustomize
Kubernetesのマニフェスト/設定ファイルについてレイヤ管理するためのソリューション。複雑化す
るUser Interfaceの課題を解く。
23
root
├── base
│ ├── configMap.yaml
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ └── service.yaml
└── overlays
├── production
│ ├── deployment.yaml
│ └── kustomization.yaml
└── staging
├── kustomization.yaml
└── map.yaml
共通の
マニフェスト
環境特有の
マニフェスト
User Interface
環境差分を効果的に管理することができる
ため、Kubernetes利用時の最初の選択肢
となる。
● 共通マニフェストに対して、環境特有の設
定をOverlayする。
YAMLゆえに表現力が限定的かつ
Validationが弱い印象。
Copyright © NTT Communications Corporation. All Rights Reserved.
Pulumi
General Purpose Language (Javascript, Python, Golang, .NET) を使って、インフラを制御する
ためのソリューション。
24
User Interface Feedback loop
Workflow
一般的なプログラミング言語でマルチクラウドの設
定順序を指示
ステートを持ち、
適用すべき変更を計算
ソフトウェア開発者の手でマルチクラウド
をコントロールできる
● 馴染みのある言語を User Interfaceとし
て採用できる
● Stateを使ったFeedback loopがある
リソース数が多くなると、過度に抽象化し
てしまったり、巨大なプログラムになってし
まう傾向があり、IaC専用のテクニックが求
められる。
Copyright © NTT Communications Corporation. All Rights Reserved.
番外編: Pulumi Sample
Serverless functionのlogicを書きながら、そのデプロイまで1つの
typescriptで書くことができる
のなど、General Purpose Languageならではの長所を活用できる。
25
API Gateway
AWS Lambda
Copyright © NTT Communications Corporation. All Rights Reserved.
Crossplane
異なるベンダのインフラをKubernetesのAPIからコントロールするためのソリューション。
2021年9
月14日にCNCFのIncubating projectに。
26
Feedback loop
Workflow
Universal Control Plane
Controlled by Kubernetes’
Reconcile Loop
ユーザは宣言的APIを叩くだけで、残りはサーバ側で
ステートをコントロールしてくれる。クライアント側では
User Interfaceに注意すれば良いので、スケールする
(はず)。
● Kubernetesは分散コントローラとして良くできている
ので、Kubernetesにまとめたいと考えるのは自然な
流れ。
コミュティが大きくなってきており、ベンダ
APIの進化に
タイムリーに追従できるか注目したい。
Copyright © NTT Communications Corporation. All Rights Reserved.
番外編: PaaSの土台としてのCrossplane
複数のリソースを集約(compose) して、1つの抽象化したKubernetes APIとしてユーザに提供す
ることができ、独自のPlatformサービスを構築できるポテンシャルがある。
27
from: https://github.com/crossplane-contrib/crossplane-cdk8s
エンドユーザが利用する API
CrossplaneのReconcile loop
で複数のリソースをデプロイ
Copyright © NTT Communications Corporation. All Rights Reserved.
NTT CommunicationsのInfrastructure as Code
28
Copyright © NTT Communications Corporation. All Rights Reserved.
クラウドを活用するためのConfiguration as Data
インフラ設定 (Config) をCodeではなくDataとして捉え、アグレッシブにインフラを管理。
● Dataを最適な単位のFeedback loopで動的に検査・生成・処理する。
○ 安全に早くインフラを変更する。また、変更頻度を意識してループ設計をする。
● そのDataを生成するCode (User Interface) は別で考える。
○ CI/CDはDataを処理するパイプラインと考える。
29
Copyright © NTT Communications Corporation. All Rights Reserved.
効果的なFeedback loopを考える
DevOpsのサイクルも立派なFeedback loop。
● CI/CDパイプラインの中でConfiguration (Data) を計算・検査・適用する。
● 適用するタイミングをコントロールし、統一的なワークフローを適用できる。
全てをReconcile loopにまとめるのは早計。
● 分散システムで、Control Loopを手懐けるのは難しい。
● 連続するControl loopが問題でエラーが伝搬する、または復旧できない恐怖 *1。
システムの特性によってインフラのライフサイクルを見極め選択できることが重要。
● 例:Autoscalingを使うか、自分で観察・試験してからスケールアウトするか
30
DevOps Kubernetes
Reconcile Loop
vs
*1 Metastable Failure in Distributed Systems,
https://sigops.org/s/conferences/hotos/2021/papers/
hotos21-s11-bronson.pdf
Copyright © NTT Communications Corporation. All Rights Reserved.
効果的なUser Interfaceを考える
構造化されたDataを処理するのに適したインターフェースを使いスケールさせる。
● Config (Data) 生成ロジックの実装に、ソフトウェア開発のプラクティスを反映。
● 柔軟性も大切だが、Config (Data) 構造をシンプルに処理したい。
● Config管理のために複雑な独自システム・ルールを作り上げるのは避けたい。
● Dataをそのまま愚直に宣言する (ハードコードする) 方が最良なケースもある *1。
31
Configuration Complexity Clock,
http://mikehadlow.blogspot.com/2012/05/configuration-complexity-clock.html
Configの
ハードコード
パラメータ地
獄
複雑な
独自スクリプト
独自DSL
=Config生成
ソフトウェア
Copyright © NTT Communications Corporation. All Rights Reserved.
CUE言語の採用
● Data unificationに特化
○ データを任意の階層で結合し、Dataを生成できる。
○ 結合の順序に関係なく一貫した結果を生成できる。
● TypeもValue
○ TypeもValidationもValueであり、シンプルにDataの検査が
できる。
● プログラマビリティ
○ Module化などソフトウェア開発プラクティスを適用できる。
○ Go APIをサポート。
32
// Data
Alice: age: 20
// Type
People: age: int
// Constraint
Member: age: > 18
// Validate
Alice & People & Member
Types are Values
CUE
Google / Borgで利用されているGCL (Configuration Language) の著者の1人であるMarcel
van Lohuizenがその経験を元に一から作り上げた Configuration言語
Copyright © NTT Communications Corporation. All Rights Reserved.
Qmonus Value Streamの開発
33
Build Test
Pipeline
Qmonus Value Stream
Delivery
User Interface
Workflow
Feedback loop
DevOpsのFeedback loopを高速に回すための内製プラットフォーム
● CUEでモジュール化したマルチクラウドの
Deploymentカタログを提供
● アプリケーション単位でパラメータを変更しながら
Feedback loopを回しやすくする仕組
み (CI/CDパイプライン) の提供
アプリケーション単位で
コントロールするループ
TM
Copyright © NTT Communications Corporation. All Rights Reserved.
デモ1: Qmonus Value Streamを使ったデプロイ
34
Build Test
Online Butique Deployment
Design Pattern
Pipeline
Qmonus Value Stream
Delivery
Kubernetes
Manifest
Validate & Generate
Copyright © NTT Communications Corporation. All Rights Reserved.
デモ2: GCP Memorystoreの利用
35
Build Test
Online Butique Deployment
Design Pattern
Pipeline
Qmonus Value Stream
Delivery
Kubernetes
Manifest
Validate & Generate
Memorystore
Design Pattern
GCP
Manifest
CUEを活用して、Package化されたDeploymentレシピをCompose
Copyright © NTT Communications Corporation. All Rights Reserved.
デモ3: GCP Memorystoreのスケールアップ
36
Build Test
Pipeline
Qmonus Value Stream
Delivery
Memorystore Parameterを変更して、再デプロイ
CI/CDを活用したFeedback Loop
Copyright © NTT Communications Corporation. All Rights Reserved.
番外編: 小さいFeedback Loopの導入
37
Build Test
Pipeline
Qmonus Value Stream
Delivery
Argo Rollouts
Feedback loop
作り上げた大きいFeedback loop (CI/CDパイプライン) からリソースを切り出して、
宣言的APIで小さくコントロールしたいFeedback loopを導入していく。
● 例: Argo Rolloutにより、Blue/Greenデプロイ処理はコントローラに委譲する。
● 必要ならCrossplaneも使っていく。
Copyright © NTT Communications Corporation. All Rights Reserved.
最後に
38
Copyright © NTT Communications Corporation. All Rights Reserved.
まとめ
Infrastructure as Codeはソフトウェア競争力の源泉
● アプリケーションを継続的に開発して、ユーザに価値を届ける、ビジネスを発展させるための
基礎
● Infrastructureへ投資し続けるためのEnabler
User InterfaceおよびFeedback loopをどう組み上げるかが重要
● Configuration as Dataのプラクティスの広がり
● リソースのライフサイクルを見極めて、
Feedback loopを設計する
● User Interfaceにソフトウェア開発プラクティスを適用する
● NTTコミュニケーションズで開発したQmonus Value Streamの組み上げ例:
○ User Interface = CUE言語
○ Feedback loop = アプリ開発者が小さく回すことができる
CI/CDループ (Tekton +
Pulumiの上に独自で実装したソフトウェア
)
39
Copyright © NTT Communications Corporation. All Rights Reserved.
取り組み紹介
 Qmonus Value Stream開発の取り組みと技術
● "社内DevOps基盤、Tekton、Cuelang", Fukabori.fm, episode 50, https://fukabori.fm/episode/50
● "Deliver Your Cloud Native Application with Design Pattern as Code", KubeCon Europe 2020,
https://sched.co/ZeiY
40
その他 Infrastructure as Codeで操作できるインフラの拡充と展開も進めています
● APIで操作できるインフラ・プラットフォームサービス(Smart Data Platform)
Copyright © NTT Communications Corporation. All Rights Reserved.
We are hiring
プロダクト志向で、DevOpsプラットフォーム = Qmonus Value Streamを一緒に開発し
てくれるメンバーを募集しています!
41
社内で得た経験 (ユーザ検証) を元にアーキテクチャをアップデート中
興味がある方は採用ページまたは   @JunMakishi まで
Copyright © NTT Communications Corporation. All Rights Reserved.
本発表についての問い合わせは

NTTコミュニケーションズ イノベーションセンター

テクノロジー部門 DevOps基盤PJ

までお願いします

42

Contenu connexe

Tendances

Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Masahito Zembutsu
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?Masahito Zembutsu
 
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Hiroyuki Wada
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術までAkihiro Suda
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門kk_Ataka
 
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話Katsuya Yamaguchi
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_Akito Tsukahara
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみましたShuntaro Saiba
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)NTT DATA Technology & Innovation
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation
 
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組みYuta Shimada
 

Tendances (20)

Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
 
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Keycloak & midPoint の紹介
Keycloak & midPoint の紹介
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
 
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 
Google Cloud で実践する SRE
Google Cloud で実践する SRE  Google Cloud で実践する SRE
Google Cloud で実践する SRE
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
 

Similaire à クラウドを最大限活用するinfrastructure as codeを考えよう

[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...オラクルエンジニア通信
 
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...NTT DATA Technology & Innovation
 
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)Osaka University
 
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素Arichika TANIGUCHI
 
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...日本マイクロソフト株式会社
 
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化Hinemos
 
【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...日本マイクロソフト株式会社
 
クラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーションクラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーションOsaka University
 
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果Hideaki Tokida
 
OpenStackプロジェクトの全体像~詳細編~
OpenStackプロジェクトの全体像~詳細編~OpenStackプロジェクトの全体像~詳細編~
OpenStackプロジェクトの全体像~詳細編~Masanori Itoh
 
オープンクラウド導入の課題とデルのCloudStackソリューション
オープンクラウド導入の課題とデルのCloudStackソリューションオープンクラウド導入の課題とデルのCloudStackソリューション
オープンクラウド導入の課題とデルのCloudStackソリューションDell TechCenter Japan
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework Microsoft
 
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進EMC Japan
 
ソフトウエアジャパン2017 IT Forum AITC(6)
ソフトウエアジャパン2017 IT Forum AITC(6)ソフトウエアジャパン2017 IT Forum AITC(6)
ソフトウエアジャパン2017 IT Forum AITC(6)aitc_jp
 
【デブサミ夏A4】アジャイル開発とDevopsを促進するクラウドテクノロジー
【デブサミ夏A4】アジャイル開発とDevopsを促進するクラウドテクノロジー【デブサミ夏A4】アジャイル開発とDevopsを促進するクラウドテクノロジー
【デブサミ夏A4】アジャイル開発とDevopsを促進するクラウドテクノロジーDevelopers Summit
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月VirtualTech Japan Inc.
 

Similaire à クラウドを最大限活用するinfrastructure as codeを考えよう (20)

[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
 
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
 
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
 
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
 
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
 
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
 
クラウド検討の進め方
クラウド検討の進め方クラウド検討の進め方
クラウド検討の進め方
 
【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...
 
クラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーションクラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーション
 
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
OpenStackプロジェクトの全体像~詳細編~
OpenStackプロジェクトの全体像~詳細編~OpenStackプロジェクトの全体像~詳細編~
OpenStackプロジェクトの全体像~詳細編~
 
オープンクラウド導入の課題とデルのCloudStackソリューション
オープンクラウド導入の課題とデルのCloudStackソリューションオープンクラウド導入の課題とデルのCloudStackソリューション
オープンクラウド導入の課題とデルのCloudStackソリューション
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
 
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
ソフトウエアジャパン2017 IT Forum AITC(6)
ソフトウエアジャパン2017 IT Forum AITC(6)ソフトウエアジャパン2017 IT Forum AITC(6)
ソフトウエアジャパン2017 IT Forum AITC(6)
 
OpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR OpsOpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR Ops
 
【デブサミ夏A4】アジャイル開発とDevopsを促進するクラウドテクノロジー
【デブサミ夏A4】アジャイル開発とDevopsを促進するクラウドテクノロジー【デブサミ夏A4】アジャイル開発とDevopsを促進するクラウドテクノロジー
【デブサミ夏A4】アジャイル開発とDevopsを促進するクラウドテクノロジー
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
 

Plus de NTT Communications Technology Development

【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介NTT Communications Technology Development
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて NTT Communications Technology Development
 
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...NTT Communications Technology Development
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡NTT Communications Technology Development
 

Plus de NTT Communications Technology Development (20)

【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて
 
Argo CDについて
Argo CDについてArgo CDについて
Argo CDについて
 
SpinnakerとKayentaで 高速・安全なデプロイ!
SpinnakerとKayentaで 高速・安全なデプロイ!SpinnakerとKayentaで 高速・安全なデプロイ!
SpinnakerとKayentaで 高速・安全なデプロイ!
 
100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV
 
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
Can we boost more HPC performance? Integrate IBM POWER servers with GPUs to O...
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
Mexico ops meetup発表資料 20170905
Mexico ops meetup発表資料 20170905Mexico ops meetup発表資料 20170905
Mexico ops meetup発表資料 20170905
 
NTT Tech Conference #2 - closing -
NTT Tech Conference #2 - closing -NTT Tech Conference #2 - closing -
NTT Tech Conference #2 - closing -
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡
 
GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較
 
SpinnakerとOpenStackの構築
SpinnakerとOpenStackの構築SpinnakerとOpenStackの構築
SpinnakerとOpenStackの構築
 
Troveコミュニティ動向
Troveコミュニティ動向Troveコミュニティ動向
Troveコミュニティ動向
 
Web rtc for iot, edge computing use cases
Web rtc for iot, edge computing use casesWeb rtc for iot, edge computing use cases
Web rtc for iot, edge computing use cases
 
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
 
NTT Tech Conference #1 Opening Keynote
NTT Tech Conference #1 Opening KeynoteNTT Tech Conference #1 Opening Keynote
NTT Tech Conference #1 Opening Keynote
 
NTT Tech Conference #1 Closing Keynote
NTT Tech Conference #1 Closing KeynoteNTT Tech Conference #1 Closing Keynote
NTT Tech Conference #1 Closing Keynote
 
OpsからみたOpenStack Summit
OpsからみたOpenStack SummitOpsからみたOpenStack Summit
OpsからみたOpenStack Summit
 
RabbitMQ can scale out!!(jp ops-workshop-3)
RabbitMQ can scale out!!(jp ops-workshop-3)RabbitMQ can scale out!!(jp ops-workshop-3)
RabbitMQ can scale out!!(jp ops-workshop-3)
 

クラウドを最大限活用するinfrastructure as codeを考えよう

  • 1. Copyright © NTT Communications Corporation. All Rights Reserved. クラウドを最大限活用するInfrastructure as Codeを考えよう NTTコミュニケーションズ イノベーションセンター テクノロジー部門 牧志 純 1

  • 2. Copyright © NTT Communications Corporation. All Rights Reserved. Infrastructure as Code インフラをコードで記述し、ソフトウェアと同じように取り扱うプラクティス。コードを 実装・変更し、テストし、それを本番に適用する一連のアプローチとそれを構成す る技術。 Define everything as code. Defining all your stuff “as code” is a core practice for making changes rapidly and reliably. There are a few reasons why this helps: ● Reusability ● Consistency ● Transparency 2 "Infrastructure as Code: Dynamic Systems for the Cloud Age", Kief Morris, O’Reilly
  • 3. Copyright © NTT Communications Corporation. All Rights Reserved. 自己紹介 3 NTTコミュニケーションズ プラットフォームアーキテクト 牧志 純 略歴 ● OpenFlowなどのSDN技術開発 ● エンタープライズクラウドのNWオーケストレータ開発 ● アメリカシリコンバレー駐在(2016 - 2019) ● DevOpsプラットフォーム開発(現在) 外部発表 ● KubeCon 2019 Europe ● Google Cloud Next Tokyo 2019 ● KubeCon 2020 Europe @JunMakishi https://github.com/j-maxi
  • 4. Copyright © NTT Communications Corporation. All Rights Reserved. NTTコミュニケーションズの プラットフォームサービス開発 4
  • 5. Copyright © NTT Communications Corporation. All Rights Reserved. Flexible InterConnect 5
  • 6. Copyright © NTT Communications Corporation. All Rights Reserved. Super OCN Flexible Connect 6
  • 7. Copyright © NTT Communications Corporation. All Rights Reserved. 裏側はGCP/GKE Kubernetes
 クラウド上でマイクロサービスを高 速で開発できるSDKを整備 共通機能を整備することで、 標準アーキテクチャでコントローラを 量産 Preview Active コンテナ基盤およびその運用モ デル (SRE) を標準化 DevOps platform Design Patterns アプリケーション開発者の End-EndのDevOps (CI/CD) を支援するデザインパターン /カタログを提供 裏側 - ソフトウェア基盤技術の標準化 7 SDK Portal サービタイゼーション 共通コンポーネント KUJIRA基盤 Qmonus SDK
  • 8. Copyright © NTT Communications Corporation. All Rights Reserved. Infrastructure as Codeを分解する 8
  • 9. Copyright © NTT Communications Corporation. All Rights Reserved. Cloudの普及 9 分散されたコンポーネント、サービスを組み合わせる時代 ● Microserviceの普及 ● Purpose-build databaseを使ったアーキテクチャパターン ● Multi Cloudの採用 2021 HashiCorp State of Cloud Strategy Survey (https://www.hashicorp.com/state-of-the-cloud)
  • 10. Copyright © NTT Communications Corporation. All Rights Reserved. 競争力としてのInfrastructure as Code Infrastructureをコードで管理することは強い組織の必要条件 ● 早くかつ安全にインフラを変更するためにはきちんとした変更管理が必要 *1 ● あとからコード化・自動化するのは手遅れになるケースが多い Infrastructure as Codeはツールだけの話ではない ● 組織として、インフラとその上のアプリケーションのライフサイクルをどう管理するか ● 組織によって、最適なツールスタックが異なる Infrastructure as Codeのツール/エコシステムが解く課題を分析し、組織に あったツールスタックを組み方を考察する 10 *1 "2020 Puppet State of DevOps Report", https://puppet.com/resources/report/2020-state-of-devops-report
  • 11. Copyright © NTT Communications Corporation. All Rights Reserved. Infrastructure as Codeを分解する Feedback loop Test Workflow User Interface どうやってインフラをコード定義するか。 どうやってインフラに設定を適用するか(順序)。 どうやってインフラが正常か確認するか。 どうやってインフラを観察し期待値に収束させるか。 User Infrastructure Infrastructure as Code 11
  • 12. Copyright © NTT Communications Corporation. All Rights Reserved. 本発表のフォーカス Feedback loop Test Workflow User Interface どうやってインフラをコード定義するか。 どうやってインフラに設定を適用するか(順序)。 どうやってインフラが正常か確認するか。 どうやってインフラを観察し期待値に収束させるか。 User Infrastructure Infrastructure as Code 12
  • 13. Copyright © NTT Communications Corporation. All Rights Reserved. Terraform、Kubernetesを例に考える 13 Feedback loop Test Workflow User Interface Terraform Kubernetes +kubectl HCL (Hashicorp Configuration Language) YAML Reconcile Loopによる コンテナ (Pod) の自動構築 Stateファイルを使った Diffの計算 宣言されたものを kubectlで1つ1つ適用 変更のPreview Dry Run 依存関係を自動解決
  • 14. Copyright © NTT Communications Corporation. All Rights Reserved. User Interface インフラを制御するコード定義であり、ソフトウェア開発者が実装・管理する対象。 ある程度の規模になると、共通的なコードと環境依存のコードを分離し、さらにテンプレートやオー バーレイを使ってコードを実装・保守メンテしたくなる。 14 ## GCP Memorystore (REDIS) ### resource "google_redis_instance" "cache" { name = "ha-memory-cache" tier = "BASIC" memory_size_gb = 1 location_id = "asia-northeast1" redis_version = "REDIS_4_0" } YAMLでリソースを1つ1つ宣言する。 HCLでリソースを1つ1つ宣言する。 ## Deployment ### apiVersion: v1 kind: Deployment metadata: name: redis spec: template: ... Terraform Kubernetes (+kubectl) User Interface
  • 15. Copyright © NTT Communications Corporation. All Rights Reserved. Workflow インフラ制御を実行する方法および、その実行順序を制御する方式。 CI/CDパイプラインの中で順序を明示的に指定(kubectlを呼ぶ順番を制御) するだけでなく、ツー ルによっては自動で順序を解決する。 15 ## GCP Memorystore (REDIS) ### resource "google_redis_instance" "cache" { name = "ha-memory-cache" authorized_network = google_compute_network.test.self_link } kubectlコマンドで明示的に順番に設定 リソース間のDependency graphを自動解決 Terraform Kubernetes (+kubectl) networkを先に構築してから redisが作 成される ### Ingress設定前にPodをReady stateにしたい ### $ kubectl apply -f resources.yaml $ kubectl apply -f gce-ingress.yaml ※ Kubernetes標準のリソースは順序を意識 しなくて良いものがそもそも多い Workflow
  • 16. Copyright © NTT Communications Corporation. All Rights Reserved. Test 定義したコードを試験する方式、および実際に設定したインフラを試験する方式。 セキュリティポリシー通り設定されているか検査することも必要(例: CIS Benchmark)。 ある程度の規模になると、インフラを設定・確認する sandbox環境が欲しくなる。 16 $ terraform plan # google_redis_instance.cache will be created + resource "google_redis_instance" "cache" { + name = "ha-memory-cache" + id = (known after apply) ... } Plan: 1 to add, 0 to change, 0 to destroy. サーバ側でリソースを作成せず検査する 適用する変更点のPreviewを見て確認 Terraform Kubernetes (+kubectl) ### Server Side Apply (option: DryRun) ### kubectl apply -f target.yaml --dry-run=server Test
  • 17. Copyright © NTT Communications Corporation. All Rights Reserved. Feedback loop 宣言したコード通りにインフラ設定を収束する方式。 過去にデプロイしたインフラのStateを持ち、今回適用するコードとの差分を計算し、期待値に収束さ せる。 17 $ terraform apply # google_redis_instance.cache will be updated in-place ~ resource "google_redis_instance" "cache" { ~ memory_size_gb = 10 } ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed. tfstateファイルに保存したstateと比較し変更を適用 Terraform Kubernetes (+kubectl) コントローラのReconcile loopにより状態 を観察・収束 Deployment/ ReplicaSet Controller が作る Deployment ReplicaSet Pod (Container) Feedback loop
  • 18. Copyright © NTT Communications Corporation. All Rights Reserved. ツールを組み合わせる 設定したいインフラの性質、管理したいライフサイクルの単位を考慮して、 ツールスタックを作る 18 HCL ArgoCD YAML Terraform Feedback loop Test Workflow User Interface 組み上げ例 (NTT Comの例ではありません) GCPリソースをデプロイ するスタック コンテナをデプロイする スタック Container Kubernetes (Deployment)
  • 19. Copyright © NTT Communications Corporation. All Rights Reserved. インターフェースの複雑化 リソース数の増大に伴い、インターフェース管理が複雑・煩雑化してくる。 一般的なProgramming言語で活用してきたソフトウェア開発アプローチを適用していきたい。 (例: コンテクストをモジュールにまとめる) 19 Feedback loop Test Workflow User Interface 依存関係がわかりにくく、 見通しが悪くなってくる (module化を進める?) 環境ごとのリソース定義を重複して 管理することで保守コストが増大 HCL ArgoCD YAML Terraform Container Kubernetes (Deployment)
  • 20. Copyright © NTT Communications Corporation. All Rights Reserved. 期待するライフサイクルとFeedback loopの乖離 単体のツールだけではリソースのライフサイクルと、実際に変更を計算・適用する Feedback loopの頻度が合わなくなってくる。 ● 本来はリソースごとに変更したいアクター、変更頻度が異なる ○ Configuration Driftを強く制限したいリソースは早い Feedback loopを ● 1つの大きなFeedback loopでは変更管理が大変 20 Feedback loop Test Workflow User Interface 全リソースを一括で 変更管理する大きい Feedback Loop (Stateを分ける?) HCL ArgoCD YAML Terraform Container Kubernetes (Deployment) プリセットされたリソース (例: Deployment, ReplicaSet) のための小さいFeedback Loop
  • 21. Copyright © NTT Communications Corporation. All Rights Reserved. Infrastructure as Codeでぶつかる壁 ● 分散するリソース定義とコスト高な変更管理 ○ 「ここを変更する場合、こっちも変更しないとダメだよ」 ● 属人的なノウハウ ○ 「ここで宣言してるリソースって何に使ってるんですか?」 ● ガバナンスを効かせにくい ○ 「この命名規則に基づいて管理してるので独自で命名しないで」 ● 独自Script/DSLの保守コスト増大 ○ 「Python + Jinjaでテンプレート化したツールをどうやって試験しよう・・」 ● アプリ開発者がコントロールできない ○ 「新しいクラウドサービスを試したい? PRを作ってインフラ担当の Approvalをもらってください。次 のリリースで適用します。」 ● 第三者の変更に気づけない ○ 「パブリッククラウド側のバージョンアップで設定値が変わっていました」 21 ※個人の経験の一例
  • 22. Copyright © NTT Communications Corporation. All Rights Reserved. Infrastructure as Codeのエコシステム ※ どのツールが良い・悪いと述べるつもりはなく、 各ツールがどのような課題を解いているのか簡単に探索していきます 22
  • 23. Copyright © NTT Communications Corporation. All Rights Reserved. Kustomize Kubernetesのマニフェスト/設定ファイルについてレイヤ管理するためのソリューション。複雑化す るUser Interfaceの課題を解く。 23 root ├── base │ ├── configMap.yaml │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays ├── production │ ├── deployment.yaml │ └── kustomization.yaml └── staging ├── kustomization.yaml └── map.yaml 共通の マニフェスト 環境特有の マニフェスト User Interface 環境差分を効果的に管理することができる ため、Kubernetes利用時の最初の選択肢 となる。 ● 共通マニフェストに対して、環境特有の設 定をOverlayする。 YAMLゆえに表現力が限定的かつ Validationが弱い印象。
  • 24. Copyright © NTT Communications Corporation. All Rights Reserved. Pulumi General Purpose Language (Javascript, Python, Golang, .NET) を使って、インフラを制御する ためのソリューション。 24 User Interface Feedback loop Workflow 一般的なプログラミング言語でマルチクラウドの設 定順序を指示 ステートを持ち、 適用すべき変更を計算 ソフトウェア開発者の手でマルチクラウド をコントロールできる ● 馴染みのある言語を User Interfaceとし て採用できる ● Stateを使ったFeedback loopがある リソース数が多くなると、過度に抽象化し てしまったり、巨大なプログラムになってし まう傾向があり、IaC専用のテクニックが求 められる。
  • 25. Copyright © NTT Communications Corporation. All Rights Reserved. 番外編: Pulumi Sample Serverless functionのlogicを書きながら、そのデプロイまで1つの typescriptで書くことができる のなど、General Purpose Languageならではの長所を活用できる。 25 API Gateway AWS Lambda
  • 26. Copyright © NTT Communications Corporation. All Rights Reserved. Crossplane 異なるベンダのインフラをKubernetesのAPIからコントロールするためのソリューション。 2021年9 月14日にCNCFのIncubating projectに。 26 Feedback loop Workflow Universal Control Plane Controlled by Kubernetes’ Reconcile Loop ユーザは宣言的APIを叩くだけで、残りはサーバ側で ステートをコントロールしてくれる。クライアント側では User Interfaceに注意すれば良いので、スケールする (はず)。 ● Kubernetesは分散コントローラとして良くできている ので、Kubernetesにまとめたいと考えるのは自然な 流れ。 コミュティが大きくなってきており、ベンダ APIの進化に タイムリーに追従できるか注目したい。
  • 27. Copyright © NTT Communications Corporation. All Rights Reserved. 番外編: PaaSの土台としてのCrossplane 複数のリソースを集約(compose) して、1つの抽象化したKubernetes APIとしてユーザに提供す ることができ、独自のPlatformサービスを構築できるポテンシャルがある。 27 from: https://github.com/crossplane-contrib/crossplane-cdk8s エンドユーザが利用する API CrossplaneのReconcile loop で複数のリソースをデプロイ
  • 28. Copyright © NTT Communications Corporation. All Rights Reserved. NTT CommunicationsのInfrastructure as Code 28
  • 29. Copyright © NTT Communications Corporation. All Rights Reserved. クラウドを活用するためのConfiguration as Data インフラ設定 (Config) をCodeではなくDataとして捉え、アグレッシブにインフラを管理。 ● Dataを最適な単位のFeedback loopで動的に検査・生成・処理する。 ○ 安全に早くインフラを変更する。また、変更頻度を意識してループ設計をする。 ● そのDataを生成するCode (User Interface) は別で考える。 ○ CI/CDはDataを処理するパイプラインと考える。 29
  • 30. Copyright © NTT Communications Corporation. All Rights Reserved. 効果的なFeedback loopを考える DevOpsのサイクルも立派なFeedback loop。 ● CI/CDパイプラインの中でConfiguration (Data) を計算・検査・適用する。 ● 適用するタイミングをコントロールし、統一的なワークフローを適用できる。 全てをReconcile loopにまとめるのは早計。 ● 分散システムで、Control Loopを手懐けるのは難しい。 ● 連続するControl loopが問題でエラーが伝搬する、または復旧できない恐怖 *1。 システムの特性によってインフラのライフサイクルを見極め選択できることが重要。 ● 例:Autoscalingを使うか、自分で観察・試験してからスケールアウトするか 30 DevOps Kubernetes Reconcile Loop vs *1 Metastable Failure in Distributed Systems, https://sigops.org/s/conferences/hotos/2021/papers/ hotos21-s11-bronson.pdf
  • 31. Copyright © NTT Communications Corporation. All Rights Reserved. 効果的なUser Interfaceを考える 構造化されたDataを処理するのに適したインターフェースを使いスケールさせる。 ● Config (Data) 生成ロジックの実装に、ソフトウェア開発のプラクティスを反映。 ● 柔軟性も大切だが、Config (Data) 構造をシンプルに処理したい。 ● Config管理のために複雑な独自システム・ルールを作り上げるのは避けたい。 ● Dataをそのまま愚直に宣言する (ハードコードする) 方が最良なケースもある *1。 31 Configuration Complexity Clock, http://mikehadlow.blogspot.com/2012/05/configuration-complexity-clock.html Configの ハードコード パラメータ地 獄 複雑な 独自スクリプト 独自DSL =Config生成 ソフトウェア
  • 32. Copyright © NTT Communications Corporation. All Rights Reserved. CUE言語の採用 ● Data unificationに特化 ○ データを任意の階層で結合し、Dataを生成できる。 ○ 結合の順序に関係なく一貫した結果を生成できる。 ● TypeもValue ○ TypeもValidationもValueであり、シンプルにDataの検査が できる。 ● プログラマビリティ ○ Module化などソフトウェア開発プラクティスを適用できる。 ○ Go APIをサポート。 32 // Data Alice: age: 20 // Type People: age: int // Constraint Member: age: > 18 // Validate Alice & People & Member Types are Values CUE Google / Borgで利用されているGCL (Configuration Language) の著者の1人であるMarcel van Lohuizenがその経験を元に一から作り上げた Configuration言語
  • 33. Copyright © NTT Communications Corporation. All Rights Reserved. Qmonus Value Streamの開発 33 Build Test Pipeline Qmonus Value Stream Delivery User Interface Workflow Feedback loop DevOpsのFeedback loopを高速に回すための内製プラットフォーム ● CUEでモジュール化したマルチクラウドの Deploymentカタログを提供 ● アプリケーション単位でパラメータを変更しながら Feedback loopを回しやすくする仕組 み (CI/CDパイプライン) の提供 アプリケーション単位で コントロールするループ TM
  • 34. Copyright © NTT Communications Corporation. All Rights Reserved. デモ1: Qmonus Value Streamを使ったデプロイ 34 Build Test Online Butique Deployment Design Pattern Pipeline Qmonus Value Stream Delivery Kubernetes Manifest Validate & Generate
  • 35. Copyright © NTT Communications Corporation. All Rights Reserved. デモ2: GCP Memorystoreの利用 35 Build Test Online Butique Deployment Design Pattern Pipeline Qmonus Value Stream Delivery Kubernetes Manifest Validate & Generate Memorystore Design Pattern GCP Manifest CUEを活用して、Package化されたDeploymentレシピをCompose
  • 36. Copyright © NTT Communications Corporation. All Rights Reserved. デモ3: GCP Memorystoreのスケールアップ 36 Build Test Pipeline Qmonus Value Stream Delivery Memorystore Parameterを変更して、再デプロイ CI/CDを活用したFeedback Loop
  • 37. Copyright © NTT Communications Corporation. All Rights Reserved. 番外編: 小さいFeedback Loopの導入 37 Build Test Pipeline Qmonus Value Stream Delivery Argo Rollouts Feedback loop 作り上げた大きいFeedback loop (CI/CDパイプライン) からリソースを切り出して、 宣言的APIで小さくコントロールしたいFeedback loopを導入していく。 ● 例: Argo Rolloutにより、Blue/Greenデプロイ処理はコントローラに委譲する。 ● 必要ならCrossplaneも使っていく。
  • 38. Copyright © NTT Communications Corporation. All Rights Reserved. 最後に 38
  • 39. Copyright © NTT Communications Corporation. All Rights Reserved. まとめ Infrastructure as Codeはソフトウェア競争力の源泉 ● アプリケーションを継続的に開発して、ユーザに価値を届ける、ビジネスを発展させるための 基礎 ● Infrastructureへ投資し続けるためのEnabler User InterfaceおよびFeedback loopをどう組み上げるかが重要 ● Configuration as Dataのプラクティスの広がり ● リソースのライフサイクルを見極めて、 Feedback loopを設計する ● User Interfaceにソフトウェア開発プラクティスを適用する ● NTTコミュニケーションズで開発したQmonus Value Streamの組み上げ例: ○ User Interface = CUE言語 ○ Feedback loop = アプリ開発者が小さく回すことができる CI/CDループ (Tekton + Pulumiの上に独自で実装したソフトウェア ) 39
  • 40. Copyright © NTT Communications Corporation. All Rights Reserved. 取り組み紹介  Qmonus Value Stream開発の取り組みと技術 ● "社内DevOps基盤、Tekton、Cuelang", Fukabori.fm, episode 50, https://fukabori.fm/episode/50 ● "Deliver Your Cloud Native Application with Design Pattern as Code", KubeCon Europe 2020, https://sched.co/ZeiY 40 その他 Infrastructure as Codeで操作できるインフラの拡充と展開も進めています ● APIで操作できるインフラ・プラットフォームサービス(Smart Data Platform)
  • 41. Copyright © NTT Communications Corporation. All Rights Reserved. We are hiring プロダクト志向で、DevOpsプラットフォーム = Qmonus Value Streamを一緒に開発し てくれるメンバーを募集しています! 41 社内で得た経験 (ユーザ検証) を元にアーキテクチャをアップデート中 興味がある方は採用ページまたは   @JunMakishi まで
  • 42. Copyright © NTT Communications Corporation. All Rights Reserved. 本発表についての問い合わせは
 NTTコミュニケーションズ イノベーションセンター
 テクノロジー部門 DevOps基盤PJ
 までお願いします
 42