OSに対して命令を出したり、スクリプトを実行する際に使用するコマンド群を「Shell」と呼んでいます。これは、手順などと組み合わせて使用することになるため、プログラム言語の一種、と考えることができます。インフラ開発を行う際にはOS上でさまざまな設定を行う場面も多く、Shellを使用する機会も多く見られます。そのため、プログラミングにより自動化することで省力化が可能ですし、手作業によって起きる作業ミスのリスクも減らせます。
ShellにはLinux標準のbashなどがよく知られています。
「DOSコマンド」はWindowsに搭載されているバッチを作成できる言語です。また、Windows標準搭載のコマンドラインシェルおよびスクリプト言語は「PowerShell」と呼ばれます。DOSコマンドのバッチファイル、PowerShellのバッチファイルいずれもWindows環境で実行が可能なコマンドプログラムとして各処理を順序立てた上で実行できます。
クライアント機となるWindows PCもインフラの一部となりさまざまな設定や制御などが必要となるために、これらも覚えておきたいスクリプト言語です。
「Python」はAIや機械学習においてよくその名前を耳にするという方も多いのではないでしょうか。しかし、インフラ開発でもPythonを使用する場面もあります。具体的には、サーバーの自動化などを行う際に使用されます。
さらに障害対応時のログ調査におけるデータ解析にPythonを使用することもありますので、インフラエンジニアが知っておいて損はない言語のひとつといえます。
「Ruby」は文法がシンプルであるために未経験の方でも学びやすい点が特徴です。このRubyは、インフラシステムの自動化において使用するソフトウェアに採用されることがあり、インフラ開発においても使用されている言語です。
必ずしも知っておかなければならない言語ではないものの、活躍する場を広げたいと考えている場合には知っておいて損はありません。また、RubyはWebアプリケーション開発で使用される言語でもあります。
プログラミング言語としてよく知られるJavaは、業務システムからAndroid向けのアプリケーションの開発に至るまで幅広く使用されており、インフラ開発においても役立つ言語です。
数多くの優良フレームワークがある、という点がJavaの特徴のひとつとなっていますが、インフラエンジニアがサーバに適用するフレームワークを選定するといった場面もあります。運用の際に使用する管理画面の作成を行う際にJavaが使用されるといったケースも多く見られますが、その開発をインフラエンジニアが担当するケースも。さまざまな場面で使用されている言語であるため、インフラエンジニアならずとも知っておきたい言語といえるでしょう。
「AWS」とは、「Amazon Web Services」の略で、Amazonが提供しているクラウドサービスの総称です。このAWSは、EC2(サーバ)、S3(ストレージ)、RDS(データベース)といった従来オンプレミス環境で必要な機器類を代替できる仮想環境が提供されています。
これらのクラウド環境の活用によって、システムの初期投資を抑えられる、機器類の陳腐化を避けられるといったメリットがあることからクラウド化が推進されています。そのため、インフラエンジニアもクラウド環境へ対応することが必要といえるでしょう。また、基本的にハードウェア障害が起こらないことから運用設計の手間が省けるといった面もあります。
「Docker」とは、仮想環境を提供するソフトウェア。カーネル上で稼働するコンテナという形で仮想環境の提供が行われます。それぞれのコンテナは、カーネルOS上でプロセスやユーザの管理が可能となっていることから、同じサーバ上に複数の仮想環境を稼働させられます。
さらに、新しい仮想環境を立ち上げる際にもコンテナを再利用することで容易に行えますし、コンテナを再起動させる際にもサーバの再起動よりも行いやすいといった面もあります。また、AWS上でもDockerの提供が行われています。
「Kubernetes」は、コンテナホストを管理するインフラ基盤ソフトウェアです。複数サーバ間における負荷を分散したり、Dockerなどのコンテナ管理をさらに上位で管理することで、インフラ上のアプリケーションやサービスの可搬性を確保したり、スケーラビリティのコントロールを行えるようになります。
また、自己回復機能を持つという点もKubernetesの特徴です。誤ってコンテナを削除した場合や、障害が発しした場合などに自動でコンテナの回復を行えます。