インフラ基盤設計について説明します。プログラムが動くためにはインフラ基盤が必要です。この基盤は時代とともに複雑化しています。パブリッククラウド、オンプレミスといった考え方もあれば、ハイパーバイザーやネットワーク、ファイアウォール。OSやミドルウェアなど、ハードウェア・ソフトウェア・ネットワークが入り混じる世界です。最近はそういったインフラ基盤のいろんな動作を全てソフトウェア化し、仮想化して動かすことも流行しています。どんなに形が変わろうとも、インフラ基盤は必要でありそれをどうやって使うか、つまり設計が必要となります。インフラ基盤設計にて問題があると、もしプログラムに全くバグがないとしても、システムが動きません。インフラ基盤がどんな環境の変化に対しても動作することが前提で、プログラムが動作します。インフラ基盤が不安定だと、どんな名開発者がシステム開発しても運用時に破たんしてしまいます。インフラ基盤設計が終わったらいよいよ実装に入るのですが、実装時に設計通りうまくいかないことがあります。思ったより性能が出なかったり、想定していた機能が使えなかったり、もしくは不安定であることもあります。その場合は設計者と話し合い、設計そのものを修正しつつ再実装を進めます。設計と実装はそこまで不可逆的なものではなく、整合性を取りながら進めます。このインフラ基盤ですが、ベンダー同士の競争も激しくどんどん機能が入れ替わったり管理画面や操作方法が代わったりします。そのうえベンダーごと買収されたりして製品名が変わったりします。Explorerでの管理画面閲覧がデファクトスタンダードだったのですが、IE収束とともに昔の画面が新しいパソコンで開けなかったりするようなこともあります。ファームウェアを最新にすれば対応されることが多いのですが、そうなったらなったで操作方法が大きく変わったりします。結局のところ、時代背景やベンダーの戦略、機器やソフトウェアの目的や情報処理の基本的な知識、いろいろな総合力をもとに戦うことが多い職種です。経験がものを言うことも多い割に、情報処理の知識もバックグラウンドとして必要で、偏りがあると仕事に支障が出る場合が多いです。次に、運用設計および実装です。これもシステム構築時の仕事となりますが、インフラ基盤構築とは完全に分けて考える必要があります。本番運用フェーズにシステムが入った際に、どうバックアップしていくか、どう監視していくか。人間による保守ができるようにはどのようにシステムに仕掛けを作っておくか、という観点です。人間による対応が必要なので、運用体制も重要です。監視を仕掛けても誰も見ていなければ意味がありません。人間系も含めて考えていきます。いざ、問題が起こった時にバックアップが失敗していれば、バックアップの意味もありません。バックアップも単にバックアップが取れればいいということではなく、確実に取られるためにはどうすればいいか。失敗したら気が付けるか。バックアップを取るためのリソースは十分かなど考える点は多いです。このように、プログラムが正常に動くようにインフラ基盤を整えるのが、インフラ設計・実装なのですが、動いているものの正しさをいかに人間が担保していくか、そして正しくないときに、どうするかを決めることが運用設計です。運用設計が十分に満たすように、監視の仕組みを入れたり、バックアップの仕組みを入れたりします。実装をきちんとやらないと、本番運用がはじまったときにエラいことになります。ちなみにわざと書きませんでしたが、インフラ基盤設計・実装にしろ、運用設計・実装にしろ、テストをきちんとやります。設計通り動くよねということを確認します。ゆるいテストをやろうものなら、本番運用時にテスト範囲外の事象が発生し、対応できないもしくはぶっつけ本番の対応をすることとなります。最後に運用保守ですが、本番運用後にシステムが正常に動作しているかどうかに責任を持つ仕事です。監視アラートを受け取りそれに応じて対応を実施します。監視アラートを見逃したりすると大変です。重大障害は全てではないですが予兆がある場合があります。その予兆があるときにすぐ対応していれば防げたのに・・というケースは稀ではありません。全ての監視メッセージを見逃さず、適切に行動し、システム影響を限りなくゼロにするように行動する。言うのは簡単ですが、こんなに難しい話はないと思います。問題はなくて当たり前。この本番運用のビジネスでバリューを出すためには、日常でやっている様々なことをドキュメント化し、ユーザーに毎月の頻度で報告すべきだと思います。ないと、「何も起こってないし運用ベンダーからも何も届かないので、毎月お金を払っているのは無駄じゃないか」みたいな議論になりがちです。したがって、本番影響の有無にかかわらず、何か対応をしたとか定常的な作業など、とにかくアピールしないといけないと思っています。仕事を構成するいくつものスキルについて、数が多すぎる上に、毎度のプロジェクトでアラカルト方式で必要になり組み合わせて提供する必要があります。情報処理の基本的な知識も重要で、基礎がないととんでもない設定を組み込んでしまうこととなります。プログラミングはほぼ不要であるものの、一部の自動化処理はシェルスクリプトが必要になったりロジックが必要になったりします。RPAもそうですが、インフラエンジニアはプログラミング能力が不要というのは違うんじゃないかなと思うことがあります。監視にしてもバックアップにしても、一部のインフラ基盤の機能を考えても、ロジックを作ることは日常茶飯事です。昔は、ネットワークに強い人と、サーバー(OS、ミドルウェア)側に強い人が犬猿の仲だったりした時代もありましたが、クラウドも現れてそんな区分も今では意味のないものとなってきました。全てのことを基盤と考えられることもあり、インフラエンジニアとは「ソフトウェア開発者以外」というざっくりしたカテゴライズに過ぎない時代です。向いている人は・・、パソコンなど機械を触っているのが大好きな人だと思います。仕事だけではなく休みの日も含めて。自己表現の一つとしてパソコンがあり、いろんなハードウェアやソフトウェアをさわるのが人生の一部となっている。そのうえで、インフラ基盤を設計・構築し、それを本番運用につなげ、安定運用を実現し、そしてユーザーが安心して使うことにやりがいを感じる。私にとっては楽しい職業だし、天職だと思ってやってるんですけど、何で人気が出ないかと言われると、熟練するのに近道がないから、ですかねえ・・。人気がない、と言われているおかげで、逆に競争相手があまりおらず、ブルーオーシャンな感じとなっています。楽しいと思える職種です。興味があればぜひトライしてほしいです。diaryでは記事更新をTwitterでお知らせしています。@orangeitems_をフォローください。はてなブログProクラウドではたらくインフラエンジニアのorangeitemsが日々気になったことを気まぐれに書いています。(1)リンクアクセス解析ツールと広告の配信について嫁のブログ記事一覧に戻るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。