開発工程、リリースサイクルにおける課題とその対処法
ビジネスを支える上で欠かせなくなっているITシステムは企業への導入が当たり前になり、よりスピーディーで、柔軟性のある使い勝手のいいものが求められるようになっています。
今回の記事では、開発工程やリリースサイクルは今後一体どのように改善すれば効率よく成果を上げられるようになるかを見ていきたいと思います。
2つのアジャイル開発手法を取り入れる
IoTやFinTechがトレンド入りしITシステムの需要が増す中、開発現場では短い周期でリリースを行うプロセスが注目されています。そこで重宝されているのが、次の2つのアジャイル開発と呼ばれる手法です。
エクストリームプログラミング(XP)
エクストリームプログラミングは、綿密な計画を立てず臨機応変に変更を加えながら開発するアジャイル開発法の一つです。設計・実装・テストをショートタームで繰り返し行うことで、顧客の意見や要望を都度取り入れやすくします。設計、実装、テスト、この3つのサイクル(イテレーション)を短期間で繰り返し行うのが特徴です。
スクラム(Scrum)
技術的な要素は極力取り除いて「誰のために、何のために、実現するのか」をできるだけシンプルに作成するフレームワーク、アジャイル開発法の一つです。クライアントや他部署と最初から最後までの工程(ストーリー)をシェアしながら、いつでも誰でも状況が確認できるようにしておくのが特徴です。スクラムは以下の2つの方法に分けて進行します。
スクラムタイプ詳細プロダクト・バックログ技術的改善要素、機能、開発過程を記述した計画書を作成する。変更履歴などのプロセスを残すことで、誰でもいつでも開発過程と現状が把握できるのが特徴。仕様が変更されてもすぐに経緯が追えるため、状況の把握やチームへの伝達がスムーズになるメリットがある。スプリント・バックログプロダクト・バックログから1〜4週間分の期間を抜き出したチームタスクリストのこと。予定通りにタスクが終わるかどうかを最優先で判断する。個々の分担に注視せず 「チームの仕事」 としてチームで成果を上げるのが特徴。「デイリースクラム」(朝のミーティング)を毎日必ず開き、昨日やったこと、今日やること、障害になっていることだけをチーム全体でシェア。細かい問題は個別に解決し、デイリースクラムは15分以内で終わらせることが目標。
ビジネス、開発の動きを支える上で、インフラに不可欠な「自動化」
ITシステムを開発する場合には多くの作業が発生します。開発後、新機能のリリースや更新ソフトウェアの適用、定期バックアップなどが必要で、これらは自動化されていないと手作業で行われます。
想像してみて下さい。もしもこの手作業が自動化されるとしたら…。
- 作業項目が大幅に減る
- 劇的なスピードアップ
- ヒューマンエラーの心配がなくなる
より具体的には、例えばソースコードから作り込むソフトウェアをノーコードで自動的にビルドし、設定を含めてサーバへワンアクションで展開することができます。これまで手作業で一から作り上げていたプログラミングは、GUI画面を使ってノーコードで作成することが可能となります。
自動化できる範囲はもちろんE2E、システム全体の最初から最後までを漏れなく網羅し確認、期待通りの結果が出ているかテストできます。
どこから手を加えれば自動化はより効果的なのか?
自動化を導入してみたいけれど「何を、どのように自動化」すればいいのか、どこから手をつければ効果的なのか?迷うことも多いはずです。ソフトウェアを開発する場合、2つの大事なポイントが存在します。それは、
- 要件定義の作成
- リリース
開発工程は最初と最後が重要で、この2つをしっかりと成功させることが明暗を分けます。開発工程に着手する時は、まずは要件定義をしっかりと作成すること、漏れもなければ無駄がなく、妥当な金額と計画を立てることが大切です。
そして次にポイントとなるのがリリースです。リリースは安全で確実な方法で迅速に処理し、必要ならいつでもリリース前の状態に即座に切り戻しできることが重要です。
要件定義は自動化することができません。そのため、まず最初に自動化して効果的なのはリリースサイクルです。
リリースを自動化しなければどんな状況が続くのか?
ITシステムを開発する場合、どの現場でも時間の制約が厳しく作業に十分な時間がもらえないことがほとんどです。限られた時間の中でリリース準備をどうにかやりくりしなければなりません。
一旦ソフトウェアが完成した後も、更新パッケージのデプロイや依頼された設定の追加に最後に問題ないか予めテストする必要があります。リリース後に万が一不具合や障害が発生した場合は切り戻しを行なわなければならないため、バックアップの準備やリストアに必要な時間を想定し再度報告します。
現場のエンジニアとしてはリリース作業をスムーズに行うために、できれば全ての準備のための作業について余裕を持って取り組みたいと思うはずです。しかし実際の現場では、時間に追われても失敗せず開発を終えたい、十分なテストを実行しリリースするのが理想でしょう。
リリースを自動化し「ブルーグリーンデプロイメント」を取り入れる
今すぐ改善したいITシステムのリリースにおける上記のような課題は、今自動化と同時に「ブルーグリーンデプロイメント」という手法が注目されています。
ブルーグリーンデプロイメントとは
既存のシステム(ブルー)を稼働させながら、リリースするバージョン(グリーン)を本番環境に構築した上で、ロードバランサーなどの接続先を切り替えるなどして新しい本番環境をリリースする運用方法のこと。
このブルーグリーンデプロイメントを自動化で導入した場合、既存のシステムを通常通り稼働させながら、同時にその裏で、時間をかけて次のリリースするバージョンを自動で作成できるようになります。リリースバージョンの作成はGUI画面から、プログラミングを一から組む必要はありません。上級者が細かい追加設定を加えたい場合は、JavaScriptを使って自由度高く、柔軟にテストケースを作成することも可能です。
完成したら、スケジュールに合わせて瞬時にリリースし切り替え、不具合が発生した場合はCtrl+Z(やり直し)で瞬時に切り戻せます。
リリースのために準備しなければならない項目が減れば減るほどより重要なことにフォーカスすることができ、効率良く開発に取り組むことができます。
ブルーグリーンデプロイメントと同時に覚えておきたいカナリアリリース
ブルーグリーンデプロイメントを枝分かれさせた方法の一つに「カナリアリリース」があります。カナリアリリースを簡単に説明しますと、ブルーグリーンデプロイメントにテスト工程を追加したものです。
ブルーグリーンデプロイメントは既存のシステム(ブルー)を稼働させながら、リリースするバージョン(グリーン)を並行稼働させ切り替えて公開します。切り替えや切り戻しが一瞬なのでブルーグリーンデプロイメントはリリース時に発生するリスクを最小限に抑えられる効果があるのですが、実はテスト工程が含まれていないデメリットがあります。
これを補ったのがカナリアリリースです。新バージョンをリリースする際、まず一部のユーザーだけに公開し様子見し、テスト後に本番でリリースするというやり方です。
カナリアリリースは本番リリース前に不具合を確認できるメリットがあるのですが、一部のユーザだけに公開する設定を追加するため、テスト結果を確認する作業負担が増えることも考慮する必要があります。
しかしリリース後に発生する不具合を最小限に抑えられるならば、石橋を叩いて渡る方法を選択するのも悪いものではありません。テスト工程が自動化ツールで実現できれば作業負担を大幅削減できます。
テスト自動化ツールはスクラムマスターの役割を果たす
これまで開発工程とリリースサイクルにおける課題を解決する方法として、要件定義にはアジャイル開発法を取り入れ、リリースの部分を自動化しブルーグリーンデプロイメントを導入することをおすすめしてきました。そしてここでもう一つ、ご紹介しておきたいのは自動化をスクラムマスターとして使用する考え方です。
スクラムマスターには元々、自身がお手本となって助言や指導をし成長や精神的なサポートをするメンターとしての意味と、演出家の意図に合わせて上演する内容の効果を最大限発揮させる舞台装置としての意味があります。
このスクラムマスターのメンターと舞台装置としての役割は自動化に取り入れると大変役に立ちます。例えば、ある時はエンジニアのお手本となってコードの書き方にアドバイスを加え修正を試みます。追加設定が数回繰り返された場合は全体構成をもっとこんな風に変更した方がスムーズになるなどと助言を行ったり、まるでその役割はチームリーダーのような立ち位置になってくれます。
リリースを自動化をするということは、同時にスクラムマスターを迎え入れることと似ています。開発やリリースに問題点はないか、どこか不具合が起きそうなところはないか、それらの点検をAIがカバーできる範囲で24時間365日スクラムマスターとなって自動で行ってくれます。
まとめ
開発工程はかつてのようにがちがちに固めた要件定義にせず、綿密な計画を立てないで臨機応変に変更が加えられるようにしておきながらも、当初の目的やプロセスが一目で追えるようにしておくことが重要です。
そしてリリースは自動化してAIを導入し、ブルーグリーンデプロイメントやカナリアリリースでビジネス損失を最小限に抑えながらも、スクラムマスターを利用して開発しやすい環境に整備しておきましょう。
この2つの対処法を取り入れれば業務効率は加速し業績は一気に上昇するのではないでしょうか。
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。