
技術・機能解説、ノウハウ|DevOps
DevOpsとは|CI/CDとは何か
これまでのITシステムは、業務効率化やコストを削減するための「Tool」として利用されてきました。しかし、近年では「Tool」としてだけにとどまらず、ITを利用したサービスを顧客に提供することで他社との競争優位性を得るなど、「自社ビジネスに直結する」、「直背的な価値を生みだす」面でも活用されています。
そこで重要となるのが、提供しているITサービスが、顧客からの要望にどの程度応えられるのか、という点です。
迅速な対応のためには、今までのような半年に1回といった定期的なバージョンアップではなく、顧客の声を聴き、「適時」(頻繁に)ソフトウェアを改修することが求められます。
インフラ環境としてパブリッククラウドを利用した場合、基盤の柔軟性、俊敏性は向上しますが、それだけでは肝心のソフトウェア開発・改修のスピードには直結しません。
では、どうすればスピードを加速させることが出来るのか。
その答えとして、DevOps、CI/CDについて分かり易く解説いたします。
・DevOps とは
・DevOps の 4 つの軸
・CI/CD を AWS で実現
・Ignite とは
・DevOps 支援
1. DevOps とは
DevOps の概念は下記になります。
「開発チーム(Development)と運用チーム(Operations)がお互いに協調し合うことで、開発・運用するソフトウェアによってビジネスの価値を高め、それをもって顧客に価値を届ける」
もともと開発チームと運用チームはそれぞれに役割があり、一般的には両者は対立するケースが多く、皆様も身近によく見る光景ではないでしょうか。例に挙げて説明します。
- 開発チームは、運用チームが柔軟にシステムを受け入れてくれないため、改修スピードが上がらない。
- 運用チームは、開発チームがシステムへの影響を考えずに改修した結果、障害が発生した。
開発チームとしては役割が「システムに新しい機能を追加する」に対し、運用チームとしては役割が「システムの安定稼働」であるため、両者は役割の相違から、しばしば対立しがちです。
しかし本来は、どちらも「顧客に価値を届ける」という目的のもと、業務を実施しているはずです。(開発チームが機能を追加するのは顧客の要望に応えた結果であり、運用チームが安定稼働させるのも顧客に安心して利用してもらうため)
そのため、「本来の目的は共通なのだから一緒に頑張ろうね」、というのがDevOpsの本質と言っていいでしょう。
DevOps の言葉が生まれる契機となったプレゼンテーションタイトルが「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr」(DevとOPSが協力して、1日10回以上のデプロイ)となります。
さて、文字通り、1日に10回以上のデプロイを本番環境で実施するとなった場合、「ステージング機への反映、確認テスト、本番環境へデプロイ、環境切り替え」などを手動で実施していた場合、全く間に合いません。
これを実現するために、「プログラムの反映から切り替え」まで自動化しよう!となるわけです。
2. DevOps の 4 つの軸
「プログラムの変更から環境切り替え」までの自動化を一般的にCI/CD(継続的インテグレーション/継続的デリバリー)と呼びます。
この自動化を行うためには、やはりそれなりのツールが必要になってきます。例えば、Codeを格納、バージョン管理するためのGitHub、CodeをBuildしたりIntegration 等するためのJenkinsなどが有名です。
ここで重要なのは、「自動化のためのツールを導入してもそれだけでDevOpsが出来るようになり、ソフトウェア開発・改修のスピードが上がる訳ではない」ということです。
なぜならツールを導入しただけでは、「会社の文化がDevOpsとかけ離れている」、「担当者のスキル不足により思うようにスピードが上がらない」などの問題が発生するためです。
DevOps の言葉自体に厳密な定義はありませんが、今回、もう少しわかりやすくするために4つの軸で分類してご案内いたします。
2-1. DevOps の 4 つの軸
i. Culture(文化)
- Processes、People、Technologiesが互いに影響する環境
ii. Process(プロセス)
- ビジネスと従業員のニーズに対応する為の構造
iii. People(人)
- 知識、スキル、プロセス能力を提供
iv. Technology(技術)
- コミュニケーションと業務効率の為に活用されるツールと技術
「Technology(技術)」として分類したツール以外に、「Culture(文化)」、「Process(プロセス)」、「People(人)」の3つの変革も同時にできなければ、想定した成果が出ないという事になりかねません。
2-2. 4つの軸での変革
下記は、4つの軸をそれぞれ同時に変革した場合と、しなかった場合の比較となります。

図 1. 4 つの軸での変革
4つすべてを変革した場合、「変革した変化」が発生するのに対し、どれか1つでも変革が抜けた場合、何かしらの停滞であったり、障壁があることが発生することがわかると思います。
3. CI/CD を AWS で実現する
しかしながら、ツールを導入せずにDevOpsを実施するというのはあり得ません。
変化が目に見えて分かりやすいため、まずはツールの導入から検討したいという方も、非常に多いことが予想されます。
では、ツールとして何を使えば良いのでしょうか。
ひとつの答えとして、AWSからDevOpsのためのツールが提供されています。既にAWSをご利用中の方であれば、今日からでも、以下にご紹介するツールを利用することが可能です。
● AWS CodeCommit
- ソースコードリポジトリ機能を提供するサービス。ソースコードバージョン管理ツールであるGitをサポートする。
● AWS CodeBuild
- ソースコードのインテグレーションビルドの自動化をサポートするサービス。
● AWS CodeDeploy
- アプリケーションのデプロイの自動化をサポートするサービス。
● AWS Code PipeLine
- 上記3つのツールを結合しパイプライン定義、実行管理をサポートするサービス。

図 2. DevOpsを実現するためのAWSツール(サードパーティ含む、全体像)
AWSを利用した場合、上記ツールについても月額課金のため、とりあえず触ってみることが可能です。ご興味をお持ちの方はぜひ、ご自身でも利用されてみてください。
各ツールについて更に詳しく知りたいという方は、利用例を記載した以下の記事をご参照ください。
- CodeDeployでBlue/Green方式を構成するためのパイプライン設計
- CodeBuild における DockerInDocker(dind) の活用
- CodePipelineでWebUIテスト
4. 自動でCI/CD環境を作成するIgnite™とは
AWSサービスを利用したCI/CD環境の構築に関して、自分たちで設定を行うことが、難しい、面倒であると思われる方も多いでしょう。
CI/CD環境の構築でのポイントは、プログラムを更新した際に、どのようなフローで本番機へリリースするかを規定する、という部分です。これを「パイプラインを設定する」と定義したとき、この設定に悩む方が多いのも事実です。
そのようにお悩みの方へ向けて、AWSの機能を利用したCI/CD環境を自動的に構築する仕組みをご紹介します。
パイプライン、およびサンプルアプリケーションを自動で構築、プロビジョニングする環境が、以下のサイト「Ignite™」内で無償で提供されています。
上記サイト内にて、アカウント登録するだけで、すぐにAWS環境でCI/CDを試すことが可能です。
「CI/CDに興味はあるが、どこから始めていいのか分からない」という方は、ぜひIgnite™の利用を検討してみてはいかがでしょう。数クリックでCI/CDを体感いただけます。
Ignite™について、より詳細に知りたい方は、以下の記事をご参照ください。
Ignite™を利用することで、はじめての方でも数クリックで簡単に、CI/CD環境を導入することが出来ます。
しかしながら、CI/CD環境を導入しただけで、DevOpsが目標とする「顧客へビジネス価値を届けて高める」部分まで到達するわけではありません。
前述したように、ツール以外でも「Culture(文化)」、「Process(プロセス)」、「People(人)」の領域も並行して進め始める必要があります。この変革には非常に時間と手間がかかります。
まとめ
伊藤忠テクノソリューションズ株式会社 (CTC) ではDevOpsを促進するための前出のIgnite™ とあわせて、これらの変革をお手伝いするコンサルティングサービスを提供しています。

図 3. CTCによるDevOps支援
このコンサルティングサービスでは、テクノロジー領域だけではなく、お客様と一緒にプロジェクトを進めることで、DevOpsに対応する「Culture(文化)」、「Process(プロセス)」、「People(人)」の変革に対しても、お手伝いすることが可能です。DevOpsをはじめたいけれど・・・とお悩みの方は、ぜひ以下よりお問合せください。
著者プロフィール

- 園田一史
- 伊藤忠テクノソリューションズ株式会社在職中 クラウドアーキテクト|1. 現在の担当業務 : AWSの導入・運用支援サービス「CUVIC on AWS(キュービック オン エーダブリューエス)」の運営を担当|2. これまでの担当業務 : 国産IaaS型クラウドサービスの企画導入設計を歴任