こんにちは。BTCクラウドCoEインフラ担当の池浦です。
今回のブログのテーマは前回に引き続きクラウド移行ですが、クラウド移行のテクニカルは話ではありません。ちょっと趣向を変えまして、オンプレからクラウドに移行(?)したインフラエンジニアの現状を個人的な経験をもとに書いてみたいと思います。
いまさら感の強い内容ですが、これからクラウドをやってみたいと考えているインフラエンジニアの方の参考になると幸いです。
業務でクラウドに本格的にかかわるようになり約2年になります。まだまだベテランには程遠い未熟者ですが、インフラエンジニアとしては15年くらいの経験があります。クラウドに触れる前は以下のようなスキルセットでした。ここ7~8年くらい、つまりキャリアの半分くらいはインフラエンジニアではありますが、アプリチームの中のインフラ担当というようなポジションで仕事をしていました。
続いて、クラウドをやるようになって、自分が必要とするスキル、あるいはチームから求められるスキルがどのように変化したのかを書いてみたいと思います。
少し話は変わりますが、現在のシステムインフラに関する重要なキーワードとして、「Infrastructure as Code」(以下、IaC)があります。これ自体はオンプレの時代からあったものであり、Ansible, Chef, Puppetなどを使っていたインフラエンジニアの方は多いのではないでしょうか。Ansible等は主にOSの中身を設定・管理をすることが多かったかと思います。クラウドにおけるIaCの役割はOSの外側、つまりネットワークや仮想マシン本体、マネージドのRDB等を設定・管理する方向に変化をしてきていると感じています。それに伴いツールも、Terraform, CloudFormation(AWS), Azure Resource Manager(Azure)などが主役になりつつあるのではないでしょうか。
もう一つ重要なキーワードとしてあげられるのが「Immutable Infrastructure」です。これもオンプレ時代からあった考え方ですが、IaCと比べると少しマイナーな言葉かもしれません。簡単に説明しておきますと、「不変(Immutable)なインフラ」という意味でして、一度構築したインフラに手を加えないという考え方です。Immutable Infrastructureでは、既存のOSやミドルウェアの設定変更、パッチ適用などはおこなわず、そのような必要がある場合には一度インフラを破棄して、再構築するというアプローチをとります。こうすることで手元にあるコード(IaC)と乖離がない環境が保たれることになり、サーバの状態を管理することが不要になります。インフラエンジニアにはお馴染みのシステムバックアップを取る必要もなくなります。標準構成の仮想マシンを新規作成し、AnsibleやChefでミドルウェアをインストール、設定するというのがオンプレ時代のよくあるパターンでした。
最近のImmutable Infrastructureといえば主役は何といってもコンテナです。もちろんオンプレでもコンテナは動きますが、Immutableにするにはコンテナ側とホスト側の両方で対応が必要となります。クラウドではホストOSはマネージドなので構成を意識する必要はありません。クラウドとコンテナが組み合わさることで、漸くImmutable Infrastructureが真価を発揮しはじめたといえるのではないでしょうか。
今回、クラウドの前後で自分のスキルの変化を振り返ってみたわけですが、私の場合、クラウド特有の知識を習得したり、担当するインフラのレイヤが広がったということはありますが、全体としてそれほど大きな変化はないな、というのが率直な感覚です。これはインフラエンジニアとしては比較的アプリケーションに近い位置で仕事をしていたことが大きいと思います。
ただ、それでも一つだけ大きく変わったと感じていることがあります。それは、「作りこむ」ことが減ってきたことです。オンプレ時代はカーネルやミドルウェアをガリガリとチューニングしたり、シェルスクリプトで何でもかんでも作っていましたが、そのようなやり方は、IaCやImmutable Infrastructureとあまり相性が良くないと感じています。できるだけ作らずに、有りモノのサービスを使い、それらを「組み合わせる」のがクラウド的なインフラなのかな、と思うようになりました。このようにいってしまうと誰にでもできる簡単なお仕事に聞こえてしまいますが、クラウドはサービスのアップデートのスピードが尋常ではなく、それらをキャッチアップしていくだけでもかなり大変なのが実状です。今後も苦労が絶えることはなさそうです。
最後に。昨今クラウドによるビジネスの加速が様々なシーンで語られていますが、その多くがDevOpsの重要性について言及しています。そんな中、設計や構築フェーズを担当しているインフラエンジニアの中には、開発者(Dev)でも、運用者(Ops)でもない自分はDevOpsとは無縁だと思っている方もいるかもしれません。しかし、IaCやImmutable InfrastructureはDevOpsを支える重要な技術要素であり、その名のとおり本来的にはインフラエンジニアの領域といえます。クラウド時代において、とかく存在意義が問われがちなインフラエンジニアですが、自分の役割を認識し、プレゼンスを示していきたいところですね!
それでは、また。