「クラウドファースト」が当たり前になりつつある中、クラウドには日々新しい機能やサービスが登場しており、クラウドエンジニアもその変化のスピードについていくことが求められています。
一口に「クラウド」と言っても、クラウド上でシステムを構築するには、アプリケーション基盤、ネットワーク、データベースなど様々な要素を組み合わせる必要があります。
クラウドエンジニアは、それら様々な要素を使いこなすために、幅広い知識が必要になってきます。ここでは、クラウドエンジニアとして活躍していくために必要な知識やスキルについて、見ていきたいと思います。
【目次】
クラウドアーキテクチャ
クラウドサービス
アプリケーション開発の観点からすれば、Webアプリケーションにせよ、専用アプリを端末にインストールしてクラウドと連携して動作するクラウドアプリケーションにせよ、開発の手法やプログラミング言語に大きな違いはありません。
オンプレミスでしか通用しない開発手法はありませんし、クラウドでしか使えないプログラミング言語というものもありません。
しかし、アプリケーションが動作するためのクラウドサービスについては、基本的な機能は同じであるものの、それぞれのサービスで機能に差があったり、使い方が異なっていたりします。
クラウドサービスにおいては、
・AWS(Amazon Web Service)
・Microsoft Azure
・GCP(Google Cloud Platform)
などが有名です。
AWSは、クラウドサービスの中で最も早い2006年からサービスを開始しており、クラウドに関する文献や情報の数や技術者の数は圧倒的に多いという強みがあります。
Microsoft Azureは、多くの企業で利用されているMicrosoft製品との親和性が高く、Active DirectoryやOffice 365などとの連携が強みです。
そして、GCPは、Googleの検索サービスで集めた膨大なデータを元に、MapReduceやBigQuery などを使ったAI・機械学習サービスが充実しています。
もちろん、すべてのクラウドサービスについて完全に理解する必要はありません。
しかし、各社シェアを伸ばすためにしのぎを削っている状況を踏まえると、開発プロジェクトが変われば別のクラウドサービスを使う状況になる、ということは十分考えられます。
ひとつのクラウドサービスについて深く理解した上で、他のクラウドサービスついての特徴・強みが把握できていれば、もし別のサービスを使わなければならない状況になったとしても、スムーズに対応できるはずです。
マルチクラウド
近年では、API経由でのクラウド接続や各クラウドサービスへの閉域接続サービスなど、クラウドへの接続方法が充実してきていることから、複数のクラウドサービスを併用して使うマルチクラウドの形式も珍しくなくなってきました。
以前は、ひとつのクラウドサービスの中だけ、もしくは自社(オンプレミス)とひとつのクラウドサービスを接続して使うハイブリッドクラウドの形で利用するのが一般的でしたが、各社が独自のサービスを充実させてきたことにより、各社のクラウドサービスの機能の中で必要なものを組み合わせて使うことが可能になってきているのです。
それらの理由から、ひとつのクラウドサービスに特化して技術を磨くのではなく、有名なクラウドサービスの機能やサービス動向について、情報収集に努めておきたいものです。
クラウドプラットフォーム
どのクラウドサービスであっても基本的には、
・IaaS(Infrastructure as a Service)…仮想サーバやストレージ、仮想ネットワークなどのシステムインフラを提供する。
・PaaS(Platform as a Service)…プログラムを動かすことのできるプラットフォーム(ミドルウェア)までをサービスとして提供する。
・SaaS(Software as a Service)…何らかのパッケージ製品をサービスとして提供する。
の中から、用途に応じてサービスを選択または組み合わせて利用します。
なるべくメンテナンスの手間が少ないという意味では、SaaSやPaaSを利用するのが理想的ですが、クラウドサービスの用意する機能だけでは、システム要件を満たせない場合もあります。
各クラウドプラットフォームで用意されているコンポーネントやサービスを組み合わせて、要件を満たすシステムを作り上げるのがクラウドエンジニアの役割です。
クラウドデザインパターン
クラウドサービスに関しての情報が少なかった頃は、クラウドエンジニアが独自に集めた情報や知見を元にアーキテクチャを検討する必要がありました。
しかし、近年では、「AWSクラウドデザインパターン」「Azureクラウドデザインパターン」「GCPクラウドデザインパターン」などのように、クラウド設計パターンのベストプラクティスが公開されています。
デザインパターンと言えば、「Javaデザインパターン」などのように、オブジェクト指向の設計ノウハウを蓄積し、名前をつけて再利用しやすいように整理したものが有名ですが、クラウドアーキテクチャについても同じように設計パターンがカタログ化され始めています。
先人達の知見を有効に活用するためにも、利用しているクラウドサービスのデザインパターンについては一読しておきたいものです。
ネットワーク
かつてネットワーク設定といえば、ルータにVLANルーティングなどを行ったり、ファイアウォール機器に通信許可設定を行ったり、物理的な機器に対して設定を行なっていく方法が主流でした。
クラウドサービスにおいては、従来のオンプレミス環境のネットワークとは異なり、スイッチ、ルータ、ファイアウォールやロードバランサまでも仮想的なリソースが動作することになります。
例えば、AWSやGCPではVirtual Private Cloud (VPC)、AzureではVirtual Network(VNet)など、クラウドサービスごとに仮想ネットワークサービスが用意されています。
仮想ネットワーク環境の制御に関しても、IPアドレス範囲の選択やサブネットの作成、ルーティングテーブルやネットワークゲートウェイの設定などが可能です。
また、同じVPCでもGCPはリージョンをまたいでVPCが作成できますが、AWSのVPCは同一リージョン内に作成する必要があるなど、クラウドサービスによって作成できるネットワーク範囲が異なっていますので注意が必要です。
オンプレミス環境の場合は、物理的なネットワーク機器がいくつも存在するため、設定変更等はネットワークエンジニアが担当することが多いですが、クラウドサービスの場合は仮想ネットワーク内で動作する(物理的な機器が存在しない)ため、ネットワーク制御についてもクラウドエンジニアが担当することが多くなっています。
Webサーバーをパブリックサブネットに、DBやアプリケーションサーバなどをインターネットに接続できないプライベートサブネットに配置するという要件は非常によくあります。その場合は、ネットワークセキュリティやアクセスコントロールを適切に設定することで、各サブネットへのアクセスを制御する必要が出てきます。
同じクラウドエンジニアでも、アプリケーション開発を担当するのか、インフラを担当するのかによっても必要な知識は変わってきますが、少なくともインフラを担当するのであれば、ネットワークの知識は必ず必要になってくるでしょう。
オンプレミスとクラウドサービスを併用する、ハイブリッドクラウドの構成の場合、オンプレミス側ネットワークについては、従来通りネットワークエンジニアが担当するケースも多々あります。
その場合は、オンプレミス側ネットワーク機器(ルータなど)までが責任分界点となる場合が多いようです。
セキュリティ
クラウドの仮想ネットワークをクラウドエンジニアが担当することからも想像がつく通り、ネットワークと密接に関係するセキュリティについても、クラウドエンジニアが設定を担当することが多くなっています。
もちろん、外部からのセキュリティ面に関しては、SOC(Security Operation Center)ベンダに任せているケースもあるかもしれませんが、クラウドサービス内部のセキュリティ関しては、クラウドエンジニアが設定・運用する場合が多いでしょう。
従来は、クラウドサービスへの接続方法と言えば、オンプレミスからは閉域網やVPN接続、外部インターネットからは社内網を経由してクラウドサービスに接続し、クラウド内部のセキュリティに関してのみ仮想ネットワークサービスで制御するという考え方が一般的でした。
近年では、BYOD(Bring Your Own Device)や在宅勤務の広がりにより、社内網を経由せずに外部インターネットからVPNを利用してクラウドサービスに接続する方式が増えてきています。
しかし、クラウドサービスへの接続方法が多様化するにつれ、従来のようにVPNに接続するためのID/パスワード認証だけではセキュリティを担保することが難しくなっています。
ID/パスワードの流出や、端末の紛失によるセキュリティリスクに対応できないことや、「社内」「社外」という境界が曖昧になり従来ファイアウォールで行なっていたセキュリティ対策では対応できなくなっていることなどが理由です。
そのような中で、近年注目を浴びているクラウドセキュリティ対策が「ゼロトラストセキュリティ」です。
ゼロトラストセキュリティとは、クラウドに接続するクライアントの行った過去の認証や検証を信用せず、端末認証などを含めた厳格な認証に加えて、セッションごとの振る舞いを監視します。
具体的には、下記のようなソリューションを組み合わせてセキュリティを担保します。
EPP(Endpoint Protection Platform)
エンドポイント(クラウドに接続するデバイスやクラウド側のサーバなど)のマルウェア感染を防止するための製品です。
パターンマッチング方式によりマルウェアを判別するタイプが一般的でしたが、機械学習や振る舞い解析などの技術を用い、未知のマルウェアも検知できるようになっています。
EDR(Endpoint Detection and Response)
EPPがエンドポイントのマルウェアの感染や攻撃を防ぐのに対し、EDRはエンドポイントの操作や動作の監視を行い、サイバー攻撃を受けたことを発見し次第対処するためのソリューションです。
各エンドポイントの状況をリアルタイムに監視したり、ログ監視によるサイバー攻撃の兆候を検知したりすることができます。
IAM(Identity and Access Management)
従来のVPN接続のようにユーザー認証だけを行うではなく、デバイスのセキュリティ状態やロケーション、使用しているアプリケーションの正当性を識別した上でアクセス制御を行います。それにより、ID/パスワードの漏洩によるセキュリティリスクを軽減します。
CWPP(Cloud Workload Protection Platform)
マルチクラウドを導入している企業において、複数クラウドサービスを横断して「システムの完全性の監視・管理」「ネットワークのセグメンテーション・可視化」「構成・脆弱性管理」一元管理することができます。
直接のセキュリティ対策に関係するソリューションではありませんが、複数のクラウドサービスにまたがったセキュリティ管理は複雑になる可能性があります。
マルチクラウド時代ならではのソリューションと言えるでしょう。
SOAR(Security Orchestration, Automation and Response)
マルウェア感染やサイバー攻撃の発見や兆候の検知を行った場合のセキュリティ運用の自動化や効率化を実現します。
「インシデント対応の自動化」「インシデントの管理」「脅威情報の収集と活用」といった機能で構成されています。
ゼロトラストセキュリティは厳格な認証やエンドポイントの監視を行うため、セキュリティインシデントの対応や日々の運用を全て人間の手で行うことは現実的ではありません。
複雑化するセキュリティ管理の負荷を軽減することを目的としたソリューションです。
これらのように、単にクラウドサービス内の仮想ネットワーク制御だけではなく、様々なソリューションを組み合わせてセキュリティを担保する仕組みが一般的になってきていることを理解しておきましょう。
BCP
BCP(Business Continuity Plan)への関心の高まりはクラウドに限った話ではありませんが、今や災害時における事業継続について、システム対応も含めたBCPが必須になっています。
かつては、クラウドサービスを利用するのは、ハードウェアの購入費用やデータセンタの維持費用が不要になり、システム投資金額を抑えられることが主な理由でした。
しかし、今では、国内のみならず世界地域での冗長構成がサポートされており、BCPの仕組みを構築しやすいことも、クラウドサービスを多くの企業が取り入れている理由となってきています。
クラウドサービスでは、リージョン(Region)、アベイラビリティゾーン(Availability Zones)など、災害時でも可用性を高める仕組みが用意されています。
BCPについては、企業によっては監査の対象項目となっており、業務に関連するシステムについても同様にシステム監査の対象になります。
クラウドサービスでシステム構築する際も、BCPを考慮したシステム構成にする必要があるケースの方が多いのです。
もちろん、クラウドサービスを利用する企業によって、BCPへの対応方針は異なります。
単に災害対策システムを待機系システムととらえ、平時は停止させておくコールドスタンバイの形式をとる企業もあれば、障害または災害発生時の切り替えをスムーズに行うため、複数拠点の常時稼働や自動切り替えの仕組みを構築する企業もあります。
また、通常運用はオンプレミスで行い、待機系のシステムをクラウドで動作させる、災害対策システムとのハイブリッドクラウド方式を採用する企業もあります。
クラウドサービスは初期投資が抑えられる反面、稼働状況に応じて費用を支払う課金方式になります。
しかし、無尽蔵にシステム運営にお金がかけられる企業はありません。クラウドエンジニアは費用対効果を見据えた提案を行う必要があります。
BCPの要件を満たしつつも、適切な投資額でシステム構成が組めるよう、BCPに関連するクラウドサービスの機能については理解しておくようにしましょう。
=================
>クラウド領域に関する記事
“DXコンサル”とは何か?仕事内容~必要なスキル・経験~案件事例まで解説【保存版】
https://www.axc.ne.jp/media/careertips/dxconsultant
AWSソリューションアーキテクト資格を取得したエンジニアのキャリアパス【転職事例含む】
https://www.axc.ne.jp/media/careertips/awscareerpath
=================
クラウドサービスの急速な普及でクラウドエンジニアの需要は高まっていることは間違いありません。
DXの機運の高まりにより、よく耳にするようになったIoT、ビッグデータ、クラウドAIなどについても、クラウドサービスが普及したからこそ発展した技術でもありますし、今後もその流れは変わらないでしょう。
急速に普及しているがゆえに、クラウドエンジニアはまだまだ不足しているのが実情です。
クラウドサービスに関しては技術の変遷も激しく、日々新たな機能やサービスが増え続けています。当たり前だったアーキテクチャが数年後には時代遅れになっていることも十分あり得ます。
クラウドエンジニアには、コンピュータやインフラについて基礎的な知識を土台にしつつも、日々新たなIT技術の動向を注視する姿勢が重要であると言えそうです。
キャリアでお悩みの方は、ぜひアクシスコンサルティングにご相談ください。
アクシスの求人のうち、
約77%は非公開。
平均サポート期間は3年です。
各ファームのパートナー、事業会社のCxOに定期的にご来社いただき、新組織立ち上げ等の情報交換を行なっています。中長期でのキャリアを含め、ぜひご相談ください。