インフラエンジニアの果たす役割と求められるスキル

#エンジニアブログ

「システム開発」と聞くと、まず「プログラミング」を思い浮かべる人が多いと思います。もちろん、このイメージは間違ってはいませんが、システム開発で必要なのはプログラミングだけではありません。開発するソフトウェアが動作する環境も合わせて用意する必要があります。具体的には、サーバーやネットワークなどの設計、構築、運用を行います。これらの仕事はインフラエンジニアが担当します。今回はインフラエンジニアの仕事について説明します。

 

 

■インフラエンジニアの仕事

インフラエンジニアは、サーバーを担当する「サーバーエンジニア」とネットワークを担当する「ネットワークエンジニア」というように、さらに専門的に分けられていることもありますが、主にシステムが動作する環境の設計、構築、運用(保守)を行います。さらには、プログラミングやセキュリティ対策、データ移行作業なども行う場合もあり、仕事は多岐にわたります。

 

1.設計

「インフラ設計」は開発するシステムに適したサーバーやネットワークの配置を整理する作業です。具体的には、以下を考慮しながらシステムの物理構成図と論理構成図を作成します。

 

  • インフラの予算はいくらか
  • どのようなサーバー(APサーバー、DBサーバー、など)がいくつ必要か
  • 用意するサーバーのスペックはどの程度必要か
  • サーバー同士をつなぐネットワークは何が望ましいのか(インターネットか、専用線か、など)

 

物理構成とは、実際に存在するサーバーやネットワークがどのように繋がっているのかを示したものです。それに対して、論理構成とは、言葉の通り論理的なシステム構成を示すものになります。たとえば、用意するサーバーの数は1台でも、実際には仮想化技術を用いて1台のサーバーの中に複数の仮想サーバーを構築することがあります。このような場合、物理構成でのサーバーの数は一台ですが、論理構成だと複数のサーバーがあることになります。

ただし、最近ではクラウドサービスがあるため物理構成は設計せずともシステム開発は可能です。仮想サーバーを一つ借りることで、物理的なサーバーを管理する必要は無くなります。自社で物理サーバーを用意するのか、クラウドサービスを利用して仮想サーバーを構築するのか、などを計画するのもインフラエンジニアの仕事です。

 

2.構築

「インフラの構築」は、用意したサーバーやネットワークの設定を行う作業になります。OSやミドルウェアをインストールし、サーバーやネットワークの設定を行い、構築手順書を作成します。ここでは紹介しきれませんが、その他の細かい作業も発生します。

構築する環境の数はプロジェクトによって異なりますが、多くの場合は「システム開発用の環境」、「システムの検証用の環境」、「本番環境」など複数作成する必要があります。それぞれにシステムの構成が異なったり、使用する製品のバージョンが異なったりするので、各環境で独自の設定をすることが多いです。

構築が完了したら、設定が正しくできているのか、テストを行います。インフラを構築するにはOSやミドルウェア製品に対する深い知識が求められます。

また、最近では「DevOps」と呼ばれる考え方を導入する企業もあります。「開発チーム(Development)」と「運用チーム(Operations)」が連動することで、システム開発・運用のスピードアップや効率化を実現する考え方で各チーム横断的な協力が必要なため組織的に取り組むケースが多いようです。

 

3.運用(保守)

システム開発中や本番稼働中に発生した障害の調査・対応もインフラエンジニアの仕事です。障害の報告を受けた際は、原因と考えられる部分を一つ一つ確かめながら原因を探ります。たとえば、二つのサーバーの通信ができなくなった、という障害が発生した場合、アクセスログに出力はあるか、二つのサーバーやそれをつなぐネットワークの設定に問題は無いか、ハードウェアは故障していないか、など考えられる原因を一つ一つ調べていき対応をします。

 

 

■インフラエンジニアに求められる知識

インフラエンジニアに、ハードウェア、ネットワーク、ミドルウェア、など多くの知識が求められます。

 

・ハードウェア

現在はクラウド上でのシステム構築が流行しており、ハードウェア(サーバー、ネットワークなど)の管理を外部に任せる機会も多くなりました。クラウド化はすべてを専門の業者に任せることができるので、管理コスト面を考えるとメリットがあります。しかし、管理を委託すると利用者側で制御できない部分が増えることや、セキュリティ面の問題などのデメリットもあることから、オンプレミスで構築するべきシステムも存在します。システムに対する要件を正しく理解して、クラウドかオンプレミスかを検討します。そして、オンプレミスで実装することになった場合は特に、ハードウェアの知識が欠かせません。

 

・ネットワーク

ネットワークの知識は特にインフラの設計・構築で必要になります。システムをつなぐネットワークは、インターネットを利用することもできますが、専用線(通信業者が特定の顧客のために用意する通信回線)を選択することもできます。どのネットワークが絶対的に優れているということはなく、価格面、性能面、セキュリティ面を考慮し最適なものを選択する必要があります。

 

 

・ミドルウェア

ミドルウェアとは、アプリケーションとOSの中間的な働きをするソフトウェアで、「Apache HTTP Server」、「Tomcat」、「Oracle」などがあります。ミドルウェア製品は役割が同じであっても提供する会社によって特徴や設定方法は異なるため、各製品を理解して選択していく必要があります。Oracleは「Oracle Master」という専門の資格があり、参考書籍も多数出ています。「Apache」や「Tomcat」はそれそのものだけを学ぶ検定試験はありませんが、基本情報技術者などで取り上げられたりしますし、参考書籍はたくさん出ているため、それらを利用し学習することが可能です。

 

今回はインフラエンジニアの仕事と求められる知識について説明しました。インフラエンジニアの知識は、机の上では勉強できないことも多いので、仕事を通して必要なスキルを習得していくことがおすすめです。

関連する記事