サーバ/インフラエンジニアの役割
「インフラ(インフラストラクチャー)」という言葉は、業界や分野によってその指す範囲・含まれる技術が大きく異なります。IT業界でインフラといった場合、ネットワークやサーバ、OS、ミドルウェアなどを含む範囲を指すことが多いでしょう。近年のWebシステムを構成する以下の技術スタックのうち、ミドルウェア以下を指すイメージです。
- フロントエンドアプリケーション
- バックエンドアプリケーション
- アプリケーションフレームワーク
- アプリケーションランタイム
- ミドルウェア
- OS
- ネットワーク
- ハードウェア
- コロケーション/ファシリティ
ITインフラは、サービスを利用するユーザの目に触れたり、ユーザが直接操作したりすることはないものの、安定した価値の高いサービス提供になくてはならない重要な、まさに「基盤」と言えるものです。そして、サーバ/インフラエンジニアとは、ITインフラの構築・運用・監視といった業務を担当することによってユーザ・開発者・経営者など多くの人々を支える、縁の下の力持ちなのです。
現代のインフラエンジニアに求められる知識
近年、ITインフラを構築・管理するための作業は大きく様変わりしました。何より大きな変化は、物理的なモノを直接管理していた時代から、コード化されたインフラをソフトウェアで管理する時代に変わったことでしょう。
たとえば「新規ITサービス提供のためのサーバ導入」という作業を考えてみると、かつては1ヵ月以上の期間が必要だった「機器の選定」「機器の調達」「OS・ミドルウェアの導入」「環境構築」といった作業も、今ではクラウドサービスの管理画面上で何回かクリックするだけで、宣言的に定義された構成に従い自動的にプロビジョニングが完了します。インフラのコード化には、バージョン管理、テスト、CI/CDといったソフトウェア開発の現場で培われたノウハウを活用できるメリットがあり、今では関連するツールやサービスの活用が必須となっています。
また、現代はパブリッククラウドを利用したサーバ/インフラ構築が主流です。そのため、サーバ/インフラエンジニアには、パブリッククラウドの各種サービスに関する知識を学び、クラウドサービスの管理ツールやDocker/Kubernetesといったコンテナ関連ツールを使いこなすことが求められます。
さらにDevOpsやSREといった新たな手法も、インフラエンジニアの業務に大きな影響を与えています。
OSやネットワークの知識は今も変わらず必須
ここまで読むと、構成管理ツールやパブリッククラウド、コンテナツール等を使いこなす力こそが、現代のインフラエンジニアとして必要な能力のように思えるかもしれません。事実、OSやミドルウェアを手作業で導入したり、物理的な機器に直接触れたりといった機会はずいぶん減っています。
しかしながら、OSやネットワークに関する知識が不要になるわけではありません。手軽に利用できるパブリッククラウドの向こう側では、今も同様に物理的なサーバやネットワーク機器が稼働し、ITインフラを支えているのです。OSやネットワークを直接設定する機会がゼロになるわけではありませんし、これらに関する深い知識は、トラブルシューティングやパフォーマンスチューニングといった場面で必ず役立ちます。また、セキュリティ対策やシステム監視などは今も重要な業務であり、変わらず求められる知識と言えるでしょう。
サーバ/インフラエンジニアが業務でカバーすべき範囲は広く、そこで使われる知識や技術もさまざまです。ツールやサービスに任せられる作業は自動化し、常に新たな技術や知識を吸収してそれを実践し、多くの人々と連携しながら業務を行う力が求められています。