DevOpsのフローとDevOpsの実践に必要な技術

2023年10月13日(金)
新村 剛史
第4回の今回は、DevOps実践のフローを確認した上で、実際にDevOpsを行うために必要となる技術について解説します。

DevOpsに関わるエンジニアの役割

さて、ここまでDevOpsの一連の流れと、そこで使用されるツールや環境について解説してきました。これらのツールや環境は当然ながら使う人がいることに加えて、それらを利用できる環境を構築する必要があります。前述の通りDevOpsにおいては今までとは異なる技術を使ったり、同じ技術でも考え方を変えたりする必要がありますが、それに伴ってエンジニアが果たすべき役割の範囲は異なってきます。

ここからは、DevOpsにおけるエンジニアにはどのような役割があるのか、また、それぞれがどのような形で各技術に関わっていくのかを解説します。

開発チームと運用チーム

まず、DevOpsでは「開発チームと運用チームのコラボレーションを強化する」のが重要なコンセプトの1つです。「開発チームと運用チームの境目を曖昧にする」という表現もよく使われます。しかし、日本のシステム開発の実態は、DevOpsが前提とする開発チームと運用チームのあり方とは異なる部分が少なくありません。特にエンタープライズ領域で見られるようなシステムでは、開発を外部のシステム開発会社に発注し、運用自体は自社のIT部門で行うというケースが多く見られます。このような形態では、開発チームと運用チームでそもそも会社が異なるという分断が起き、境界を曖昧にすることが難しくなってしまっています。

とは言え、分断があるからといってDevOpsが実践できないわけではありません。かつては「コラボレーションを強化する」と言うと開発チームと運用チームが仲良くするといった人的なコラボレーションが想像されることもありました。しかし、DevOpsで重要なのは「プロセス面と情報面でのコラボレーション」です。これらのコラボレーションはチーム同士が同じ空間にいなくても技術や仕組みで実現できます。

例えば、先ほどの継続的デリバリーの概念でリリース準備までを開発チームが責任を持ち、本番環境へのデプロイを運用チームが責任を持つといった役割分担がされているとします。その際、CI/CDの技術を使えば、開発チームがテスト環境へアプリケーションをデプロイする仕組みと、運用チームが本番環境へとデプロイする仕組みを共通化できます。また、先ほどの運用監視からフィードバックへの流れも運用チームから開発チームへのコラボレーションを強化する仕組みとなります。

もちろん、開発チームと運用チームのコラボレーションを強化するには、技術的アプローチだけでなく組織的、文化的アプローチも加えて実施する必要がありますが、仕組みを抜きにしてはDevOpsにおけるコラボレーションは実現できません。

開発エンジニアとインフラエンジニア

チームとしては開発チームと運用チームに分類しましたが、エンジニア個人のスキルという側面では開発エンジニアとインフラエンジニアで分類できます。これらの役割はDevOpsとは関係なく、従来のシステム開発にも存在してきた役割ですが、DevOpsではそれぞれの役割が変化します。

まず、開発エンジニアの視点では自動化への対応強化が必要となります。開発エンジニアの主な役割はアプリケーションのコードを作成し、正しく動作するアプリケーションを作ることです。正しく動くアプリケーションを作るために実施するのが各種テストです。従来の開発では手作業でテストを行うこともありましたが、DevOpsにおいてテストはCIパイプラインの中で自動化されるため、コード化されたテストケースを用意する必要があります。ここで言うテストとは単体テストだけでなく、結合テストやE2Eテストなども含まれる場合があります。結合テストやE2Eテストは自動化の難易度が高いため従来通り手作業でテストを実施する場合もありますが、単体テストに関しては自動化は必須です。また、アプリケーションで使用するライブラリなどはコンテナイメージの作成時に読み込むため、開発者がコンテナの設定を理解する必要があります。従来は自分の開発環境のみを理解すれば良かったのですが、実行環境としてのコンテナが開発環境だけではなく、本番環境でも使用される点に注意が必要となります。

一方、インフラエンジニアの視点では「手段」と「範囲」の両面で変化があります。まず手段の面では、インフラ構築が手順書に沿った手作業からIaCへ変化します。主な作業はIaCのコード作成とその結果構築された環境が正しく動作するかの検証です。IaCツールに準じたコードの書き方を学ぶ必要はありますが、手順書を書いて手作業で構築するよりも作業量は減り、なおかつ構築の確実性が増します。また、範囲の面ではCI/CDの環境が含まれるようになります。従来はアプリケーション実行環境の構築がメインでしたが、CI/CDの環境を構築するのもインフラエンジニアの役割です。CI/CDのインフラ構築にあたっては単にCI/CDツールを導入するだけでなく、CI/CDのプロセスを実行する設定、テストやビルドに必要な環境の設定なども必要になってきます。

開発エンジニアとインフラエンジニア

おわりに

今回は、DevOpsの全体的なフローとそこに関わる技術について概要を説明しました。また、合わせてそれらの技術を扱うエンジニアの役割がDevOpsを採用することによってどう変化するのかといった点も紹介しました。

次回以降は、それぞれの技術を少し深掘りしつつ、その概念を説明していきたいと思います。

日本仮想化技術株式会社
外資系ITベンダーの開発者向けマーケティングなどを経て、日本仮想化技術でDevOps事業の担当。DevOps支援サービスの「かんたんDevOps」を提供中。個人でもマイカスピリットという会社を起業して、IT企業向けのマーケティングや新規事業などの支援を実施している。

連載バックナンバー

設計/手法/テスト技術解説
第18回

「Terraform」のコードを自分で書けるようになろう

2024/5/7
実践編第2回の今回は、Iacツール「Terraform」のコードを自分で書けるようになるための基礎知識について解説します。
設計/手法/テスト技術解説
第17回

Iacツール「Terraform」の基本的な使い方

2024/4/19
今回から「実践編」に入ります。実践編第1回の今回は、Iacツール「Terraform」の動作と基本的な使い方、補助的に使えるコマンドを解説します。
設計/手法/テスト技術解説
第16回

より良い監視を実現するために、無駄を省いて監視を最適化しよう

2024/4/5
第16回の今回は、システム監視を行う際に陥りやすい「アンチパターン」について解説します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています