メニューを閉じる

テクノデジタルグループ

メニューを開く

2019.07.19

プログラミング

Socket.ioの変わりに Amazon API Gateway & Lamda は課金で死ぬ

坂東です。

とあるシンプルな動態管理システムで、車両の位置情報をリアルタイム共有するために「オンプレサーバー」+「Socket.io」+「Redis」を使っています。
この環境を可用性を高めるためサーバーをリプレイスしたいという案件が発生しました。

NodeJSのコードは100行にも満たないマイクロなものです。
「マイクロ」「可用性」とくれば!流行の「サーバーレス」でしょうと。

 

で、いろいろググったらAWSの「API Gateway」+「Lamda」+「ElasticCache」で組めることが分かりました。
WebsocketでAPI Gatewayにつないで、処理をLamdaでやって、ElasticCacheに記録、って流れですね。

新しいものは楽しいので実装が進みます。
ふと、そういえばAWSって課金気をつけないとヤバイよなっての思い出しました。
課金を試算してみましょう。

 

いまは数年前に買った数万円のサーバーと数千円の電気代&回線代で動いています。
まあ単純にクラウドサーバーに持っていったなら、さくらなら月額3000円、AWSのEC2なら月額6000円くらい相当でしょうか。

車両に搭載された端末がSocket.ioで接続し毎秒GPS情報が送られてきます。
車両の台数は500台程で、負荷は全然余裕です。
月額数千円でこれだけラクラク捌けるってNodeJS凄いですよね。

 

GPS情報のメッセージの送信回数は「500台 * 60秒 * 60分 * 24時間 = 4320万回/日」です。

API Gatewayの課金は「メッセージング回数」「接続時間」。
メッセージング回数は、100万メッセージにつき1.0USDなので、$43/日 = $1333/月 = 14万円/月
この時点で驚いて駄目で没なんですけれど・・・引き続き
接続時間は、100万分あたり0.25USDなので、500*60*24*30 / 1000000 * 0.25 = 580円/月

Lamdaの課金は「リクエスト数」「実行時間」
リクエスト数は、100万回あたり0.2USDなので、$8.6/日 = $258/月 = 2.7万円/月
実行時間は、GB/秒あたり0.0000166667USDで使用メモリは最低が128MBなので、0.128*4320万*0.0000166667= $92/月

無料枠とElasticCacheはめんどくさいので略。

 

API GatwayもLamdaも課金が跳ね上がるので諦めました。
コネクション張りっぱなしでジャラジャラ情報を送受信するって用途には向いていないみたい。
なんらかのアクションで呼ばれるマイクロなREST APIには合いそう。

 

普通に「EC2」+「ElasticCache」+「ALB」でSocket.ioのクラスタリングサーバーを作ることにしたのでした。
GCPの方には良いやつがありそうだけど納期もあるので慣れた枯れたものにする。

 

おわり。

 


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事