インフラエンジニアについて今日は紹介するよ!
- インフラエンジニアって?
- インフラエンジニアの仕事内容って?
- インフラエンジニアの年収は?
- インフラエンジニアの今後は?
などの疑問をお持ちの方の悩みを解決できる記事になっています!
この記事では、現役のエンジニアがインフラエンジニアの仕事内容や今後の将来性、インフラエンジニアになる方法について解説します!
記事を読めば、インフラエンジニアの仕事内容やスキルについて理解できますよ!
それでは、見てみましょう!
- インフラエンジニアに興味がある人
- インフラエンジニアに必要なスキルを知りたい人
- インフラエンジニアになる方法を知りたい人
目次
インフラエンジニアの仕事内容とは
インフラエンジニアの仕事は、Webサービスの「インフラ(土台)を管理」することです。
「インフラ」と聞くと、水道、ガス、道路、電気、交通などを思い浮かべると思います。これらは、普段私たちが生活する上で、必要なものです。これと同じようにWebアプリケーションにもインフラがあります。
Webサービスの「インフラ」とは
- サーバー
- ネットワーク
- データベース
などです。
全てのWebアプリケーションは、これらが土台となって動作しています。
アプリケーションはサーバー上で動き、ネットワークを通じてユーザーとやりとりし、データベースに大事な情報を保存します。これらが密接に関連して、一つのサービスが提供されます。
「バックエンドエンジニアもサーバーの管理をする人たちじゃないの?」
と疑問に思う人もいるでしょう。
確かにバックエンドエンジニアはサーバー上の処理を担当します。しかし、インフラエンジニアが「サーバーを管理する」のに対して、バックエンドエンジニアは「サーバー上動作するアプリケーションを実装」します。
職種 | 仕事内容 |
バックエンドエンジニア | Webサイト、Webアプリケーションの機能、データベースの処理を担当する |
インフラエンジニア | サーバー、ネットワーク、データベースの管理を担当する |
インフラエンジニア がサーバー自体を管理し、バックエンドエンジニアがサーバー上で動くアプリケーションをプログラミング言語で実装するということです。
フロントエンドエンジニアやマークアップエンジニアが「HTML&CSS」「JavaScript」、バックエンドエンジニアが「Ruby」「PHP」「Go」などのプログラミング言語を使うのに対して、インフラエンジニアはプログラミング言語をあまり使用しません。
他のエンジニアと扱う技術が異なるので、全く別の職種と理解しておきましょう。
まとめると、インフラエンジニアの仕事内容は「Webアプリケーションのサーバー、ネットワーク、データベースの管理をする」ことになります。
インフラエンジニアに必要なスキルとは
では、インフラエンジニアが必要なスキルを見てみましょう。
- サーバーの知識
- ネットワークの知識
- セキュリティの知識
- データベースの知識
- クラウドサービスの知見(AWS、GCP)
- Docker / Kubernetes
- CI/CD
- シェルスクリプト
- インフラのコード(Infrastructure as Service)
- SRE
サーバーの知識
インフラエンジニアにサーバーの知識は必須です。
サーバーとは、簡潔に言うと「特定のサービスを提供するためのコンピュータ」です。
「特定のサービス」は用途によって異なります。そして、そのサービスによって呼ばれ方も変わります。例えば、Webコンテンツを提供するならWebサーバー、メール配信をするならメールサーバー、データのやりとりをするならデータベースサーバーと呼ばれます。
サーバーと言うと聞き慣れないかもしれませんが、私たちが普段使っているパソコンと仕組みは同じです。パソコンという箱(ハードウェア)があって、その中でOSというシステム(ソフトウェア)が動作しています。
サーバーも同様です。サーバーという箱(ハードウェア)があって、その中でOSというシステム(ソフトウェア)が動作しています。
私たちが使うパソコンは、インターネットを見たり、メールをしたり、文章を書いたりと機能がたくさんあります。サーバーも同様な機能を持つことができます。しかし、上述したような限定的な機能になります。
つまり、サーバーとは「何かしらのサービスや機能を提供するコンピュータ」ということです。
そして、そのサーバーの管理をするのがインフラエンジニアの仕事です。
サーバーは中でOSというソフトウェアが動いています。主なOSの種類は次の通りです。
- Windows
- Linux
- Unix
Web業界では「Linux」を覚えておきましょう。ほとんどのサーバーは「Linux」系のOSで動作しています。
後述するDockerもLinuxが元になっています。
インフラエンジニアはLinuxの操作を日常的に行うので、特徴や仕様を把握しておきましょう。
ネットワークの知識
インフラエンジニアはネットワークの知識も必要です。
ネットワークとはサーバー同士が接続しあうための仕組みです。普段私たちがスマホなどでインターネットができるのもネットワーク環境があるおかげです。
Webアプリケーションをサーバー上で動作し、サーバーとユーザーを繋げるためにネットワークを整備する必要があります。
インフラエンジニアはネットワーク環境を整えたり、運用や保守を担当します。
具体的に扱う技術は次の通りです。
- プロトコル
- TCP/IP
- HTTP/HTTPS
- SMTP
- POP3
- SSH
- ファイアウォール
- ロードバランサの運用
最近は、自社サーバーのオンプレミス環境からクラウド環境に移行している企業がほとんどでしょう。
クラウド環境下でもネットワークの基礎概念は必要なので覚えておきましょう。
セキュリティの知識
近年、Webサービスのセキュリティの重要性が高まっています。悪意ある第三者からの攻撃が後を絶たないからですね。不正アクセスやDDos攻撃からサービスを守らなければなりません。
インフラエンジニアはセキュリティの対策を求められます。
サイバー攻撃には具体的に次のようなものがあります。
- SQLインジェクション
- DoS/DDoS
- クロスサイトスクリプティング
- ドライブバイダウンロード
- ゼロデイ
- パスワードリスト
- ブルートフォースアタック
これらのほとんどは、サーバーをダウンさせたり、個人情報を抜き取るために攻撃されます。
対策としては次のようなものがあります。
- SSL
- WAF (Web Application Firewall)
- ファイアウォール
- Web改ざんの検知
Webサービスを安定的に稼働させるにはセキュリティの対策は必須です。
エンジニアでもセキュリティの知見がないという人は多いです。
そのため、インフラエンジニアを目指す人はしっかりと勉強しましょう。
「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版」はWebのセキュリティに関して体系的に学べます。エンジニアなら読んでおきたい一冊ですね。
データベースの知識
Web系のインフラエンジニアはデータベースの管理もします。
データベースを稼働させるデータベースサーバーを設置したり、バックアップ、パフォーマンスチェックなどの運用を行います。
大きな会社だとデータベースエンジニアというデータベース専門のエンジニアがいるかもしれませんが、ほとんどの企業では兼任しているパターンが多いです。
具体的な技術は次の通りです。
- Oracle
- MySQL
- Postgre SQL
- SQL Server
- Redis
Web系のサービスは、MySQLかPostgre SQL、Redisあたりを使う機会が多いです。
インフラエンジニアは、これらの仕様を理解しておくといいでしょう。
クラウドサービスの知見(AWS、GCP)
ほとんどのWeb系企業は、クラウド環境でサービスを運用しています。
クラウドサービスとは、他社のサービスを利用してサーバーの運用を行うことです。
今までは、オンプレミス環境で自社にサーバーを設置し、サービスを提供していました。しかし、近年ではコスト削減や安全性、拡張性の高さからクラウド環境を使うのが主流になっています。
クラウドサービスで代表的なのがAWSとGCPです。
AWSは、米Amazon社が提供しているクラウドサービスです。サーバーの管理からネットワーク、セキュリティまでAWS内で全て完結できます。
GCPとは、Googleが提供しているクラウドサービスです。AWSと同様にサーバーの管理ができるに加えて、FirebaseなどのmBaasとの連携が容易になっています。
企業によってAWSかGCPかは異なりますが、どちらとも実際に運用するのをおすすめします。
二つの使い方、メリット・デメリットを理解して、技術提案が出来るとインフラエンジニアとしての価値を高められるからです。
Docker / Kubernetes
Dockerとは、コンテナ型の仮想環境を扱う技術です。Linuxを元に作られており、仮想環境に簡単にサーバーを設置できます。
多くのWeb系企業の間では、Dockerは主流になっています。
Dockerは、
- 軽量で、起動が高速
- コード化できるので管理が楽
- 開発環境と本番環境の差分を少なくできる(無くせる)
- オートスケールしやすい
- デプロイが簡単
など多くのメリットがあるからですね。
Kubernetesは複数のDockerコンテナを管理するためのオーケストレーションツールです。コンテナを一元的に管理できるので注目を浴びています。
AWSもGCPも、DockerとKubernetesを使用できます。あわせて勉強しておきましょう。
CI/CD
CI/CDとは「Continuous Integration/Continuous Delivery」の略で、日本語で言うと、「継続的インティグレーション/継続的デリバリー」と言います。
CI/CDとは、アプリケーションを継続的にテストして品質を担保し、リリースするための仕組みです。
以前では、テストやリリースの作業は人が一つ一つ確認しながら行っていました。しかし、CI/CDがでは、テストを実施し、テストが通ってからリリースを行うというプロセスを自動化させることができます。
そのため、より安全で品質の高いサービス提供を実現できるようになりました。
Web系企業で使われるCI/CDサービスは次の通りです。
- Travis CI
- CircleCI
- Codeship
- GitHub Action
- AWS CodeBuild
- GCP Cloud Build
これも企業によって異なります。
コスト面や使い方に差異があるだけで、実現できることはほとんど同じなので何か一つ試してみましょう。
シェルスクリプト
インフラエンジニアは他のエンジニアに比べるとコードを書く機会が少ないです。
しかし、シェルスクリプトは使うので覚えておきましょう。
シェルスクリプトとは、オペレーティングシステムと対話するためのツールです。
コマンドを入力することで、ファイル操作などの処理を実行できます。
前述した、Linuxサーバーの操作を行うときは必須になります。また、自動化処理や作業効率化のためにも使われるのでインフラエンジニアが使う頻度は高いです。
インフラのコード(Infrastructure as Service)
前述したDockerはコードを書くことで、簡単に仮想環境(サーバー)を組み立てられます。
以前は、人の手で手順書通り行っていたものが、今ではコード化させることで自動的にインフラ構築ができるようになりました。
インフラのコード化はこれから主流になっていきます。
AWSやGCPもサービスを提供しているのでチェックしておきましょう。
インフラのコード化で扱う技術
- CloudFormation (AWS)
- DeploymentManager (GCP)
- Terraform
SRE
近年、SREの重要性が高まってきました。
SREとは、「Site Reliability Engineering」の略で、簡潔に言うと「Webサービスの信頼を構築するための技術」です。
SREの目的は
- システム運用を自動化し、効率性を上げる
- ユーザーにサービスを安定的に提供する
- エンジニアの生産性を上げる
などがあります。
SREはGoogleによって提唱され、Netflix、Amazon、GitHubなど多くの企業に普及されました。日本でもWeb系企業の間では注目を浴びています。
SREの業務には次のようなものが含まれます。
- 監視、障害対応などのシステム運用の自動化
- インフラのコード化
- システムの定量化
- コスト管理
SREはチームで構成されます。仕事内容は多岐に渡りますが、特にシステム運用の自動化や、インフラのコード化はインフラエンジニアが扱う仕事です。
上記であげたスキルを活用して、開発・運用を円滑に進めるのがSREの役割です。
インフラエンジニアの年収は?
インフラエンジニアの年収は、どのくらいでしょうか。インフラエンジニアを目指す人は気になるところでしょう。
複数転職サイトなどを見ると、インフラエンジニアの年収は500〜900万円程度とされています。
実際に、「求人ボックス」によると平均給与は524万円となっています。
引用元:求人ボックス
日本の平均年収と比べると、高い傾向です。
私の経験上、スキルや経験値の高いインフラエンジニアはもっと高くなると思います。
なぜなら、インフラエンジニアはサーバーの管理やネットワークの整備、クラウドサービスの知識など、高度なスキル要するからです。
エンジニアは完全に実力社会なので、スキル次第では高収入を狙うことも可能です!
インフラエンジニアの今後の将来性は?
インフラエンジニアは今後も活躍が期待されるでしょう。
なぜなら、多くの企業はIT化やサービスを展開するため、プログラミングができる人材が必要とされるからです。インフラエンジニアは新規開発から、保守開発まで多岐に渡って活躍を期待されます。Webサービスには絶対に必要な存在です。そのため、今後もインフラエンジニアの需要は一定以上あるでしょう。
さらに現在、日本のIT業界は深刻な人手不足に陥っています。実際に、経済産業省のデータによると、2025年には約40万人、2030年には約45万人が不足すると試算されています。
労働人口が年々減少しているのも関わらず、企業はITへの投資をするため、エンジニアの需要が高くなっているのです。
求人サイトでもインフラエンジニアの需要が高いのがわかります。
これからインフラエンジニアを目指す人は、上記で挙げたスキルを参考にして、インフラエンジニアの勉強を始めましょう!そして、新しい技術を常にキャッチアップしていけばエンジニアの価値を高め続けられます!
インフラエンジニアになるためには
インフラエンジニアになるためには、上記であげたスキルを身につける必要があります。
- サーバーの知識
- ネットワークの知識
- セキュリティの知識
- データベースの知識
- クラウドサービスの知見(AWS、GCP)
- Docker / Kubernetes
- CI/CD
- シェルスクリプト
- インフラのコード(Infrastructure as Service)
- SRE
Progateなどのプログラミング学習サイトを活用すれば、「コマンドラインツールの使い方」や「Git」「SQL」を学べるので試してみてください!
次に実践として、AWSやGCP、CI/CDの構築をしてみましょう。実際に組み立てると、より理解が深まりますよ。その知見をブログなどにアウトプットすることで、転職時のアピール材料になります。
インプットだけでなく、アウトプットを心がけましょう!
基礎では、本やプログラミング学習サイトで学び、実践ではアウトプットすることで効率的にインフラエンジニアのスキルを上げることができます。
エンジニアになるための具体的なステップは次の記事で解説しているので、参考にしてくださいね!
最短でインフラエンジニアになりたい人は
最短でインフラエンジニアを目指すひとは、プログラミングスクールに行きましょう!
独学でも勉強できますが、時間がかかるのは事実です。
実践的なスキルをつけるにはプログラミングスクールの方が効率的です。
なぜなら、プログラミングスクールだと実践的な課題をやったり、プロのエンジニア講師にいつでも質問できるので独学よりも早く習得できるからです。
初心者の頃は、エラーに遭遇すると挫折しやすいです。プロに教わった方が自分で調べるより遥かに効率的です。
例えば、リナックスアカデミーだとLinuxサーバに必要な技術を体系的に身につけられます。
また、インフラエンジニアでもWebアプリケーションの作り方も理解しておくと活躍できる幅が広がりますよ!
- 「Webアプリケーションコース」… Ruby on Rails でオリジナルサービスを開発
- 「PHP/Laravelコース」 … PHPとLaravelを学んでオリジナルサービスを開発
すぐにインフラエンジニアに転職した方は検討してくださいね!
まとめ
この記事では、インフラエンジニアについてまとめました。
インフラエンジニアは今後の将来性も高く、需要の高い職種です。インフラエンジニアに転職して、スキルアップすれば高収入も狙えるでしょう。
インフラエンジニアを目指す人は、まずはプログラミング学習を始めましょう!
今ではたくさんのプログラミング学習サイトや本があります。実際にコードに触れると、プログラミングの雰囲気を掴めますよ!
皆さんがエンジニアになれるのを応援しています!