全4700文字

Netflixの取り組みを参考にして、DevOps基盤のコンセプトを固めた。DevOps基盤の構築に当たっては、インフラ構築に関するツールを活用して環境を整えた。IaCツール、コンテナ、マネージドサービスなどを活用し各種機能を実装した。

 三越伊勢丹のDX(デジタルトランスフォーメーション)を推進する目的で、筆者らは2つのIT基盤を整備しました。1つは、アプリケーションのインフラ構築や運用を効率的に行うための「DevOps基盤」。もう1つが、基幹システムとの連携を容易にするための「ビジネスプラットフォーム」です。

 今回はDevOps基盤の中から、アプリケーションのインフラ構築の部分に絞って、その狙いや実装した機能などを解説します。

DevOps基盤はNetflixを参考に

 まず、DevOpsについて紹介します。筆者らはDevOpsに取り組むに当たり、その第1ステップを「インフラ構築や運用に関するツールを整備し、開発チームがセルフサービスでインフラ構築や運用を行えるようにすること」と定義しました。

 そこで筆者らが参考にしたのは元Netflixのクラウドアーキテクトであり、AWS(Amazon Web Services)のクラウドアーキテクチャーのVP(Vice President)として知られるAdrian Cockcroft氏が2012年に書いたブログ「Ops, DevOps and PaaS(NoOps) at Netflix」です。

 Netflixといえば、マイクロサービスに取り組むなどクラウド活用の先端企業として知られています。このブログには当時のNetflixにおいて、DevOpsがどのように実現されているのかが詳細に説明されています。以下がその要点です。

  • Netflixの開発部門には数百人の開発者がいる
  • 開発者がサーバーを立てたいとか、データベースを追加したいといった場合には、ツールを使ってセルフサービスで作業を行う
  • 開発者は、上記のようなことをするときにインフラ部門や運用部門に依頼する必要はない(そもそも、Netflixにはインフラや運用に関する作業者がいない)
  • こうしたツールの整備は、開発組織にいる数人のDevOpsエンジニアが行っている
  • 私たちは、この取り組みをDevOpsの進化版としてPaaS(Platform as a Service)あるいはNoOpsと呼んでいる

 特に重要なのは以下の2点で、これが、そのままDevOps基盤のコンセプトとなりました。

  • インフラや運用作業を自動化するためのツールが整備されていること
  • 開発者自身がそのツールを使ってセルフサービスで作業を実施すること

何をツール化するのか

 インフラや運用に関する作業は具体的には、インフラの構築作業、アプリケーションのビルド&リリース作業、運用監視作業の3つです。これらの作業を、どのようにツールとして整備したのかを紹介します。

 まずインフラの構築作業です。例えばサーバーを追加するといったことを考えてみます。サーバーを新規構築する作業には、IPアドレスやドメインの発行、ネットワーク経路の設定、さらにはセキュリティー設定などの付随作業が含まれています。

 サーバーがインターネットに公開されるのか、それとも社内公開のみなのかといった要件によってネットワークセグメントやセキュリティー設定は変わってきます。

 また、サーバー内にはOS、開発言語の実行環境、アプリケーションサーバーあるいはデータベースなどのミドルウエアをインストールしておく必要があります。

 ここで利用したツールがIaC(Infrastructure as Code)ツール、コンテナ(Docker)、マネージドサービスでした。

図 コンテナの利用イメージ
図 コンテナの利用イメージ
アプリ実行環境をコンテナで管理
[画像のクリックで拡大表示]