インフラエンジニアにプログラミングが必要かどうかについて、現役のインフラエンジニアとしての考えを書きます。何を身につけるとよいか、私自身の経験も交えて記載するので、これからインフラエンジニアを目指す方や、今の現場でコードを書く機会がない方の参考になるかと思います。
結論:プログラミングができなくてもなれる。ただ、できたほうがいい
プログラミングができなくても、インフラエンジニアにはなれます。ただし、できたほうがいいです。
コードを書かないインフラエンジニアは、ネットワークの設定や、Webサーバーやデータベースなどのミドルウェアの設定、サーバーの中に入って設定するといったサーバーの管理を行っています。自社でサーバーを持つオンプレミスか、クラウドかによっても、仕事の中身はだいぶ違います。
それでもできたほうがいい理由は、進める分野が広がるからです。たとえば、システムの処理を外から観測できるようにするオブザーバビリティの分野では、処理の流れを記録するトレースを、アプリのコードの中に挟んだりします。アプリ側の知識があれば、こういった分野にも進むことができます。
身につけたいのはシェルスクリプト・IaC・構成管理・SQL
アプリ開発の言語は必須ではありません。ただし、シェルスクリプト、IaC、構成管理、SQLの4つは身につけておいたほうがいいです。
インフラエンジニアの仕事では、アプリのコードを直接書くよりも、この4つを意識することのほうが多いからです。直接役に立つ場面が多いので、先にこちらを身につけるほうがキャリアアップにつながりやすいと考えています。
4つそれぞれの使いどころは以下の通りです。
シェルスクリプト
シェルスクリプトは、Linuxのコマンドをまとめて、自動で実行できるようにしたものです。cron(決まった時刻に処理を実行する仕組み)で定期的に実行させる処理や、メンテナンスで繰り返し行う処理は、少なくともスクリプトにしたほうが効率的です。
IaC
IaCは、サーバーやネットワークの構成をコードで書いて管理する方法で、Terraformなどを使います。IaCにすると、インフラの設定をレビューできるようになります。また、「なぜこのポートを開けているのか」といった変更の理由を追いやすくなります。IaCでない環境では、なぜ変更されたのかが分からず、調べるのがとても大変なことがあります。
構成管理
構成管理は、サーバーに入れるソフトや設定をコードで管理し、まとめて反映する方法です。サーバーが複数台あると、1台ずつログインして設定するのは大変です。Ansibleなどの構成管理ツールを使えば一括で設定でき、とても効率的になります。
SQL
SQLは、データベースのデータを取り出したり操作したりするための言語です。顧客の情報を調査するときなどに使います。特にデータベースのパフォーマンスについては、SQLを改善できると価値の高いスキルになるので、できたほうがいいです。
私が最初に入った会社は、運用監視が中心で、たまに設計・構築がある会社でした。新人は監視から入り、徐々に運用も担当し、スキルがついてきたら設計・構築も行うという流れでした。そのため、キャリアの初期はコードを使っていませんでした。
その後、コンテナとIaCを使う環境に移りたいと考えて転職しました。現在は、インフラをコードで管理するTerraformや、コンテナでアプリを動かすDocker・ECSを使っています。
今の現場で書く機会がなくても覚えたほうがいい
今の現場でコードを書く機会がなくても、この4つは自分で覚えたほうがいいです。キャリアアップしていきたいなら、必須になるからです。
私も業務外で勉強しました。個人で環境を作り、使い終わったらすぐに壊すようにすれば、お金もかかりません。そうやって独学で覚えました。
余裕があったら開発も学ぶ
余裕があれば、ソフトウェア開発についても学習しておくとよいです。言語は何でも構いません。開発について分かると、インフラの仕事にも生きてきます。
理由は、アプリ側と関係している設定が多いからです。開発が分かると見える範囲が広くなり、インフラの設定の意味も理解しやすくなります。
前職でインフラ側だけを担当していたときは、そもそも開発フローが分かっていませんでした。そのためデプロイフローもよく分からず、コードの変更をテストして本番に反映するまでを自動化するCI/CDで、どんなテストを動かせばいいのかも分からないので、設定ができませんでした。AWSのデータベースサービスであるRDSの設定も、アプリ側が分からないので、なぜその設定をするのかが分からない状態でした。お客さんに言われるがまま、その都度調べて設定したことが何度かあります。
転職してからは、アプリ側の開発も任されるようになり、PHPを使っています。開発のことが分かると、アプリの観点からも監視の設定をしたりできるようになりました。アプリ側と関係している設定は多いので、スキルとして開発について分かることはかなり重要だと感じています。
また、インフラと開発の両方が分かると、システムの安定稼働をエンジニアリングで支えるSREや、開発と運用を一体で進めるDevOpsといったキャリアパスもあります。
まとめ
結論としては、プログラミングができなくてもインフラエンジニアにはなれます。ただし、できたほうがいいです。
まずはシェルスクリプト、IaC、構成管理、SQLの4つを身につけるのがおすすめです。今の現場で使う機会がなくても、個人で環境を作れば独学で覚えられます。余裕があれば開発も学んでおくと、見える範囲が広がり、インフラの仕事にも生きてきます。



コメント