見出し画像

DevOps入門

外資系企業のソフトウェアエンジニアをしております、タロイモと言います。

初投稿となりますが、週2回ほどIT技術のトレンドやプログラミングについて書いて行こうと思いますので、よろしくお願いいたします。

今回は技術トレンドであるDevOpsについて解説していきます。DevOpsという言葉について知らない方も理解できるよう、できるだけ噛み砕いて説明していきます。

<この記事のゴール>
・読んでくれた方がDevOpsの概要を人に説明できるようになる。


0. DevOpsとは?

DevOps(デブオプス)を一言で言うと、「*システム開発ライフサイクルを短くするためのプラクティス(習慣)」のことです。

*システム開発ライフサイクル(Systems development life cycle、SDLC)とは、要件定義、設計、開発、テスト、デプロイ(世の中にシステムを出すこと)、保守などの一連の開発段階です。


1. DevOpsの目的と背景

DevOpsの目的は、先ほど述べたとおり「システム開発ライフサイクルを短くすること」です。

では、なぜ開発ライフサイクルを短くする必要があるのでしょうか。
それは*現代のビジネス背景に理由があります。

現代はテクノロジーが発達し、ビジネスを取り巻く環境の変化が早いため、ビジネスにおいて不確定要素が多い時代になりました。
緻密な計画を経て完成したアイデアやプロダクトが市場に出される時、既にそれは時代遅れになっていることが多々あります。

そんな時代に対応するためには、緻密な計画に何年もかけるのではなく、素早くプロダクトを市場に出し、市場の反応を見ながら改善していくことが重要です。

*このことについて詳しく知りたい方は、エリック・リースによる書籍『リーンスタートアップ』を読んでみてください。

DevOpsは、このようなビジネス環境に対応するために生まれました。


2. DevOpsを実現するために重要な2つのこと

⑴開発手法
DevOpsでは、開発手法がとても重要です。

旧来のシステム開発手法はウォーターフォール型と呼ばれ、緻密な要件定義を元に開発を進めます。ウォーターフォール型はその名のとおり、水が流れるようにシステム開発段階が進んでいくため、前の段階に戻ることは困難です。

大規模システム開発では、市場にプロダクトを出すまでに数年単位かかることもあります。ウォータフォール型で最新のビジネス動向を元に開発を始めても、市場にプロダクトを出す頃には変化したビジネス動向に対応できていないということが起こり得ます。

そんなウォーターフォール型の問題点を解決する手段として、アジャイル型という開発手法が生まれました。アジャイル型はDevOpsを構成する重要なキーワードとなります。

アジャイルとは『素早い』『俊敏な』という意味で、反復 (イテレーション) と呼ばれる短い開発期間単位を採用します。アジャイル型を採用することで、プロダクトの市場投入のタイミングを早くすることが可能になりました。

そして、プロダクトを市場に早いタイミングで投入することで、市場の反応を見ながら、柔軟にプロダクトを進化させていくことが可能となりました。

画像1


⑵個人の役割とチーム
DevOpsを実現する上でアジャイルがとても重要であると説明しました。

しかし、アジャイルという概念を導入しただけでは、DevOpsを実現することができません。
アジャイルを実現するためには、アジャイルを理解し、それを実現する能力がある人の存在が必要です。

ウォータフォール型の開発では、自分の担当する開発段階だけを理解できていれば問題ありませんでした。担当する開発段階が終われば、今後、そのシステム開発に関わることはほとんどないためです。

しかし、アジャイル型では何度も開発サイクルを繰り返し市場に投入する必要があるため、自分の担当する範囲だけでなく全体の開発ライフサイクルを理解する必要があります。

DevOpsにおいては、「プログラマーはプログラミングをするだけ、オペレーターはそのコードを市場にデプロイ(展開)するだけ」のような自分の担当範囲だけに責任を持つバラバラなチームではなく、チーム全員がシステム開発の全段階に責任をもち、横断的に協力していくことが大切です。

また、全段階に責任を持つためには、あらゆる段階の技術を理解することが必要です。
プログラマーもプログラミングの知識だけでなく、インフラやテストなどの基本的な知識が必要となります。
つまり、専門領域がありながらもフルスタックエンジニアであることが求められます

チーム全員が専門領域を持ちながらも全ての開発段階を理解し、協業できる。こんなチームがDevOpsにおいて目指す姿です。

画像2


3. まとめ

以上でDevOpsの概要の説明は終わりです。

みなさまに覚えておいてほしいことは、
・DevOpsは、ビジネス環境の変化に対応するために生まれた。
・DevOpsを実現するためには、チームの協業とチーム全員がフルスタックな知識を持つことが必要である。
です。

「かなり噛み砕いた説明であること」、「DevOpsにも様々な定義があること」から完璧な説明とは言えませんが、DevOpsの背景と実現するために必要なことは記述できたかなと思います。


次回は、DevOpsを実現するために個人・企業が具体的に何をやれば良いのかについて解説します。

よろしければサポートお願いします! サポートは、サービスの開発・改良や、記事を書く際の素材費とさせていただきます。 少しでも有益な情報発信をしていけるよう努めてまいります。 是非とも応援よろしくお願いします!!!🙇‍♂️