新春特別企画

2019年のDevOpsを支えるCI/CD動向

この記事を読むのに必要な時間:およそ 2.5 分

ソフトウェア開発におけるプラットフォーム・ツールチェーンの選択はソフトウェア開発組織づくりに大きな影響を与えます。2008年春のGitHub.comの一般公開は,それまでGitを活用していた筆者にとっても大きなインパクトでした。

それから11年経った2019年,DevOpsを支えるCI/CDは大きな変化のある局面にあると言えます。本稿では,このCI/CDに関する昨年のトピックを振り返り,今後の展開について考えてみます。

2018年に注目されたDevOpsツールチェーン

DevOpsの中核とも言えるCI/CDツールに関する第三者評価は「Forrester Wave: Continuous Integration Tools, Q3 2017」が有名です。発表から既に1年以上経過していますが,大きな変化はないように思います。

とはいうものの,2018年のうちにあったトピックスを取り上げてみましょう。

Amazon.comから生み出されたAmazon Web Services(AWS)では,AWS開発者ツール(AWS Developer Tools)が提供されています。AWS開発者ツールは,Amazon.com内部で使われているツールを一般にも使える形にしたものです。CodeCommit,CodeBuild,CodeDeploy,CodePipeline,CodeStar,X-Rayが中核コンポーネントであり,DevOpsを支えています。11月に開催されたAWS re:Invent 2018では新発表を期待していましたが,これらに関する目新しい発表は特になかったように思います。2019年は,Amazon Elastic Container Service for Kubernetes(Amazon EKS)におけるモニタリング分野のアップデートを期待したいところです。

首位AWSに続く,クラウドベンダー第2位のMicrosoft Azureからはニュースがありました。9月にAzure DevOpsが発表されました。発表当日のオンラインAzure DevOps Launch 2018基調講演は米国時間でライブストリーミングされたこともあり,深夜に視聴せずにはいられませんでした。これまでMicrosoftからはVisual Studio Team Services(VSTS)が提供されていましたが,Visual Studioの冠を外しAzureという枠組みの中にシフトされました。こちらのAzure DevOpsはPipelines,Boards,Artifacts,Repos,Test Plansから構成され,一通りのことができるようになっています。またAzureが持ち合わせる多様なコンピューティングとの親和性も高く,もちろんAzure Kubernetes Service(AKS)との連携も可能です。モニタリングについては既存のAzure Monitorが利用可能でしたが,2018年12月にシアトルで開催されたKubeCon+CloudNativeCon North America 2018(以下,KubeCon NA 2018)に間に合わせる形でAzure Monitor for containersが一般公開され,DevからOpsへの連携がよりスムーズになったと思います。カンファレンス期間中現地SeattleでAzure MonitorのProduct ManagerとAzure Monitorの開発状況について話す機会がありましたが,2019年もまだまだアップデートは期待できそうです。

そのMicrosoftに6月に買収されたGitHubからはさらにビッグなニュースがありました。

GitHub Actionsが示したイベントドリブンオートメーション

2018年10月のGitHub Universe(米国・サンフランシスコ)でGitHub Actionsが発表され,同日よりクローズドベータ(limited public betaという表記)が開始されていました。Universeにおけるキーノートでは派手なマルチクラウドへのアプリケーションデリバリが印象的でしたが,Web UI上で.github/main.workflowを組み上げていける仕様はdeveloper experience(開発者エクスペリエンス)を重視しているプロダクトに感じました。

一方でCI/CDにおけるワークフロー・パイプライン機能は先発のプロダクトにもあるため,劣後していない点に留まっているというのが筆者の感想です。他にないという優位性では,イベントドリブンなオートメーションフレームワークを提供した点を強調したいと思います。これまでのほとんどのCI/CDプロダクトにおいてはGitオペレーションやpull requestなどによりCI/CDパイプラインをトリガーしていましたが,GitHub Actionsにおいてはより多くのイベントをトリガーにできることが他プロダクトにはない特徴と言えます。

イシューの作成更新や,repoのメンバー変更など約80種類ものイベントに対応しています。エンタープライズにおける開発現場において効果を発揮するのではないかと思います。

また、2018年12月からは大幅にベータ枠が開放されましたし,今月からは3人までのレポジトリで非公開レポジトリが使えるようになりましたので,まだGitHub Actionsを試したことがない方は試してみてはいかがでしょうか。

GitLabの提供するAuto DevOps

2018年,GitLabにも動きがありました。2017年9月にベータリリースされていたAuto DevOpsが,2018年6月にGA(一般公開)されました。

Auto DevOpsとは,コードをpushしただけで,ビルド,テスト,デプロイ,モニタリングを自動的に設定するものです。テストのフェーズにはアプリケーションテスト,コード品質テスト,静的セキュリティテスト,依存パッケージのセキュリティ診断,コンテナイメージのセキュリティ診断,Review Apps,実行環境におけるセキュリティテスト,E2Eパフォーマンステストが含まれており,DevOpsを実現するのに効率のよい仕組みが用意されています。

Auto DevOpsでは,従来のようなアプリケーション実装から商用環境へのデプロイとモニタリングを人手をかけずに実現できるのがポイントです。このようなプラットフォームはこれまでもHerokuを代名詞とするようなPaaS (Platform as a Service) として実現されてきました。しかし,これらのPaaSの利用では,事業者のビジネス方針に依存するためにデータセンターの位置が限られてしまったり,プライベートなPaaSの運用のため多数のエンジニアからなる専任のチームを置かなくてはいけませんでした。

IaaS (Infrastructure as a Service) に関してはどこでも利用できるようになり,コンテナオーケストレーションツールKubernetesの信頼性が高まったこともあり,IaaS事業者によるマネージドKubernetesサービス,あるいはIaaS上でのセルフマネージドKuberentesクラスタを簡単に利用できるようになったという背景があります。GitLabのAuto DevOpsはDocker/Kubernetesのスタックを組み上げていく戦略を取っています。これにより今後のKubernetesエコシステムの進化に伴い,GitLabのAuto DevOpsも拡張され洗練されていくことが期待されます。

この数年でコンテナオーケストレーションエコシステムが成熟したと言っても,すべての開発チームがエコシステムの中のコンポーネント一つ一つを取捨選択しながら導入していくのは大変なものです。Auto DevOpsやその他の機能を持ち合わせるGitLabを導入し,リリースサイクルを高速化してみてはどうでしょうか。

GitLab Serverless

KubeCon NA 2018期間中にGitLab Serverlessが発表されました。その2週間後にGitLab Serverlessはアルファ版としてリリースされました。これまでのサーバーレスではベンダー依存が強くベンダーロックインを避けることができませんでした。

GitLab Serverlessのベースとなる技術は2018年7月に発表されたKnative,それを支えるIstio(同7月に1.0リリース)⁠そしてKnativeのラッパーCLIであるTriggerMeshです。いずれも生まれたばかりのプロジェクトですが,これらのプロジェクトの進化は早く,2019年中にはGitLab Serverlessで動く商用環境が出てくると想像しています。

本稿公開時点ではGitLab Serverlessは誰でも利用できる状態ではありませんが,前述のようにエコシステムの前進に伴い,GitLabの提供するDevOpsも進化していく点は,developer experience(DX)を向上させてくれるので,結果として,組織全体のビジネスを推進できるソフトウェア開発・運用が実現できるのではないかと期待しています。

まとめ

DevOpsを支えるCI/CDについて新しいトピックについて概説しました。CI/CDツールは単体で存在しても価値はほとんどなく,DevOpsを効率よくしデリバリを高速化できるかがCI/CDツールの選ぶ基準になってきたと言えます。

単にCI/CDパイプラインを実行できるだけではなく,クラウドと簡単に連携できるかどうかも肝になってきます。GitLabはAuto DevOpsあるいはServerlessという形でテンプレート化を進めており,導入された組織内でソフトウェアの実装からリリース・デリバリまでの時間を短縮できるような機能提供をしています。2019年もGitLabが引き続きDevOpsのリーディングプロダクトとして業界を牽引することが期待されます。

著者プロフィール

Takuya Noguchi(@tnir)

1990年代後半よりdigital transformationに従事,主としてsoftware engineeringを担当。2015年にGitLabに初めてcontributionをし,その後2017年よりGitLab Core Teamメンバー就任。民間企業にて開発チームのまとめ役や技術顧問をしつつ,OSSへのコントリビューションを楽しみとしている。2017年よりCNCF Cloud Native Ambassador。ここ数年の関心事は学部時代にやっていた強化学習。

GitLab:https://gitlab.com/tnir
GitHub:https://github.com/tnir