Slide 1

Slide 1 text

Microsoft Azureと コンテナサービスたち ~DevOpsを添えて~ 高橋 裕也 株式会社オープンストリーム アーキテクト

Slide 2

Slide 2 text

 名前: 高橋 裕也  所属: 株式会社オープンストリーム 戦略技術推進本部  やってること: アーキテクト  好きな技術: コンテナ、フロントエンド、OCaml Who are you?

Slide 3

Slide 3 text

Microsoft Azureのコンテナサービス コンテナのCI/CD Azure DevOps 今回話すこと

Slide 4

Slide 4 text

 コンテナとは  Dockerとは  Kubernetesとは  他のクラウドサービスとの詳細な比較 今回話さないこと

Slide 5

Slide 5 text

 Microsoft Azureを聞いたことがあるか  Microsoft Azureを使ったことがあるか  コンテナサービスを使ったことがあるか 質問です

Slide 6

Slide 6 text

 Microsoft社が運営しているパブリックク ラウド(IaaS、PaaS)  2010年からサービス開始  世界2位(2019年7月時点)の売り上げ  世界1位はAWS Microsoft Azureとは

Slide 7

Slide 7 text

 Microsoft製品との親和性の高さ  AD、Windows Server、SQL Server・・・  特にAD関連については他のクラウドを圧倒  サービス数の多さ  およそAWSの倍(200~)のサービス数 Microsoft Azureの特徴

Slide 8

Slide 8 text

 AI関連サービスの充実  AI関連サービス数は主だったクラウドの中で も際立って多い  テキスト分類、画像分類、Text to speech・・・  MLなどの機械学習系 Microsoft Azureの特徴

Slide 9

Slide 9 text

Azureのコンテナサービス Kubernetes Service Service Fabric Container Instances Container Registry Web App For Containers Red Hat OpenShift

Slide 10

Slide 10 text

 Docker Registry互換のフルマネージドな コンテナーレジストリ  Azureの認証基盤と統合されている  ACRタスクという形で、イメージのビルドと かをAzure上で実行可能 Container Registry

Slide 11

Slide 11 text

 Web Appsの上でカスタムコンテナを動作 させる  Web Apps=特定の言語でWebアプリを簡単 に動作させることができるサービス  カスタムコンテナのイメージはDockerHub やContainer Registryから取得可能 Web App for Containers

Slide 12

Slide 12 text

 .NET/Javaで作られたマイクロサービスを 管理する基盤を提供  .NET/Javaで作る場合は提供されたSDKを利 用  ステートレス、ステートフルという区別がある  Azure上のサービス基盤としても利用され ている Service Fabric

Slide 13

Slide 13 text

 Linuxのコンテナ、Windowsのコンテナそ れぞれ実行させることができる  Linuxコンテナの場合、docker-composeの設 定ファイルに変換が可能  コンテナを直接動作させる場合、ステートレ ス・ステートフルという区別は無くなる Service Fabric

Slide 14

Slide 14 text

 Azureの管理するVM上でコンテナを直接 動作させる  AWSのFargateと同じ感じ  数秒のスピンアップ、メモリとCPUだけの 設定、パブリックへの公開が可能  お手軽さNo.1 Container Instances

Slide 15

Slide 15 text

 Azure上で動作するフルマネージドな Kubernetesクラスター  管理ノードはフルマネージド  エージェントノードもマネージド  エージェントノードは、タイプと数が選べる  エージェントノードのスケーリングはユーザー が行う Kubernetes Service (AKS)

Slide 16

Slide 16 text

 Azure上で動作するフルマネージドな OpenShift  Kubernetesをエンタープライズで利用す る場合に必要な諸々を組み込める  ただしミニマムコストが高い Red Hat OpenShift

Slide 17

Slide 17 text

 選択肢は他のクラウドと遜色ない  AWS Fargate的なサービス、Web Appsの拡 張、独自のServiceFabric  スタンダードはKubernetes  OpenShiftはエンタープライズ向け  直近だと大抵AKSが選択される雰囲気 コンテナサービスのまとめ

Slide 18

Slide 18 text

 AKSを使うことになったとして  アプリケーション、どうCIしていきますか?  Jenkinsと共に生きる  Jenkinsでビルド、どこかへイメージをpush  外部サービスを使う(最近の主流) コンテナサービスとCI

Slide 19

Slide 19 text

 AKSを使うことになったとして  アプリケーション、どうデプロイしますか?  手作業の温もり、念じながらkubektl  Jenkinsと共に生きる  外部サービスを使う(最近の主流) コンテナサービスとデプロイ

Slide 20

Slide 20 text

 通称三種の神器(今命名)  VCS → Github  CI/CD→CircleCI  コンテナレジストリ→DockerHub 外部サービスといえば

Slide 21

Slide 21 text

 好きなサービスを選択できる  単機能なサービスを組み合わせられる  別のサービスに切り替えられる  ソフトウェア、ミドルウェアの運用が不要  じゃあ外部サービスだ、とやってみる 外部サービスには選択の自由がある

Slide 22

Slide 22 text

 認証情報の設定が煩雑  CircleCIからGithubへの接続を許可  CircleCIからDockerHubにpushするために DockerHubのuser/passをCircleCI上に設 定  CircleCIからAKSにデプロイするために、 Azureでトークンを発行して設定 外部サービスを使っていくと・・・

Slide 23

Slide 23 text

 ビルド設定などが分散する  コードで設定できるとは言っても、各プロ ジェクトごとに設定が分散する  マイクロサービスの管理が完全に独立して いるケースはまれ  ある程度管理を利かせたい場合、それぞ れ確認しないとならない 外部サービスを使っていくと・・・

Slide 24

Slide 24 text

 認証情報の管理が辛い  各サービスごとに別々の設定方式  外部サービスごとのアカウント管理  全部がGoogle認証できるわけでもない  もっといい方法はないものか・・・ ふと思う

Slide 25

Slide 25 text

https://azure.microsoft.com/ja-jp/blog/introducing-azure-devops/ Azure DevOps

Slide 26

Slide 26 text

 2018年9月に発表  元々VSTSとなっていたものをリブランド  VSTSにあった機能をリネームしてまとめた ものがDevOps、という位置づけ  GitHubのリポジトリと簡単に統合可能 Azure DevOpsとは

Slide 27

Slide 27 text

 Azure Repos  Azure Boards  Azure Pipelines  Azure Test Plans  Azure Artifacts Azure DevOpsの機能

Slide 28

Slide 28 text

Azure Repos

Slide 29

Slide 29 text

 いわゆるGitリポジトリのホスティング機能  GitHub/GitLab/BitBucketとかと同じような 機能を提供  SSH/HTTPSでアクセス可能  無制限のプライベートリポジトリ Azure Repos

Slide 30

Slide 30 text

Azure Boards

Slide 31

Slide 31 text

 いわゆるカンバン  バックログ、スプリント、ダッシュボードなど が実装  バックログだけを使う、とかも可能  GitHub統合を利用すると、GitHubのPRと かもここから見えるようになる Azure Boards

Slide 32

Slide 32 text

Azure Pipelines

Slide 33

Slide 33 text

 CI/CDパイプライン  すごいざっくり言うと、Azureに統合された CircleCI  大きくBuildとReleaseで分かれていて、機 能的にも結構違う Azure Pipelines

Slide 34

Slide 34 text

Azure Test Plans

Slide 35

Slide 35 text

 手動テスト・自動テストの統合スイート  テストプランやテストケースを包括的に登 録、管理が可能  Test Runnerという形でテストケースの消 化やバグチケットの登録をサポート Azure Test Plans

Slide 36

Slide 36 text

Azure Artifacts

Slide 37

Slide 37 text

 Maven/Python/npm/NuGetなどのパッ ケージを保存できる  保存もPipelinesから可能  保存したものは、Maven/npm/pipなどから 利用可能 Azure Artifacts

Slide 38

Slide 38 text

 認証情報の管理負担が軽減  →マネージドにお任せ  サービスの分散による煩雑さが軽減  →DevOpsを見ればOK  設定内容の共有、一か所での管理か可能  →Releaseは一か所から使いまわし可能 Azure DevOpsで楽になること

Slide 39

Slide 39 text

 AKSを使ってるのに?  AKS ≠ 他クラウドのKubernetes  ACRとかArtifactsとかADとか使ってたらそもそ もAzureにロックインされている  どんなサービスでもロックインされる  固有機能を使った時点でロックインされている でもAzureにロックインされる・・・

Slide 40

Slide 40 text

 Azureでアプリケーションを運用している  CI/CDもAzureに載せて問題がある?  Azure DevOpsは部分的にも使える  リポジトリはGitHub、というケースにも対応  セキュリティのガバナンスを利かせたい、 とかも対応できるはず 提案:いっそ首まで浸かってみる

Slide 41

Slide 41 text

 Azureのコンテナサービスは割とバラエ ティ豊か  外部サービス主体のCI/CDは、運用が進 むと疲弊しがちかも?  Azure DevOpsで統合、というのも選択肢 に加えてみよう 今日話したこと

Slide 42

Slide 42 text

Thank you for hearing!