これからのクラウドエンジニアに求められること
はじめに
私は現在、クラウドインフラチームに所属しており、各種クラウドサービスを活用した業務に日々携わっています。クラウドの世界は進歩が早く、昨日まで実現できなかったことや実現するのに苦労していたことが、ある日突然簡単にできるようになったりするため、最新情報のキャッチアップや定期的なスキルアップを欠かさないようにしています。
一方で、クラウド技術だけではまだまだ解決できないことも沢山あり、クラウド技術の凄さや便利さを感じながらも、サーバやネットワークのベーススキルの重要さも感じています。
そこで今回は、主にクラウドエンジニアを目指す方を対象に、これからのクラウドエンジニアに求められることを、クラウドサービスの出現前から現在までの技術変遷と私自身の経験をもとに考えてみます。
クラウドサービス出現前
10年ほど前までは、今ほどクラウドサービスは普及していなかったため、何かシステムを作ろうとする際には専門分野が異なるエンジニアが協力し合い、1つのシステムを作っていました。
例えば、2010年頃、私が大手通信事業者で1,000台ほどのサーバを扱う案件のITサービスマネージャーを担当していたときは、担当部署にシステムの構築を依頼すると、まずサーバエンジニアが物理サーバの調達とセットアップを行い、次にWindowsエンジニアがOSのインストールとセットアップをし、さらにその次にデータベースエンジニアがSQL Serverを設計/構築するといったように、1つのシステム開発に様々なエンジニアが関わっていました。エンジニア1人ひとりが、自分自身の専門領域で活躍しているケースが多く、エンジニア=「職人」という言葉がぴったりでした。
クラウドサービス出現後
そこからAWSやAzureなどのクラウドサービスの出現により、これまで複数のエンジニアが役割分担して構築していたシステムを1人でも構築できるようになりました。サーバもネットワークも、ストレージもブラウザ上でクリックしていくだけでクラウド上に簡単に作れるようになったのです。
OSも最初からサーバ(仮想マシン)にインストールされているため、CPUコア数を気にしながらライセンスを購入することや、メディアからのインストールも必要なくなりました。また、データセンターを跨いだサーバの冗長構成など、経験豊富なプロフェッショナルにしかできなかったことも、未経験者がわずか数分で簡単に構築できるようになりました。クラウドサービスは利用者に物理レイヤを意識させないようにマネージドサービス化し、難しかったことを簡単にしてくれます。今までの専門的な技術は、以前ほど必要ではなくなったのです。
一方で、クラウドでは1人のエンジニアに求められる知識の範囲が一気に拡大しました。仮想ネットワークや仮想サーバなどを構築することの他に、クラウドを上手く使いこなすことも考えなければならなくなりました。例えばコストです。クラウドサービスの多くは従量課金なので、システムを使わないときは停止や削除することでコストを抑制できますが、いざ必要となったときすぐに使えるようにするためには、システムの自動起動や自動デプロイなどの工夫が必要になります。
このように、クラウドでは以前ほど極端に深い知識と技術が要求されなくなった半面、幅広い知識と技術が必要になりました。そして、お客様に最適なクラウドシステムを提案するためには、この幅広い知識と技術を、はじめにある程度身に付けておく必要性があるのです。
そして現在は…
数年前に、AWSの担当者から「これからの時代はすでに用意されている各種クラウドサービスを上手く組み合わせてシステムを実現していく時代だ」と聞かされたことがあります。現にAWSが提供している豊富なサービス群とそれらを組み合わせて実現される多くのビルディングブロックを見ると、すでにその通りの時代になっていると感じます。
例えば、Amazon Simple Storage Service(S3)やAPI Gateway、Lambda(ラムダ)、DynamoDB、プログラムなどを組み合わせれば、仮想サーバを必要としないサーバレスなWebシステムを作ることができます。さらに、この組み合わせにCognito(コグニート)を追加すれば、ユーザー認証機能を追加することもできます。
AWSのサービス化はとどまるところを知らず、今後も様々なものがサービス化されていき、それらを組み合わせて色々なことが簡単に実現できるようになるでしょう。そのため、多数のサービスの中から最適な物を選び、組み合わせてシステムを実現していく力も要求されるようになります。
クラウド時代のシステム設計で重要なこと
ここで、クラウド時代のシステム設計において重要だと考えていることが2つあります。
1つ目は、AWSに限らずですが、自分が一から作ろうとしているものが既にサービスとして提供されている可能性があるため、最初に確認すること。2つ目は、利用するサービスの仕様をよく把握すること。特に自分ではコントロールできない制約事項の把握です。
Amazon WorkSpacesというVDI(仮想デスクトップサービス)があります。セキュアでかつ長期的なテレワーク環境を実現できる非常に便利な機能で、コロナ禍の今、パソナテックも多くの顧客から導入のご相談をいただいています。このサービスがローンチされたばかりの数年前、仕様の確認不足により、顧客への提案中にとても慌てた経験をしたことがありました。
Amazon WorkSpacesはPCとクラウド上のVDIマシンとの間で3つの通信を行いますが、仕様として1つの通信は自分で通信経路(ルーティング)をインターネットまたは閉域網に変更(コントロール)でき、残り2つの通信は自分で経路変更ができず、必ずインターネットになる仕様がありました。
ところが、はじめに確認したサービス資料からこの仕様をうまく読み取ることができず、3つすべての通信を閉域網にルーティングできると勘違いしてしまいました。そのまま顧客の拠点とAWSクラウドとを閉域網接続し、すべての通信を閉域網に通す提案を進めたのですが、途中でたまたま別の資料を見て仕様に気付き、慌てて提案の訂正をした経験があります(念のため補足ですが、実はすべての通信を閉域網にルーティングできる方法もありましたが、それを実現するには数千万円のネットワーク工事費用がかかり、当時は現実的ではありませんでした)。
VDIをテレワークで利用するのであればインターネット通信は気にするところではありませんが、このときの顧客の要件は社内シンクライアント端末としてのVDI利用であり、セキュリティ上の理由からインターネット通信を許容していませんでした。そのため、自分でルーティングをコントロールできない通信があることに気付いたときはとても驚きました。この経験以降、クラウドサービスの提案に当たっては、今まで以上に仕様確認を注意深く行っています。
サーバとネットワークスキルの重要性
ここまで、クラウドサービス出現前から現在までの技術変遷と、これからはクラウドサービスの組み合わせでシステムを実現できる可能性についてお話しをしてきました。それでは今後、ありとあらゆるシステムのすべてをクラウドサービスの組み合わせで実現できるようになるのでしょうか。また、これによりサーバやネットワークの知識や技術は不要になるのでしょうか。
もしかしたら、数十年後はサービスの組み合わせのみで望むシステムを実現できるようになり、サーバやネットワークの知識や技術は不要な時代になっているのかも知れませんが、現在の技術水準から勝手に推測してみると、少なくともこの先10~20年はまだそのような時代にはならないと考えています。
AWSにLambdaというコード(プログラム)の実行環境を提供するサービスがあります。自分で記述したコードを登録するだけで実行してくれるとても便利なサービスです。通常、コードを実行するには自分でサーバを用意し、サーバにコードの実行環境と実行したいコードをインストールしますが、Lambdaはこの作業を不要にしてくれます。サーバを必要とせずにコードの実行環境を提供してくれるため「サーバレスコンピューティングサービス」と呼ばれています。
では、このLambdaの登場でサーバが不要になったかと言うと、そんなことはありません。それは、Lambdaではコードの登録と実行以外のことはできないためです。例えば、Lambdaにパッケージソフトウェアをインストールして実行させることはできません。
また、Lambdaには細かな制約があるため、クラウド上にパッケージソフトを持ち込む場合や余計な制約を受けずにシステムを作りたい場合にはサーバが必要で、サーバの知識と技術が必要になってきます。
ネットワークの知識と技術はどうでしょうか。これらはサーバ以上に今後も重要で必要になると考えています。オンプレミス/クラウドかかわらず、構築したサーバやシステムにアクセスするにはネットワークの設定が必要不可欠です。会社のシステムをクラウド上に移行して、テレワークで自宅PCから利用したい場合や、インターネット経由で利用するSaaSをクラウド上に作る場合、オンプレミスとクラウドとのハイブリッドシステムを実現する場合など、ネットワーク技術はありとあらゆるところで要求されます。
また、クラウドサービスの組み合わせでシステムを構築する場合も、サービスとサービスはネットワーク通信で繋げるので、この場合もネットワークの知識は必要です。仮にネットワークを意識せずにサービスを組み合わせられたとしても、前述のWorkSpacesの例のように、各サービスの通信仕様を把握しておくことはとても重要です。
このように、たとえクラウドが主流の時代になっても、クラウドサービスの単純な組み合わせだけでは実現できないことがあり、サーバやネットワークのスキルは必須となります。これからクラウドエンジニアを目指す方は、クラウド技術の習得と併せて、ぜひサーバやネットワークのスキルも身につけてください。
プラスαのスキル
最後に、できるならプラスαとしてプログラミングスキルを身に付けることをお勧めします。クラウドサービスを使ったシステムはコードによる自動構築も可能です。大規模システムや過去のシステムと同じような構築を行う場合には、コードによる構築の自動化により作業負荷を軽減して効率の良く構築できます。また、先のLambdaを使ったサーバレスシステムではLambdaで実行させるコードも自分で書けるので、自身の守備範囲が広がり、エンジニアとしての価値も上がります。そのため、Pythonなど汎用性の高いプログラミング言語を1つマスターすることをお勧めします。
【まとめ】
これからのクラウドエンジニアに求められること
- クラウドでシステムを構築できることの他、クラウドをうまく使いこなすこと
- 顧客に最適なクラウドシステムを提案するためのクラウドに対する幅広い知識と技術
- 多数のサービスから最適なものを選び組み合わせてシステムを実現していく力
- 利用するサービスの仕様を詳細に把握すること
- サーバとネットワークのスキル
- プラスアルファとしてプログラミングのスキル
おわりに
クラウドサービスの時代では、インフラエンジニアとソフトウェア開発エンジニアとの境界、また技術系エンジニアとセールス系エンジニアとの境界がかなり曖昧になってきており、1人のエンジニアに求められることがどんどん増えてきています。
AWSやAzureなどのクラウドベンダーによるマネージドサービスの提供がどこまで進んでいくのか想像がつきませんが、あまり狭い領域に固執しているといつの間にか何もできないエンジニアになってしまう気がしています。
10年後も20年後もエンジニアとして活躍できるように、これからも自分の可能性を広げる努力をしていきたいものですね。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- あなたが「サーバレス」に本腰を入れて取り組む必要性を説明しよう
- Alexa Skills Kit SDK for Node.jsについて知る
- 米Red HatがRHELの無償サブスクリプションを提供、米MSがWindows 10でコンテナをサポート、ほか
- CNDO2021、サーバーレスの勘所をサーバーワークスのエンジニアが紹介
- コンテナは場所を選ばない!「オンプレ or クラウド × コンテナ」(前編)
- Alexaのスキルを作ってみよう
- CI/CD Conference 2023から、アルファドライブ/ニューズピックスのSREがAWS CDKを活用したCI/CD改善を解説
- AWS、サーバレスコンピューティングサービス「AWS Lambda」への機能追加を発表
- Cloud Operator Days Tokyo 2021からNTT東日本とKDDIのインフラ監視に関するセッションを紹介
- サーバーレスな事例が次々登場―ServerlessConf Tokyo 2016レポート