この記事はインフラ構築の見積もりを出したら、思ったより高かった!インフラ構築ってクラウドを使えば安く簡単にできるんじゃないの?と思われている方に、インフラ構築について詳しく説明した記事です。これを読めば、見積もり金額の謎が解けるはずです!
えんじ色が好きなヒデマサです。現在はbalconiaのSystem Solution事業部にてAUL(Assistant Unit Lead)として主にクラウドを利用したインフラ環境構築をしております。
最近お客様との打合せの場にも参加したり、インフラ構築の見積をお客様に提出する機会が増えてきたのですが、お客様とお話しをしている時にインフラエンジニアとお客様との間に認識の乖離があるなと思ったので、今回はその開きを埋められるような情報をお伝え出来たらなと思います。
■「インフラ構築ってこんなに工数かかるんですか?」
ここまで直接的に質問されたことはありませんが、「インフラ構築ってこんなに工数かかるんですか?」という反応を頂くことはあります。
~~~~~~~~
A(エンジニア)「この構成ですとこれくらいですかね」(見積提示)
B(お客様)「あー、なるほど…ふむ。(こんなにかかるのかぁ…)」
A(エンジニア)「いかがでしょうか。(これくらいかかるんです。。)」
~~~~~~~~
みなさんの中にも、AさんやBさんの立場になったことがある人がいるかもしれません。
Bさんは「なんでこんなかかるんですか?」なんて聞きづらいですし、発注側にスキルがないと思われると、その後の交渉がしにくくなると思われているのでしょうか?あえてこの場では聞かないという雰囲気を感じることもあります。しかし、見積もりの中身をきちんと理解していないと、お互いに後々後悔することになると思うので、今回は「なぜその見積もりの金額になるのか?」という謎を紐解いていこうと思います。
■インフラ構築の手順
じゃあ早速構築していきましょう!まずはサーバを建てて…
ということは通常ありません。
インフラ構築は、通常上図のフローで進んでいきます。アプリ開発と同様にお客様とたくさん会話をして、お客様の求める要件を確認し、要件を満たせるように設計し構築していきます。
そのために、最初の計画と設計時点では、かなりお客様と密なコミュニケーションが必要になります。それぞれのフェーズごと具体的な作業について、このあとの章でご紹介します。
■インフラエンジニアの具体的な作業と重み
前述の通り、インフラ構築にはたくさんの工程があります。
ここからは各工程における具体的な作業をご紹介します。
1.計画
見積の段階で、ある程度の概要は把握しているので、更に細かいところまで詰めていきます。何を作りたいか、どんな機能を盛り込みたいかといった「機能要件」についての要件はお客様から積極的にお伝えいただけますが、「非機能要件」はお客様からご要望いただけないことが多いです。なぜなら「非機能要件」と呼ばれる24時間365日止まらない性能や可用性、拡張性、運用のし易さ、セキュリティなどについてはお客様自身が明確に認識していないことが多く、何が正解なのかをイメージしにくいためです。
このフェーズで、お客様のそういった潜在的なご要望をしっかりとヒアリングしていきます。さらに、全体のスケジュールやタスク、この時点で決められないこともあるので、後で決めなければいけないことを洗い出していきます。
2.設計
お客様が作りたい理想形を把握し、タスクの洗い出しが大体終わってきたら、それを満たせるシステム設計を行います。見積り段階である程度のシステム構成図は作成していますが、計画時点のヒアリングを受けて、システム構成図をブラッシュアップしていきます。
そして具体的にどのようなサービスを使って、どのような設定をしていくのかを決めて設計書を作成します。(実際は構築している間に要件が明確になることが多いので、先にサーバを完成させてから設計書に起こしていくことが多いです。)
ハードウェアを決めるだけでなく、ミドルウェアは何を使うのか、ソフトウェアは何を使うのかも決めていきます。(計画の段階で予め決まっていることもあります。)
この時点で、リリース後の運用設計も行います。
一度リリースされると、セキュリテイの観点から気軽に本番環境には触れられなくなります。リリース後に更新作業が必要になった場合は、都度お客様に作業申請をし、許可されてから本番作業をするようになるので、その承認申請フローや、障害発生時の連絡フロー等をお客様と協議してドキュメント化していきます。
こちらは運用フェーズに入るまでに完成していればよいので、必ずしもこのタイミングで完成する必要はありませんが、リリースするまでには作成します。
3.構築
ここまできて、やっと構築に入ります。
フロントエンジニア等が環境の構築を待っているため、まずは開発や検証ができる環境の構築をできる限り早く構築します。可用性などは一切考えずに、スピード重視で構築するので数日もあれば完成します。この構築部分の作業のみをインフラエンジニアの仕事だとイメージしている方は多いのではないでしょうか?実は私はそうでした。
しかしこれでは終わりません。むしろここからが本番です。
計画段階でお客様とヒアリングした「非機能要件」に合わせて、設定していきます。例えば以下のようなことです。
・可用性について
・IP制限やネットワーク設定
・ログの出力や保管期間
・セキュリティはどうするか
・監視設計はどうするのか
・障害発生時の振る舞いについて etc…
このような設定を含めて設定が完了したら設計書を修正します。
一通り完了したらこのフェーズは一旦完了です。
4.テスト
テストというと「このボタンは正しく動くのか?」とか「正しく画面遷移するのか?」といった機能面でのテストをイメージする方も多いと思いますが、実はインフラにもたくさんのテストがあります。
・サーバ疎通テスト
・性能テスト
・脆弱性テスト
・監視アラートテスト etc…
ここで結果がNGとなると、原因調査から再設定、再テストを実施し、NGがなくなるまで繰り返します。
すべてが完了したら構築が完了します。
5.運用
構築が完了してもインフラエンジニアの作業は終わりません。次は実際にサービスの運用が始まります。
障害発生時の調査や対応、月次報告書の作成、利用しているミドルウェアやソフトウェアの脆弱性調査やその対応等、そのサービスが終了するまで続いていきます。
全ての工程において並行してアプリケーション開発も行われていますので、ネットワーク周りの設定やアプリケーションのログ出力場所、ログ出力ルールの調整などのアプリケーションエンジニアとの連携も必須です。
■まとめ
インフラエンジニアと聞くと、「サーバを建てるだけでしょ?最近はAWS(Amazon Web Services)とかクラウドを使えば、ボタン一つでサーバやDBを建てられるって聞くし、楽勝じゃん!すぐに安価で作れるでしょう!」というイメージを持っている方も多いと思います。実際に私はそう思っていました。
確かにサーバを建てること自体はボタン一つで可能です。
しかしそれ以外の作業が実はたくさんあることをお伝えしたく、今回は記事を書かせていただきました。
長くなりましたがいかがでしたでしょうか?
今回の記事を読んで、「なぜその見積もりの金額になるのか?」というその謎は解けましたでしょうか?インフラエンジニアは、ボタン一つでサーバを作るだけでなく、むしろその前と後にこそ、真価が問われる仕事なのです。
この記事で、少しでもイメージを掴めていただけたら嬉しいです。そして、丁寧にお客様の潜在的な非機能要件もヒアリングして、構築するbalconiaのインフラチームと一緒に仕事をしたいなと思っていただけたらもっと嬉しいですw
balconiaのヒデマサに、わかりやすいインフラ構築の見積もりを出してほしい!
サーバーをクラウドに移行したいので、相談したい!などなど
お問い合わせはこちらまで↓
株式会社エム・フィールド
営業統括本部:mf_sm@m-field.co.jp