Webがインフラとなりつつあり、クラウドコンピューティングが普及し始めている現在、「ちゃんと仕事のできるインフラエンジニア」は圧倒的に不足している。インフラを基礎から学び直し、市場価値のある優れたインフラエンジニアを目指そう。
今回はまずLinuxやネットワークの基礎について、tech campのカリキュラムの内容を抜粋して、解説していきたいと思います。本記事では概要のみを紹介しますが、「ちゃんと仕事のできるインフラエンジニア」になりたいという読者は、この記事の内容に沿って学習を進めていただければと思います。
tech campの実践コースであるトレーニングは、現在のところ全部で25のコースに分かれています。生徒はこれらのコースの中から学びたいものを選び、1つずつクリアしていくことになりますが、未経験者やそれに近い状態の場合には、最初に「Linux管理」というコースを選択してもらいます。
「Linux管理」では、その名のとおり、Linuxを管理するための基礎的なことを学びます。ちなみにtech campでは通常、CentOSを使ってトレーニングを進めます。
最初の一歩はなんといってもOSのインストールです。tech campでは、OSのインストールをとても重視しています。OSのインストールから学べることはとても多いからです。
「OSのインストールなんて必要な場合にやるもので、大事なのはOSを入れた後のことだ」
とか、
「OSのインストールにこだわるなんて意味がない。最小限の労力で済ませたい」
と思う人がいるかもしれません。しかし、筆者はそうではないと考えています。
OSインストールの一連の作業の中では、OSの下にある部分がいろいろと垣間見えますし、そのディストリビューションの考え方や方針も見えてきます。
まずはOSのインストールを自由自在にできてこそ、プロフェッショナルなインフラエンジニアとしての道が踏み出せるというものです。
現実に、サーバエンジニアだけどOSをインストールしたことはあまりなく、すでに構築された環境上での作業ばかりしている、というケースがあると思います。実際、OSのインストールは普段の作業ではあまりやる機会がないのですが、とことん体験してほしいと筆者は考えています。極論ではなく、100回くらいはOSのインストールを体験した方がいいでしょう。それも、同じディストリビューションばかりでなく、FreeBSDやOpenSolarisなどを体験するのもいいと思います。
例えばファイルシステムだけをとっても、HDDのパーティションをどうするか、LVMを使うか使わないか、LVMを使う場合の構成はどうするか、RAIDを組むかなど、さまざまな選択肢があります。ファイルシステムはOSの根幹です。ファイルシステムに対する知識は、初心者と上級者を明確に分けるポイントになります。どういうファイルシステムだとどういう特性をもっているのか、どうチューニングすればいいのか、障害時にはどう復旧させればいいのか、そもそもどういう設計が個々のケースで望ましいのか、ブロックデバイスとは何か、RAWデバイスとは何か、RAIDは0/1/3/5/10などでどういう特徴があるのかなど、ファイルシステムに関する部分だけでも、知る必要のある要素は山のようにあります。そして、こういう部分に詳しいということが、「できるインフラエンジニア」になるためのポイントでもあります。
ファイルシステムに限らず、一般的に卓越したインフラエンジニアになればなるほど、レイヤーの低い側(ハードウェアに近い側)に詳しくなっていくものです。低いレイヤーに関する部分は、「とりあえずWebサーバを動かしている」というレベルのうちは、登場しないトピックだからです。
OSのインストールというと、問題が起こりにくい、好ましい(?)設定のみを使って、極力問題がないように切り抜けるという方針があり得ます。しかし、それでは「できるインフラエンジニア」にはなれないと思います。ネットワーク環境から独立したマシンであれば、OSのインストールでミスをしても困らないですし、OSのインストールでハードが壊れることもないのですから、思う存分トライしてみてください。
ネットワークの設定も、OSのインストールにおいて重要な部分です。もちろん、OSをインストールしたあともIPアドレスやネットマスク、ルーティングなどを変更する機会はあるでしょう。とはいえ、ほとんどのケースでは、これらを意識するのはOSのインストール時だけではないでしょうか。また、ネットワークの設定は間違えるとリモートから何もできなくなりますが、OSをインストールしているときはコンソールで接続しているので、なにかをやらかしてネットワークが切断されても困りません。前述したように、失敗しても構わない状況で、いろいろなことにトライするのは、経験値を積むためにとても良いことです。
パッケージソフトを使うか否か、という問題について。これは反対意見があるかもしれませんが、筆者個人としては、パッケージを本番運用の環境で使うのはあまりいいとは思いません。パッケージはリファレンス(参考)にとどめるのがいいのではないでしょうか。
どういうソフトがあるのか調べるとか、設定ファイルを参考にするとか、取りあえず動かしてみたいとか、そういった目的のためにパッケージを利用すること自体を否定するつもりはありません。しかし、いざプロのインフラエンジニアとしてサーバを構築し運用するのであれば、パッケージで入れたものを使うのはお勧めできません。
本番環境で動かすものについては、どういうconfigureやmakeを実行してコンパイルしたか、どういうライブラリを入れたか、バージョンは何だったか、どういう設定をしたかなど、すべて把握したうえで使わなければなりません。
「yumで入れたら依存関係とか勝手にやってくれて楽勝!」と思うようでは、「ちゃんと仕事ができるインフラエンジニア」にはなれないと筆者は考えています。
OSのインストールという観点では、パッケージも自由自在に選択できるようになっておくといいでしょう。開発サーバをさっと作りたいときや、デスクトップ用途で使うときなど、便利な点もあります。
Copyright © ITmedia, Inc. All Rights Reserved.