これは、TECHSCORE Advent Calendar 2016 の14日目の記事です。
はじめまして、プロジェクトマネージャーをしている森川です。
今話題の「サーバレスアーキテクチャ」なシステム開発が、実案件において採択されました。
そのPMを担当したのが僕なので、「Serverless」というキーワードで事例記事書いて「はてブ稼げ」と編集長から肩を叩かれましたので書きます。
ですので、TECHなお話はありません。コンテナやLambdaファンクションに関する詳細もありません、単純にサーバレスすげーぜ!ってお話です。予めご了承下さい。
よろしくお願いします。
そもそも「サーバレスアーキテクチャ」ってなんぞや
そのまんま「サーバのない設計思想」って意味です。
実際にはサーバは各所に存在するんですけどね。
主に開発者目線、サービス提供者目線で、意識しなくて良い、保有コストがかからない、メンテナンスフリーって意味で、サーバレスなんです。
なんで今こんなに話題になっているのかですが、
- 「Low Cost(安い)」
- 「Easy(簡単早い)」
- 「Scalability(拡張可能性)」
が受けてるんだと思います。
まるで私の大好きな、某中華料理屋さんの「安い」「早い」「うまい」のように、3拍子揃っている訳です。そりゃ受けますよね。
どうやって出来てるの?
2014年にAmazonから、AWS Lambdaというサービスが発表されました。
何かがあった時に何かを実行するという、イベント(引金)とドリブン(駆動)の役割を担ってくれるサービスです。
簡単に言うと発射装置のようなものですね。
これがサーバレスアーキテクチャの基盤として代表的な存在となっています。
他にも同様なサービスとして、GoogleのGoogle Cloud FunctionsやMicrosoftのAzure Functionsなどもあります。
このようなタイプのサービスをFaaS(Function as a Service)と呼ぶこともあります。
これまでは、このような発射装置を、独自で作る必要がありました。
まずは、サーバを用意してOSと言語定めて初期設定して...のインフラ構築から始まり、
何かがあった時を検知するためにポーリングさせる仕組みを作ったり、例外処理やエラーハンドリングなども考慮しなくてはなりません。
さらには、性能要件を満たすための冗長性や耐障害性も必要...ナドナド、発射装置を作るだけでも多くの労力と工数がかかってしました。
もちろん、サービスローンチ後はメンテナンスも必要ですよね。
AWS Lambdaを利用することでそういった面倒な作業から開放されます。
AWSのGUIからポチポチするだけで発射装置が準備され、あとは、
「何かがあった時に何かを実行する」という「きっかけ(イベント)」と「発射するもの(ドリブン)」を準備するだけで発射装置が完成します。
もちろんメンテナンス不要です。なぜならLambdaにはOSやミドルウェア、起動や停止なんていう概念がないからです。
サーバレスアーキテクチャの勘所
で、ここから本題なんですが、結論から言うと、サーバレスアーキテクチャってLambda単体ではそんなに大した仕組みなんて出来ない感じなんです。
先ほども言いました。発射装置のような仕組みなんです。
使い方によっては面白いやり方がいくらでもあると思いますが...。
サーバレスアーキテクチャが活きてくるのは、極端なマイクロサービスとの組合せや、バックボーンに大きなプラットフォームが存在する場合だと思っています。
ここでいうプラットフォームというのは、ビッグデータであったり、RDBMS的なデータの集合体であったり、それを内包するサービス全体を指します。
例えば当社が誇るCRMクラウドサービスの「Synergy!」なんかがプラットフォームにあたりますね(はい、宣伝です!)
具体例とサーバレスアーキテクチャの凄さ
では実際に実案件でサーバレスアーキテクチャを使ってどんなことができたのかですが...
当社提供Synergy!に内包されているクライアント様の膨大な数の顧客データを利用した、イベント来場者管理システムを、3人日とちょっとで開発しました。
どのイベントのどのブースにどの来場者が何時何分にどれだけ来たのかっていうのをQRコードを使って管理し、データをSynergy!に蓄積する仕組みです。
イベント後に来場者管理やCRM、特定のブースに来場した方にセグメントしたアクションなどが取れるという訳です(Synergy!の機能)
開発工数確認したところ、開発時間約26時間、爆速ですね。
利用したのは、
- Synergy!
- AWS Lambda
- AWS API Gateway
以上です。
Synergy!には内包されているデータを操作できるAPI群(Synergy!APIという機能)が備わっています。
「AWS API Gateway」でそのAPIをコントロールし、「AWS Lambda」で処理し、「Synergy!」のデータを操作している訳です。
当初スクラッチで作ろうとしていたシステム開発見積の凡そ6分の1ほどで提供できました。
開発時間が短縮されたぶん、基本設計や総合テストなどに時間を割く余裕があり、顧客要望にも柔軟に対応できました。
今後同じようなシステムであれば、更に安く早く提供出来ると思います。
勿論イベント毎に使いまわし出来ます。
ワンタイムトークン使ってQRを生成しているのと、操作しているデータが非個人情報なので非常にセキュアです。
サーバがなくシステム買い切りなので、ランニングで必要なのは、元からご契約頂いていたSynergy!の月額費用と使った分だけのごく僅かなAWS費用です。
特別な監視も不要です。
別の案件でもいくらでも使いまわせます。
所感まとめ
これがサーバレスアーキテクチャの凄さです。
元々あった「スマホ」「QRコード」「Synergy!」をサーバレスアーキテクチャを使って紐付けて、一つの大きなシステムを構築した形になります。
今国内で盛り上がりを見せているサーバレスアーキテクチャですが、どんどん事例が出てきていますね。
現在はSynergy!とサーバレスアーキテクチャの組合せで新たなシステムロジック作ったりしていますので、また完成すれば報告するかもしれません。
こちらは開発工数が3人月から3人日になるような夢の仕組みを想定しています。
「サーバレスアーキテクチャ」という概念が出てきてから、システムロジックをあれこれ妄想するのが楽しくて仕方ありません。
既存のあのサービスと、このサービスを組合せて、GUIでボタンをポチポチしたら、
サービス基盤がほとんど出来ててメンテ不要、なんて夢のようなお話は、もう現実になっています。