ablog

不器用で落着きのない技術者のメモ

「コスパのいいシステムの作り方」の紹介

三菱UFJインフォメーションテクノロジーの南さんから献本いただきました。南さんとは一緒に仕事をさせていただいたこともありますが、難易度の高いミッションクリティカルプロジェクトを成功させられていて、こういうベンダーに騙されない目利きができる優秀なPMはユーザー企業の宝だと思っていました。
南さんのようなユーザー企業でリスペクトしている方々に共通しているのは会社のお財布は自分のお財布という感覚を持ち、各分野のスペシャリストと個人的なコネクションを持たれ、ドライな技術からウエットな組織まで筋の通った骨太な考え方を持たれて、馬力があって肝が座られてるところです。ちょっとマネできないなと感じます。
こういうスキルはなかなか人に伝えることは難しいと思いますが、本書はそれを可能な限り搾り出した一冊だと思います。自分がユーザー企業に転職することがあれば、本書を参考にさせていただきたいと思います。

著者が経験を通じて得た経験と勘(暗黙知)を脳内バッファから書出したような一冊です。
システムの「コストパフォーマンス(費用対効果)」に限らずインフラの要素技術、勉強の仕方、後輩の育て方、組織についてなど経験から得られた暗黙知が簡潔に書かれています。
日本のIT業界は内製せずにSIerに委託しているユーザー企業が多いですが、その場合、プロジェクトの成否は製品やソリューションの選定、ベンダーコントロールなどユーザー企業のプロジェクト担当の目利きや腕にかかっていると感じます。
よく、この人はこの会社にいてもらわないとと思うことがあります。
本書はユーザー企業のインフラエンジニアはもちろん、そこに提案に行くベンダーも役に立つと思います。以下、構成と目次です。

概要

「うちって,システムにお金をかけすぎじゃない?」
そんな問いに的確な判断を下すにはどうすればいいか。
「勘に頼らない技術を求めても,結局は勘に頼る部分が少なからずある」
「過去の事例と比較しても,元のコストがまちがっていれば誤りの連続になるし,すぐに陳腐化する」
そんなジレンマに悩む方のために,大規模システムを多数経験してきた著者が,最小限のコストで最大の効果を得る「勘と経験」の本質を教えます。

コスパのいいシステムの作り方 ~しっかり見積もりたいのに勘を使うジレンマに向き合う:書籍案内|技術評論社

構成

本書では,テーマごとに私の経験と勘を明らかにしていこうと思いますが,以下のスキルが重要になります。

  • ITインフラを自分で構築できるスキル
  • システムの目的(SLA)を正確に把握するスキル
  • 採用する製品の動きや仕様を把握するスキル
  • アプリケーションの動作をイメージし,どのようにリソースが使われるかを推察するスキル
  • インフラを構成する要素技術の変化,今後の見通し,価格動向を把握するスキル

これらのスキルを,本書では3部構成でまとめています。まず第1章から第8章までは,システムを構築するうえでの前提知識をまとめました。システム構築は単に技術力があればできるものではありません。幅広い知識と経験が必要で,その要素をまとめています。続いて第9章から第12章まではインフラのテクニカル要素をレイヤーごとに記載しています。何か1つの製品については触れず,どのような製品を使っても役に立つ考え方を記載しています。最後に第13章は,それ以前の章の総まとめです。実際のシステムのパターンごとに,第12章までの知識を集約して考え方を整理しています。
これらのスキルは私のこれまでの経験によるものですが,どのように考えてきたかをお伝えすることで,みなさんの経験と勘にプラスできることを願っています。

目次

出版社の紹介は コスパのいいシステムの作り方 ~しっかり見積もりたいのに勘を使うジレンマに向き合う:書籍案内|技術評論社 をご覧ください。

第1章 どうやって予算を確保するか
文化の違いで変わる見積りへの影響
プロジェクトごとの予算確保から案件化まで
予算が決まった後にすべきこと

第2章 製品を安く買うための工夫
「製品は安く、工数はほどほどに」がコツ
製品の強み、弱みを正確に把握する
ダブルスタンダードで価格をコントロールする
購入時に確認すべき3つのこと

第3章 開発費を削減するための工夫
インフラのコストを下げる基本原則
内製化を検討する
契約で考えるべき4つのポイント

第4章 可用性、性能、運用性を考慮する
システムのコストとSLA
可用性について考察する
性能について考察する
運用性について考察する
後から変わるSLAで不幸にならないためにすべきこと
後々SLAでもめないためのインフラのポイント

第5章 OSSかプロプライエタリか
バグの対処の方法によってコストは大きく変わる
OSSの強みとは
OSSの向き不向きを考える

第6章 標準化でコストダウンは図れるのか
標準化の功罪とは
コスト効率と安全性を追求する標準化の進め方

第7章 運用・保守の効率化を考える
増えていくシステム、減らしにくいランニングコスト
保守作業を合理化するための考え方
運用フェーズのコスト削減のポイント
開発・運用の分離とDevOps

第8章 教育コストと体制維持コストの負担
エンジニアが成長するための4つの基本
技術スキルの伸ばし方
教育のためのコストを捻出する

第9章 サーバー(IaaS)のコストを考える
「速いか遅いか」「壊れにくいか壊れやすいか」の2軸でコストを考える
CPUの費用対効果
メモリの強みを理解する
ディスクの故障とシステム停止を想定する
ラックマウントサーバーか、ブレードサーバーか

第10章 仮想化でリソースを効率的に扱う
見積もりとコントロールがうまくできないから仮想化が必要になる
リソースをリニアに追加・削除するときの注意点
集約率を高め、効果的に仮想化するには

第11章 ストレージを効率的に使い切る
ブロックストレージの投資対コスト
思ったよりも使えないディスク容量
ディスクの特性と価格変動を考える
ブロックストレージ以外のストレージを使いこなす

第12章 ミドルウェアがコストに与える影響を理解する
ライセンスコストが問題になりにくいAPサーバー
高額でプロプライエタリなRDBMS製品を使う理由
RDBMSで無駄なリソースを使う問題をどう解決するか
NoSQLの活用でコストは減らせるか
アプライアンス製品か、汎用品か

第13章 システムタイプごとの高コスト、低コスト
シンプルなAP、DBの構成
同時実行ユーザーが多いシステム
ミッションクリティカル系
スパコン・HPCの場合