クラウド技術用語(2)DevOps
DevOpsとは、Development(開発)とOperation(運用)がともに協力することで、よりスピーディーに完成度の高いソフトウェアを作り上げる手法です。
開発側は、お客さまニーズにあった最新のアプリやサービスの早期提供を重視するのに対し、運用側はお客さまに不具合などの症状が起きないように安定的な運用を重視するため、開発側と運用側の要望との間のトレードオフや壁の発生してしまい、新しいサービスを迅速に市場に投入するための運用と開発チームのコラボレーション(協働)による改善が重要視されるようになっています。
DevOpsに注目が集まる背景には、「開発手法」「クラウド」「自動化」の3つの視点があげられます。開発手法は従来のウオーターフォールから、アジャイル開発の手法が用いられるようになっており、小刻みな改変によるスピードが重視されるようになっています。
また、アプリケーションのテスト環境の拡張やITインフラの変更要求が頻繁になり、開発者自身がサーバやストレージの作成や、OSやミドルウェアの設定変更などを実施するケースも増えています。
背景には、Amazon Web Service のクラウドサービスやOpenStackなどのセルフポータルによるオープンなクラウド(IaaS)環境のコモディティ化に加えて、アプリケーションの開発運用環境を支援するPaaSサービスの充実などがあげられます。PaaSにはRubyやJavaなどの言語や、複数のデータベースなど、アプリ開発に必要なミドルレイヤの環境が充実しています。さらに、サービスの提供範囲がグローバルに広がっているのもクラウドサービス採用の一つの理由となっています。
開発者がローカル開発環境ならびにクラウド上での開発・実行環境を活用し、ユーザ向けにアプリケーションやサービスを提供するモデルが一般的になっています。
運用においては、クラウドの導入で、サーバー環境の調達負荷を軽減し、運用技術者がサーバー設定などを代行できるようになってきています。さらに、徹底的な自動化を進めることで、少人数で大量のサーバーなどを運用することで、運用負荷の軽減と、開発側にリソースをシフトしていく動きが進んでいます。