新卒インフラエンジニアを育成した話

お久しぶりでございます。諸事情によって半年近くも息を潜めていましたが、また継続的なアウトプットをしていきたいと思います。あうとぷっとあうとぷっと。

昨年からAWSに触り始めて、少しずつ研究して、今年から本番運用を開始できています。なので、そっち方面が多くなりそうなのですが、その一発目として昨年にAWSを軸に新卒インフラエンジニアを育成してみた話を書いてみます。



経緯

ウチでは一般的な新卒採用を行っています。内定が出て、入社後はエンジニアも一定期間の研修を受けて、そして配属されることになっています。

私は稀に、キャリアプランによっては内定した段階の子との面談を組まされるのですが、その時点でインフラエンジニアになるという断固たる決意を持っていて、研修の段階に入っても意志は変わらなかった野郎がいたのでインフラ部隊に入れることにしました。しましたといっても普通は、配属は本人の希望以外に人事部判断や各部署の人材希望も関わるため、そう思うようにはいきません。また、新卒エンジニアの多くはアプリケーション開発の道を最初に歩むのが基本であるため、いきなりインフラ部というのは初の試みでした。

今回の場合は、他社で数年のアプリケーション開発のバイトを経験済みだったのでその点は問題なかったのですが、ごく普通に配属運に任せていたらどこにいくか本当にわからなく、そうなると当人のモチベーションに大きく関わるため、面談縁もあったので一肌脱ぐことにしました。

配属

私がやったことは、4月に入る前から人事部に対して少しずつ、本人の希望や適性、モチベーション、そしてインフラ部での業務や平均年齢の若返りといった必要性などを説きました。

そしてちょうど、(当初は)4ヶ月後くらいにリリース予定のサービスがあり、AWSを使う予定だったのでそれを題材に育成することにしました。一人で責任持ってひとつのシステムの面倒をみることが、もっとも成長できると考えているからです。

本人には入社直後にその旨を伝え、研修をこなしつつ4ヶ月間を死ぬ気でやりきれと言うと、快く承諾したので楽しい地獄特訓の始まりです。

そのわかりやすい成果として、研修の3ヶ月間が終わった時点の配属にて、本人意思表示と外道プッシュ、そして既にサービス構築に取り掛かっているという実績からか、わりとすんなりインフラ部に配属されました。新卒配属という仕組みからするとイレギュラーな面倒くさい存在だったかもしれませんが、頑張れば配属運という要素も9割方は削れるのかなという感触でした(当社比)。

講義

よくある話でリリース予定のサービスは余裕で延期されたので、実際のリリースまでにはもっと色々やっているのですが、ここでは最初の約4ヶ月間で行った取り組みを書いていきます。

まずはマンツーマン、時には勉強会形式で複数人に対して私が行った講義の内容です。

基礎知識

  • AWS基本構成
  • DNSの基礎
  • SSLや暗号化の基礎
  • iptablesの基礎
  • syslogの基礎

  • 実践形式

  • Bashスクリプトの深淵
  • ルーティングの設定
  • NATサーバーの構築
  • Keepalivedで学ぶVIP冗長化
  • Keepalivedで学ぶ負荷分散

  • 運用

  • インフラ費用試算の方法
  • アラート&グラフ監視ツールの監視項目説明とキャパシティ予測方法
  • MySQLの監視項目説明
  • my.cnfで学ぶMySQLサーバー
  • 各種リファクタリングツールの理解

  • 物理

  • サーバーの筺体内部説明
  • IDC見学と説明 (入室管理/空調/耐震構造/19インチラック構造/ネットワーク機器(L3,L2)/サーバー設置構成/配線技術/オンサイト保守業者とのやりとり/HDD交換作業手順)

  • 課題

    こちらは、URLや目的だけを提示して独学で勉強してもらった類のものです。

    資料漁り

    2014年からはじめるAWSリンク集 | 外道父の匠 を全部読んでもらいました。今、2015年版を書いたら3倍くらいになりそう。

    ドメイン管理

    個人用のDNSドメインを持っていなかったので取得してもらいました。実際に運用管理するという点と、将来的に独自ドメインでアウトプットする場を整備することを見据えて。

    AWS

    アカウント
  • AWSアカウントの理解と社内利用状況の把握
  • IAMの理解
  • ネットワーク
  • 社内既存のIPアドレスの把握とAWSのIPアドレス設計
  • VPCの理解と設計と構築
  • VPC VPN <=> Linux VPN を接続する
  • 複数のVPCと複数のオフィスにおける運用しやすいネットワーク構成を考える
  • CloudFormationによる構成テンプレの抜き出しと使い回し
  • アプリケーション管理
  • OpsWorksを使ったアプリケーション管理
  • OpsWorksのカスタムChefによるデプロイ
  • アプリケーション管理ツールを使わない、効率的なアプリケーション管理
  • DB/KVS
  • RDSを利用する
  • RDSの冗長化構成を検証する
  • RDSの各種ストレージ仕様と費用について考察する
  • ElastiCacheを利用する
  • ElastiCacheの冗長化構成を検証する(memcached/redis両方)
  • その他
  • Custom AMIの作成と運用について考える
  • S3を利用する
  • S3をWebサーバにしてみる
  • CloudFrontを通して、S3やWEBサーバーのコンテンツをキャッシュしてみる
  • キャッシュ関連のHTTPヘッダの仕組み、ついでにHTTPヘッダ全般とステータスコード
  • DNSにCNAMEレコードを登録して、独自ドメインでAWSにアクセス

  • 監視

  • CloudWatchなのか、その他のツールを使うのか、併用するのかを考える
  • NagiosとZabbixの両方を触ってみる
  • CactiとGangliaとGraphiteを触ってみる
  • 足りない監視項目がないか、何がキャパシティオーバーになりうるか考える

  • バックアップとリストア

  • RDSのバックアップ仕様を確認する
  • ElastiCache(Memcached/Redis)のバックアップ仕様を確認し、そもそものサービスとしての要不要を確認する
  • バックアップを置く場所、単体容量、日時経過による総量、間引き を考える
  • リストアに求められるパターンを考え、対応可能な精度を把握する
  • リストア手順をまとめ、リストア所要時間を計算して把握する

  • ログ

  • 各種ログの種類を把握し、それぞれの置き場所、重要度、蓄積容量を確認する
  • 一箇所に集めるログの、収集の仕組みと蓄積サーバーの構築管理
  • 1つ1つのシステムに対してログの存在を強く意識する

  • ベンチマーク

  • 各種ハードウェアリソースの計測(CPU/ストレージ/ネットワークBandwidthと往復時間)
  • アプリケーションのスループット計測

  • インフラ費用試算

  • 新サービスの想定ユーザー数や想定トラフィックを聞いて把握する
  • 各役割が1台あたりどの程度のトラフィックを捌けるか測定する
  • サービスの性質とコストパフォーマンスから適切なインスタンススペックを提案する
  • ピークタイムに5割のリソース消費となるよう台数を推測し、その台数から費用を試算する

  • インフラ構築実践

  • サービスに必要なネットワークとインスタンスを構築する
  • SPOFになっている箇所がないか、SPOFでいく場合はその復旧時間と影響度合いを整理して説明する
  • アプリケーションエンジニアと相談しつつ、デプロイを筆頭に人的運用の仕組みを確立する
  • 監視、ログ収集、バックアップといった機械的運用を確立する
  • サービス運営者に聞いて、サービスの長期的な予定、日単位の予定、時間単位の動きを把握する



  • 細かくはもっといっぱいあったと思いますが、ザッとこんなもんでした。

    わりと本気で若い芽を摘むつもりで次々にぶっこんでったはずだったのですが、若い芽は踏んだ方が強く伸びるのか、平成生まれはITに強靭なのか、見事にやりきってくれました。よかったよかった。その勢いのままに、AWSでのリリースの一本目をほぼ一人でインフラを担当して平和に運用できているので、お互いの成果としては上々だったのではないでしょうか。

    こういった取り組みをする上で、大雑把な目標として提示した概念として、『半年で勝負を決めてしまえ』というものがありました。最初の3年やら5年やらで取り組んだ質がその後も決めると言われることがありますが、学習の高速道路が整っている今、3年は長い、半年でやりきって後を楽にしろという考えを押し付けてみました。私が数年かけてダラダラと習得していった内容を圧縮注入した感じですね、凄い凄い。

    もっというと、『早くいつでもどこにでも転職できるようになってしまえ』と言っています。この業界、1年先が見通せないというのもありますが、いつでも転職できて生活不安がない、という自信のある状態は、日々の取り組みの品質や精度を上げてくれるのでは── 技術的・政治的な面における攻守バランスに好影響となるのでは── と感じているので、なんにせよ実力は早くつけて損はないという雰囲気で取り組んでいます。


    多分、これが複数人同時となると上手くいかない気がするし、ちょうど育成題材が転がり込むかは運ですし、インフラエンジニア育成の機会自体がほぼないと思うのですが…… 二人目が来た時にあまり考えないで済むように書き留めてみた次第であります。