サーバー構築を構成管理とTDDで作業する時代になってきた
ChefやPuppetなど、サーバー構築をプログラムで作成する時代になってきた。
しかも、サーバー構築を構成管理とTDDで作業するのが最近の流れのようだ。
クラウドが当たり前の時代になった今、もう一つの技術革新が生まれているように思う。
クラウドについてはまだ理解不十分だけれども、気になる記事をメモ。
【元ネタ】
Chefのテストスイーツを色々試してみた (1) - カイワレの大冒険
Chefのテストスイーツを色々試してみた (2) - カイワレの大冒険
Chefサーバを動かすまでの方法をまとめてみた(自動化のススメ) - カイワレの大冒険
2008年出版された「ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション」では、ラストマイル問題が提示されていた。
ラストマイル問題とは、いくらソフトウェアを作っても、本番環境へリリース&稼働確認するのにかなりの時間がかかってしまうという内容。
開発環境で正常動作しても、本番環境へのデプロイや本番環境相当の開発環境の構築に手間がかかる所に大きな問題点がある。
開発がTDDやCIでも、肝心の本番環境で動作しなければ意味が無い。
ラストマイル問題には3つのボトルネックがある。
一つ目は、本番環境は大規模で複雑で高価であること。
以前は、サーバーやネットワーク機器のインフラを揃えるのも高価だし、特にDB周りのミドルウェアは商用製品ならどうしてもお金はかかる。
2つ目は、本番環境というインフラを設計し、構築し、検証するコストが大きいこと。
インフラ構築はどうしてもWF型開発のように、設計重視にならざるをえない。
インフラというハードウェアの購入時からOSのインストール、DBやWebサーバーのインストールに至るまで、手順を間違えると後戻りできないからだ。
3つ目は、たとえ本番環境を用意し、テストも用意できたとしても、全てのテストを実行するには時間がかかりすぎること。
インフラ担当者ならば、サーバー間の接続テストや負荷テストを色々考えないといけない。
アプリ担当者ならば、アプリケーションのシステムテストや受入テストのテストケースも重要だが、業務系システムならば、膨大なテストデータを予め投入しておく必要もある。
そして、テストデータが多いほど、回帰テストも時間が長くなる。
しかし、ラストマイル問題のようなインフラ周りの長年の問題も、クラウドと言う新しい技術が大きく変えているようだ。
本番環境を仮想化するというだけでなく、ライブラリやミドルウェアのバージョンを構成管理して、インフラの稼働確認をテスト駆動していく発想で推し進める。
インフラというハードウェアをソフトウェアへ変換することで大きく変わる点は、何度もやり直しが効くため、アジャイルにインフラ構築しやすくなることだ。
アジャイルにインフラ構築できることによって、最初は小さく作っておき、ユーザからのアクセス数が増えてきたら動的にリソースを増やすというシステム設計が可能になる。
その分、インフラ構築の初期投資も浮くし、最初からサーバーの負荷を想定した完璧な設計も必要なくなる利点がある。
上記の記事では、Chefを使って環境構築を自動化するだけでなく、RSpecやCucumberで受入テストも行い、最後はRakeでまとめてテストできるようにして、継続的インテグレーション化していく方向のようだ。
従来のインフラ構築とは全く違うすごいやり方だなと思う。
後もう一つ注意すべき点は、ChefやRSpecやCucumberなど、Rubyで全てがまかなえること。
クラウド時代のサーバー構築では、Rubyという技術が必須になってきているように思える。
最近の技術のトレンドは、GitとGitHubにおけるPullRequest主導のチケット駆動開発、そしてRubyライブラリを中心としたクラウド技術にあると思う。
この流れを今後も追いかけていく。
| 固定リンク
「ソフトウェア」カテゴリの記事
- プログラマとスクラムが社会実装を変えていく #Findy_GovTech(2021.03.02)
- TeamsとSlack、Zoomの違いは組織文化の違いを助長しているのではないか(2021.02.15)
- マインドマップをFreeplaneに乗り換えた(2020.11.21)
- ソフトウェアの政治的影響力とは何だろうか(2020.07.07)
- DevOpsがアジャイル開発を促進する(2020.06.11)
「ソフトウェア工学」カテゴリの記事
- なぜInfrastructure as Codeが必要なのか?(2021.04.18)
- Excel駆動でWBSやガントチャートが作れない人はどこに原因があるのか? #redmine(2021.04.18)
- テスト駆動開発が抱える問題は可読性と保守性のトレードオフ #dxd2021 #streamA(2021.04.10)
- プロジェクト管理手法はプロジェクト型開発からプロダクト型開発へ変えるべきだ(2021.04.01)
- ソフトウェア開発は打ち合わせ駆動開発だ(2021.03.30)
「Git・構成管理」カテゴリの記事
- なぜInfrastructure as Codeが必要なのか?(2021.04.18)
- ITの技術や知識はツールの習得と表裏一体である(2021.03.26)
- YoutubeのCCNA講座が秀逸だった(2021.01.04)
- 変更管理プロセスが弱いとトラブルが多い(2021.01.04)
- RedmineでGitのbareリポジトリにアクセスする方法(2020.10.22)
「チケット駆動開発」カテゴリの記事
- Excel駆動でWBSやガントチャートが作れない人はどこに原因があるのか? #redmine(2021.04.18)
- ITの技術や知識はツールの習得と表裏一体である(2021.03.26)
- 変更管理プロセスが弱いとトラブルが多い(2021.01.04)
- カンバンはステータス名が大事(2021.01.02)
- GTDは箱の使い分けが鍵を握る(2020.12.09)
「Agile」カテゴリの記事
- Excel駆動でWBSやガントチャートが作れない人はどこに原因があるのか? #redmine(2021.04.18)
- テスト駆動開発が抱える問題は可読性と保守性のトレードオフ #dxd2021 #streamA(2021.04.10)
- 沢渡さんの資料「テレワークに役立つ8つのスキル」はいいね(2021.04.04)
- 要件定義プロセスはDXで終焉するのか(2021.04.01)
- プロジェクト管理手法はプロジェクト型開発からプロダクト型開発へ変えるべきだ(2021.04.01)
「Jenkins」カテゴリの記事
- 第12回東京Redmine勉強会の感想 #redmineT(2017.05.14)
- 技術的負い目の記事がすごい(2016.01.03)
- RedmineとGitLabを連携すると、RedmineをGitHub化できるか(2014.10.17)
- 「チーム開発実践入門」が発売されている(2014.04.08)
- 最近、ツールとプロセスを組合わせたソフトウェア開発手法の本が増えている(2014.04.03)
コメント