クラウドサービスを使って、要件に最適なインフラを構築するクラウドエンジニア。クラウドサービスに精通しているのはもちろん、ユーザーの要求を理解して提案する能力も欠かせない。クラウドサービスを利用したシステム構築は、設計から開発までは極めて短期に進むことが特徴だ。

 「free Wi-Fiの利用者の情報をセンサーで得て、店舗の利用状況を分析する。そのインフラをAWSで構築したい」。顧客のこうした依頼に対し、中堅システムインテグレーターのISAOでクラウドエンジニアを務める赤川蘭丸氏はその場で絵を描き、「Lambda」や「Kinesis」「API Gateway」「EC2 Container Service」などAmazon Web Services(AWS)の各サービスを連携させた設計図を見せた。

 このインフラは2016年12月に依頼を受け、2017年1月にはもう稼働開始した。非機能要件を聞いて、設計図を書いて、といった“重い”プロセスは経ない。性能要件は負荷試験後に対応すればよいし、可用性のための構成も簡単に変更できる。

 「クラウドエンジニアはゼネラリスト」と赤川氏は言う。納期は1~2カ月は当たり前で2週間くらいのこともある。そんな中で、モデリング図や仕様書を書いている余裕はない。スピード感を持って、ユーザーとやり取りしてシステムに落とし込む能力が必要だ。ユーザーと話し合い、提案できる能力が重要になる。

 赤川氏の役割は、パブリッククラウドにおける設計のアドバイスに近い。「AWS上で月額いくらかかるか」「この構成で本当に動くか」などにも答えていく。ユーザーはある程度、どんなことをクラウドでやりたいかを想定しているケースが多い。

 必要なのは、クラウドサービスの特性を熟知していること。オンプレミスのシステムとの対比で「こう組み合わせて使えば同じことを実現できる」「こうすればもっと効率化できる」といったノウハウが必要だ。

 例えば、Amazon RDSを利用していてスナップショットを取得しているのに「1日1回ダンプも取得しておくのは無駄」と分かるかどうか。ダンプ取得のスクリプトを作成せずにクラウド任せにするわけだが、本当に任せてよいのかはサービスを熟知しないと言い切れない。

[画像のクリックで拡大表示]

 もう一つ重要なのが、コードをかけること。クラウドではアプリケーションのデプロイなどをコードで指示する。赤川氏は、構成管理ツール「Ansible」をよく利用する。コードの記述には、Python、Ruby、シェルスクリプト、YAMLを使う。