インフラエンジニアの仕事とは?
最近、「インフラエンジニアってどんな仕事をするのですか?」と聞かれる機会がありました。インフラエンジニアという職業が最近確立したこともあって、巷では「サーバーの構築や設定をする人」という理解も根強いです。
インフラエンジニアにはどんなスキルがあるのか、私が携わってきた業務を中心にインフラエンジニアのスキルをチェックリスト形式で書き出してみました。「インフラエンジニアって何ができる人?」「インフラエンジニアを評価すれば良いの?」などのケースでお役に立てば幸いです。
インフラエンジニアのスキル
DB設計
- 要件からDB定義を作成できる
- ER図を作成できる
- 第3正規化まで正規化できる
- パフォーマンスを意識したインデックス設定ができる
パッケージ管理
- RPMビルド環境がつくれる
- specファイルが書ける
- 独自YUMレポジトリを構築できる
- debパッケージも作成できる
Webサーバー構築
- Apache・NginxでWebサーバーを構築できる
- リバースプロキシを設定できる
- エラーログが読める
- バーチャルホストが設定できる
- Rewriteのルールが記述できる
- HTTPSのWebサーバーを立てられる
- HTTP/2化できる
- 負荷分散計画が立てられる
DBサーバー構築
- MySQL / PostgreSQLでDBサーバーを構築できる
- DBサーバーのパフォーマンスチューニングができる
- ボトルネックとなっているクエリを特定し改善案が立てられる
- DBレプリケーションが構築できる
- DB MasterのHA化ができる
- DBの水平分割・垂直分割を組める
- 準同期レプリケーションが組める
- レプリケーションが停止した場合に原因対処と復旧ができる
DNSサーバー構築
- DNSの仕組みを理解している
- BINDでDNSサーバーを構築できる
- ゾーンファイルを記述できる
- DNSスレーブサーバーを構築できる
- 浸透と言わない
メールサーバー構築
- Postfix / qmailで送信メールサーバーが構築できる
- Dovecotで受信メールサーバーが構築できる
- メールサーバーのエラーログが読める
- バーチャルエイリアスが設定できる
- POP before SMTPが設定できる
- IMAPが設定できる
- SSL証明書を用いてPOP3 / IMAPSが設定できる
- スパムメールに対応できる
キャッシュサーバー
- Varnishでキャッシュサーバーを構築できる
- キャッシュ設計を立案できる
- KVSサーバーを構築できる
- CDNを利用した環境を構築できる
- CDN各社の特性を理解しコスト計算ができる
ロードバランサー
- ipvsadm + keepalivedでLVSを構築できる
- PacemakerでHAIPを構成できる
- HAProxyでプロキシサーバーを構築できる
- ヘルスチェックスクリプトを記述できる
- BIG-IPの設定ができる
監視サーバー
- Zabbixで監視サーバーを構築できる
- Zabbixプラグインを活用することができる
- Zabbixエージェントをカスタマイズできる
- Zabbixの閾値やトリガー調整ができる
- Zabbixオートディスカバリを設定できる
- 障害時にリモートコマンドを発行する設定ができる
- アラートをカスタマイズできる
- Muninでリソース監視ができる
ログ管理
- Fluentdを使ったログ収集ができる
- Fluentdプラグインを活用できる
- td-agentを活用できる
- Elasticsearchなどと組み合わせてログ分析ができる
- Kibanaで可視化できる
AWS
- EC2インスタンスを運用できる
- オンデマンド・スポットインスタンス・リザーブドインスタンスの特性を理解している
- AmazonLinuxとCentOSの違いを理解している
- セキュリティグループの設定ができる
- オートスケールの設計や設定ができる
- ELB / ALBの特性の違いを理解して活用できる
- Pre-Warming状態でELBを待機させる際の負荷の見積もりが作成できる
- AMIが作成できる
- S3 / EBSを用いたストレージ計画を策定できる
- RDSの特性を理解して運用できる
- DynamoDBをKVSとして活用できる
- Route53 + CloudFrontを使ってコスト管理しつつCDN環境を構築できる
- Lambdaを用いてサーバーレスアーキテクチャを構築できる
- AWS API Gatewayを使ったAPI作成ができる
- ElastiCacheを用いたキャッシュ設計を構築できる
- CodeDeployによるコードデプロイ環境を構築できる
- CloudWatchによる監視アラートを設定できる
- VPCによるネットワーク環境整備やVPN環境構築ができる
- IAMを管理できる
- SDKとAPIを使ってAWSツールを開発できる
- CloudFormationでAWSの構成管理ができる
- 料金シミュレートができて効率的なコスト管理ができる
仮想化
- XenやKVMを使った仮想化環境を構築できる
- OpenStackを使った仮想化環境を構築して運用できる
- NovaやNeutronなどのコンポーネントの特性を理解している
- VMware vSphereを使って仮想化環境を構築して運用できる
Docker
- Dockerで開発環境が構築できる
- Dockerfileが記述できる
- docker containerのコマンドを理解している
- Docker Composeを活用することができる
- Docker環境を本番化できる
- KubernetesでDockerクラスタを管理できる
Ansible
- Ansibleで構成管理ができる
- Playbookを記述できる
- Ansible Vaultを活用して暗号化できる
ストレージ
- CUIでパーティション操作ができる
- 各ファイルシステムの特性を理解している
- 誤って削除したファイルの救出方法を知っている
- 容量が肥大化しているファイルを特定できる
- ディスクI/Oを計測しボトルネックを特定できる
- ファイルマスクを理解している
- ファイルのタイムスタンプを変更できる
- RAID0〜RAID10までのRAID構成が組める
- ソフトウェアRAIDとハードウェアRAIDの特性の違いを理解している
- NFS環境が構築できる
- Samba環境を構築できる
- lsyncdを使ってファイル同期環境が構築できる
- テープドライブのCUI操作ができる
ネットワーク
- ネットワークレイヤーの違いを理解している
- ルーターとL3スイッチ、ネットワークハブとL2スイッチの違いを説明できる
- NICの特性を理解している
- BGPを理解している
- DHCPのルールを設定できる
- オートネゴシエーションの特性を理解しオン・オフともに設定できる
- WireSharkなどのパケットキャプチャツールを使用することができる
- iperfなどでネットワーク速度を計測できる
- Cisco IOSをCLIで設定できる
- OpenFlowを理解している
- ネットワークのボトルネックを特定できる
- YAMAHA RTXシリーズをCLIで設定できる。Luaで拡張できる
- タグベースVLANやポートベースVLANを構築できる
- PPTP / IPsecのVPNを構築できる
メモリ
- RegisterdとUnbufferedの特性の違いを説明できる
- バッファメモリを理解している
- ECCの特性を理解している
- Swapの特性を理解している
- ページキャッシュの確認とクリア方法を理解している
ラック
- サーバーのラッキングができる
- 消費電力計算と電源に応じた最適なラック設計ができる
- エアフロー予測ができる
- 美しい配線ができる
- 寒さに強い
まだまだ沢山あるけど…
(自宅でCisco Catalyst 3750-Xを設定していた時の写真)
夕方から書き始めたけどインフラエンジニアの担当領域は沢山あって書き切れませんでした。アプリケーションサーバー編・メッセージキュー編・継続的インテグレーション編・セキュリティ編などはまた次の機会に第2部で書きます。インフラエンジニアはYahoo砲の直撃のような大規模負荷に日々立ち向かう現代版もののふです。その目的は安定稼働。そして非機能要件に果敢に挑んでいきます。
大規模な負荷が来ても定例会議で「インフラからは特に何もありません」と報告できる状態を維持するため日々寡黙に孤独な戦いを続けています。
- 作者:佐野 裕
- 発売日: 2013/10/26
- メディア: 単行本(ソフトカバー)