2024.11.14
いまさらNode.jsを知ろう~環境構築も~
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つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索