SmartCloud コラム

DevOpsがうまくいかないと感じたら

2019.09.25DevOps入門

DevOpsに正解はありません

「DevOps」とは、開発担当と運用担当が連携し、アプリケーションのリリースサイクルを短縮して、柔軟な開発を可能にすることです。DevOpsはあくまで開発手法、つまり手段であり、本来の目的はアプリケーション開発を成功させることです。
「これをやればDevOps」、「やらなければDevOpsではない」、という明確な定義もありません。DevOpsを手段として目的を達成させられればよいので、自分たちのアプリケーション開発にとって重要なことは何かを見極め、それを実現するためにDevOpsを手段として実現させる考え方がまず必要となります。

 

column3.jpg

目指すは自己組織化

では、DevOpsによる開発を成功させるためのポイントはどこにあるのでしょうか。一つ挙げるとすると「自己組織化」を目指すということでしょう。
自己組織化とは、自律的に秩序を創り出す現象のことをいいます。例として雪の結晶や植物などが挙げられます。DevOpsにおける自己組織化とは、開発担当と運用担当がチームを組み、目的を達成するための手段を自律的に考え、実行するということになります。


前述したとおり、DevOpsには「こうしなければならない」という明確な定義がありません。それぞれのプロジェクトによって状況が異なるので、当然課題もその解決方法も異なります。自己組織化されたチームは、課題解決の方法を自分たちで考えていける組織ということになります。


そうはいっても、何もお手本がないわけではなく、「ベストプラクティス」と呼ばれる様々な実践的な取り組みがあります。特に「アジャイル開発」とDevOpsは相性がよく、アジャイル開発を支えるものとしてDevOpsが実践されるパターンが多いようです。

「やること」と「やらないこと」の取捨選択

では、前述した「自己組織化」されたチームを目指すにあたって、何をすればよいでしょうか。
ベストプラクティスを参考にした場合、そのプロジェクトチームに必要がないことも含まれているかもしれません。「やること」と「やらないこと」を見極めて、やらないことはやらない、あるいは後回しにしていくことが重要となります。


そうはいっても、何を「やらないこと」にするのか最初から判断するのは難しいでしょう。まずはやってみて、プロジェクトチームにフィットするかどうか確かめてみるのが近道となります。この方法はプロジェクトの立ち上げの際には無駄が多くなりますが、その後のプロジェクト進行をスムーズにするための必要なコストと捉えるべきでしょう。


また、DevOpsに慣れたメンバーがいるのであれば、まずはこれまでのプロジェクトのやり方を踏襲して同じようにやってみることで素早い立ち上げを目指すのも一つの方法でしょう。ただしこの場合も、そのプロジェクトチームに合ったやり方かどうかを確認しながら進める必要があるかと思います。

DevOpsを始めることに不安を感じたら

これからDevOpsを始めたいがDevOpsに慣れたメンバーがいなかったり、少なかったりなど、チーム全体としてDevOps経験が不足しているような場合には、コンサルティングサービスの利用を検討してもよいでしょう。


DevOpsに不慣れということは、開発手法はウォーターフォール型開発、インフラの構築や運用もそれにならう形で進めることに慣れているメンバーが多いはずです。DevOpsの手法は多くがウォーターフォール型とは大きく異なっているため、経験が豊富なメンバーほどやり方を変えるのに心理的な抵抗感があり、新しいやり方に順応するのが難しくなる傾向があるようです。


このような状況の中、DevOpsやアジャイル開発を進めていくためには、経験のあるコンサルタントにチームの立ち上げをサポートしてもらうのが近道の一つでしょう。たとえばアジャイル開発の手法としてよく採用される「スクラム開発」では、スクラムマスターと呼ばれる人が重要な役割を果たします。経験豊富なスクラムマスターを外部から招くのは良い方法でしょう。「認定スクラムマスター」のような認定資格もあるので、コンサルティングを依頼する一つの目安にすることができます。

DevOpsの継続的な実践に技術的な不安があるならば

同様に、すべてを自分たちでやるのではなく、外部のリソースを活用するという点で考えておきたいのが技術的なサポートサービスの利用です。
DevOpsの実現のためには多くのツールを活用しますが、多くはオープンソースソフトウェアとして開発されています。もちろん、商用製品としてサポートサービスが提供されているものもありますので、うまく利用すると良いでしょう。


また、様々なツールの組み合わせまでサポートされていない場合もあります。また、バージョンアップに伴って組み合わせて動作していたものが動作しなくなる、ということもあります。このような場合にはトータルに組み合わせをサポートしてくれるサービスの利用も考えたいところです。


いずれにしても、自分たちが使用する道具(ツール)をどこまで自分たちで技術的にサポートするのかは、どんなプロジェクトにおいても重要な課題です。自分たちでやることはやる、外部のサービスに任せることは任せる、という線引きをきちんと行うことが継続的なプロジェクトには欠かせないでしょう。

 

 

■□■ DevOpsとアジャイル開発との関係 ■□■
アジャイルとは、「俊敏」「素早い」といった意味の言葉です。アジャイル開発は、短い期間での開発を反復(イテレーション)する開発手法のことです。

DevOpsとアジャイル開発は密接な関係にあると言えます。DevOpsはCI/CDのためのツール活用など技術的な側面が強いのに対して、アジャイルは開発チームのメンバー間でのコミュニケーションなど人的な側面が強い開発手法です。DevOpsとアジャイルを組み合わせることで、相互に補完することができます。
たとえば、アジャイルの開発手法の1つであるスクラムでは、1週間から2週間という短い期間を「スプリント」と呼び、スプリントを反復することで開発を進めていきます。このようなサイクルの早い開発では、CI/CDツールの活用などDevOpsの手法が欠かせません。
DevOpsを実現したいのであれば、アジャイル開発についても合わせて検討、実践するとよいでしょう。

 

 

 

 

(日本仮想化技術株式会社 代表取締役社長兼CEO/宮原 徹)

 

※記載されている会社名、製品名、サービス名は各社の商標または登録商標です。

関連する記事


ページトップへ

お問い合わせ

「SmartCloud」問い合わせ

資料請求・お問い合わせ

ページトップへ