AWS Startup ブログ

サーバーレス・マネージドサービスを活用し開発・運用を効率化 ─ Conoris Technologies 社の AWS 活用事例

株式会社Conoris Technologies は「業務が効率化・なくなる気持ち良さを世の中へ」をビジョンに掲げ、日本企業に存在する業務の非効率をサービスで解消することを目指す企業です。

企業がクラウドサービスを安心・安全に利用できるようにするクラウドサービスセキュリティチェック支援サービス「Conoris(コノリス)」や、クラウドサービス事業者向けにセキュリティチェックシートへの記入をサポートする「Conoris Answer(コノリス アンサー)」を提供しています。

Conoris Technologies 社は、AWS のサーバーレス・マネージドサービスを有効活用し、開発・運用の効率化を図っていることが特徴です。今回はアマゾン ウェブ サービス ジャパン スタートアップ事業本部 アカウントマネージャーの Sherry Zhu とソリューションアーキテクトの杉山 卓が、同社CTO・CPOの近藤 徳行 氏にお話を伺いました。

セキュリティチェック業務を支援するサービス

Sherry:Conoris Technologies 社の提供するサービスの概要を教えてください。

近藤:私たちは「Conoris」と「Conoris Answer」という、セキュリティチェック業務を支援する 2 つのサービスを開発・提供しています。

まず「Conoris」からご説明します。多くの企業はセキュリティチェックの業務において、セキュリティチェックシートの対応にかなりの工数がかかっており、また自社で使用しているクラウドサービスの利用状況とセキュリティ情報を追えていないなどの課題を抱えています。また、セキュリティチェックシートを表計算ソフトなどによってメンテナンスしていることから、その管理コストも高い状況です。

Conoris Technologies  CTO・CPO 近藤 徳行 氏

そうした課題を解決するために、弊社は「Conoris」を提供しています。「Conoris」を用いれば、セキュリティチェックの管理者やユーザー部門、ベンダーなど各ステークホルダーの業務が Web の同一プラットフォーム内で完結するため、複数の画面やファイルを見ながら対応するといった煩雑な作業を削減できます。また、サービスが提供するバリデーションチェックにより、記入ミスや記入漏れから解放されます。

もう一方のサービスが、クラウドサービス事業者向けにセキュリティチェックシートへの記入をサポートする「Conoris Answer」です。利用する際には、まず過去に回答をしたセキュリティチェックシートや FAQ を「Conoris Answer」にアップロードします。そして次に、今回回答したいシートを「Conoris Answer」にアップロードします。

画面上に表示されたシートの設問のセルをクリックすることで、過去の回答の中から類似する設問と回答が自動で検索され、セキュリティチェックシートへの記入がより簡単にできるようになります。

GraalVM の活用により AWS Lambda の起動時間を短縮

杉山:システムの全体的なアーキテクチャを教えてください。

近藤:コンポーネントをピックアップしてご紹介しますと、大きな特徴はバックエンドに AWS Lambda を活用したサーバーレス構成になっていることです。AWS Lambda の採用理由は、金銭的コストや運用コストを削減したかったためですね。また、AWS Lambda の関数をデータソースとした API を作成するために AWS AppSync を用いています。AWS Lambda や AWS AppSync、フロントエンドのファイルはいずれも AWS Amplify(Amplify CLI)による管理をしています。

AWS Lambda で用いている言語は Java や Node.js です。Java は優れた言語ですが、AWS Lambda で活用する場合には初回リクエスト(コールドスタート)のレイテンシーが気になる場合があります。そのため弊社の環境では、何も対応を入れない場合、AWS Lambda が起動していない状態でユーザーからの初回リクエストが来ると、応答に 30 秒以上かかっていました。この課題を解決するために Provisioned Concurrency の設定を入れていました。ですが、この設定を入れると AWS Lambda の金銭的コストが高くなるという別の課題が発生します。

そこで、私たちが新たに採用したのが GraalVM です。GraalVM には native-image と呼ばれる、Java プログラムを事前コンパイルして単独実行可能なネイティブバイナリを生成する機能があります。AWS Lambda のカスタムランタイムで native-image を使うことで、Java の処理の起動時間を大幅に短縮できます。これにより、かつては初回起動時に 30 秒以上の時間がかかっていたものを、長くても 3 ~ 4 秒ほどに短縮できました。この結果、Provisioned Concurrency の設定も外すことができ、コスト削減に結びつきました。

ただし、GraalVM の事前コンパイルにおいて問題となるのが Reflection を用いているコードです。GraalVM では事前コンパイルに必要な情報を設定ファイルとして読み込み、native-image をビルドする構造となっています。逆に言えば、Reflection を利用しているコードであるにもかかわらず、その設定が行われていない場合には、Class が見つからないことによるランタイムエラーが発生します。

Java の各種ライブラリでは Reflection が用いられているため、これは大きな制約になります。この課題を解決するため、私たちはユニットテストのカバレッジを可能な限り上げることで、万が一エラーが発生しても開発時にユーザーに影響を出さずに検知できるようにしました。

他にはデータベースとして Amazon Aurora Serverless v2、「Conoris Answer」の類似性検索のために Amazon OpenSearch Service、認証関連の機能のために Amazon Cognito を活用しています。また、AWS Cloud9 も活用しています。AWS Cloud9 を使うことで開発者の環境構築にかかる時間を大幅に低減できますし、AWS Amplify CLI との組み合わせによりデプロイも容易になります。

アマゾン ウェブ サービス ジャパン ソリューションアーキテクト 杉山 卓

杉山:御社は各種サーバーレス・マネージドサービスを有効活用されていますが、それによる開発・運用上の利点を教えてください。

近藤:マネージドサービスに関して言えるのは、車輪の再発明を避けられることですね。一番わかりやすい例として、Amplify UI と Amazon Cognito を活用することで多要素認証(MFA)の機能をわずか 1 〜 2 日で実現できました。なぜなら、もともと Amazon Cognito にその機能が組み込まれているからです。

加えて、先ほどの説明にも出ましたが AWS Amplify を利用することで、デプロイにかかる運用コストも格段に少なくなっています。もしも各種のマネージドサービスを活用していなければ、そもそも工数がかかりすぎて今頃「Conoris」や「Conoris Answer」をリリースできていなかったかもしれません。

サーバーレスサービスについては良い点が大きく分けて 2 つあり、自動的にスケールしてくれることとコストを大幅に削減できることです。もしも Amazon EC2 などで Web サーバーを運用する場合には、予想されるリクエスト数に応じてサーバーを予め立ち上げておかなければなりません。ですが、AWS Lambda を使えばそうした業務から開放されます。また、処理時間に応じた課金であるためコストも安く済みます。

エンジニアが AWS のソリューションアーキテクトに相談できる環境は貴重

Sherry:御社はスタートアップ支援プログラム AWS Activate をご利用いただいていますが、このプログラムを知った経緯やご感想などをお聞かせください。

近藤:エンジェル投資家からの紹介で、AWS Activate を知りました。AWS のクレジットや各種サービスの利用がお得になるチケットをいただけて、非常にありがたかったです。また、AWS Activate でのやりとりをきっかけとして、イベントに参加して他のスタートアップ企業との情報交換ができたり、イベントで 2 回ほど登壇をさせていただきブランディングに結びつけたりと、数多くの利点がありました。

アマゾン ウェブ サービス ジャパン スタートアップ事業本部 アカウントマネージャー  Sherry Zhu

Sherry:御社は他にもソリューションアーキテクトによるサポートもご利用いただいていますが、そちらのご感想はいかがでしょうか。

近藤:杉山さんにたくさん相談していますし、的確なアドバイスをもらえるので助かっています。黎明期のスタートアップの場合、エンジニア 1 人でアーキテクチャを構築して、誰からもレビューしてもらえないケースは多いんですよね。実際、私がそうでした。そんなときに、AWS のソリューションアーキテクトに壁打ち相手になってもらえました。

具体的な事例としては、「Conoris Answer」の類似性検索の設計・実装が挙げられます。この機能を最初に構想した際、私は「おそらく機械学習を使って実現すべきだろう」と考えて、Amazon SageMaker Studio Lab を動かしていたんです。しかし、杉山さんが「Amazon OpenSearch Service の別の機能を使えば、きっと実現できますよ」と教えてくれました。そして、実際に効率良く実装できました。あのアドバイスがなければ、サービスの提供までにもっと時間を要していたと思います。

杉山:そう言っていただけて良かったです。アドバイスをした甲斐がありました。今後は、システムをどのように発展させていきたいですか。

近藤:顧客からのニーズが高い、モニタリングやトレーシングの機能をさらに拡充させたいです。それから、インフラのリファクタリングを粛々と行ってコストを低減させたいのと、サーバーレスやコンテナなどの技術もこれから積極的に活用していきたいです。

杉山:開発組織も徐々に拡大していくと思いますが、どのようなスキルやマインドを持ったエンジニアを採用したいですか。

近藤:少し変な言い方ですが、保守・運用で苦しんだことのある人に来てほしいです。そういう人は、ビジネスサイドと近い距離で仕事をしていたエンジニアでしょうし、運用改善のための工夫や努力ができると思うんですよね。現在の Conoris Technologies の事業フェーズですと、そういった人がマッチするはずです。

Sherry:最後に、シード期のスタートアップで、エンジニア 1 人だけで開発や運用をしている方に向けてメッセージをお願いします。

近藤:AWS の方々はみんな優しいので、ぜひ気軽に頼りましょう。私自身も、悩んだときに AWS の方々に相談したことで、技術選定において迷子にならずに済みました。1 人で抱え込まずに、まずは話してみることをおすすめします。

Sherry:今回はありがとうございました。スタートアップの方々にとって、非常に参考になるインタビューでした。


導入支援・お見積り・資料請求等に関するご質問、ご相談に日本担当チームがお答えします。平日 10:00〜17:00 はチャットでもお問い合わせいただけます。お問い合わせはこちら