サーバー構築を構成管理と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ライブラリを中心としたクラウド技術にあると思う。
この流れを今後も追いかけていく。
| 固定リンク
「ソフトウェア」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- 実践した後に勉強するのがエンジニアの本来の道(2022.01.09)
「ソフトウェア工学」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
- 「ソフトウェアアーキテクチャ・ハードパーツ」の情報リンク~マイクロサービスの設計技法の課題は何なのか(2023.11.12)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
「チケット駆動開発」カテゴリの記事
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
「Agile」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- 概念モデリングや設計原則は進化しているのか(2023.10.21)
「Jenkins」カテゴリの記事
- 第12回東京Redmine勉強会の感想 #redmineT(2017.05.14)
- 技術的負い目の記事がすごい(2016.01.03)
- RedmineとGitLabを連携すると、RedmineをGitHub化できるか(2014.10.17)
- 「チーム開発実践入門」が発売されている(2014.04.08)
- 最近、ツールとプロセスを組合わせたソフトウェア開発手法の本が増えている(2014.04.03)
コメント