【GCP】 Cloud Functionsで速度比較をしてみた
2024-07-23に公開
はじめに
個人開発をしていてネックなのが、
バックエンドとデータベースのサーバー代が高額になってしまうことだと思います。
そこで、サーバーレスなLambda
を使ってきましたが、
今までよく使用していたServerless Framework
のプラグインである、
lambda-layers
が廃止されてしまったりで、
色々検討した結果、GCP
でうまくできないかと思いました。
GCP
にはLambda
と同じようなCloud Functions
がどうやらあるらしいとわかったので、
どれくらいのパフォーマンスが出せるのか検証していきたいと思い、
この記事を書くことにしました。
今回は、単純にカスタムな処理は入れず下記の公式記載の関数作成方法で実装し、
まっさらな状態で各言語別にどれくらい差が出るのかを出し、今後の技術選定の参考にしたいと思います。
Google CloudPython で Cloud Functions の HTTP 関数を作成してデプロイする ...
内容 | 対象 |
---|---|
言語 | Node.js, Nest.js, GO, Python |
テスト | k6 |
テスト結果
k6で1人が10回アクセス
回数 | Nest.js | Go | Node.js | python |
---|---|---|---|---|
1 | 20.671ms | 16.931ms | 15.825ms | 18.703ms |
2 | 23.115ms | 19.217ms | 16.876ms | 17.686ms |
3 | 22.308ms | 17.899ms | 16.082ms | 22.985ms |
4 | 22.277ms | 18.485ms | 17.733ms | 12.83ms |
5 | 18.387ms | 17.627ms | 20.764ms | 15.326ms |
6 | 20.014ms | 17.255ms | 15.563ms | 12.576ms |
7 | 17.388ms | 18.98ms | 18.137ms | 12.879ms |
8 | 24.626ms | 13.526ms | 28.926ms | 12.833ms |
9 | 20.029ms | 15.712ms | 30.627ms | 12.554ms |
10 | 17.54ms | 14.183ms | 30.627ms | 19.061ms |
k6メトリクス
- Nest.js
http_req_duration..............: avg=20.63ms min=17.38ms med=20.35ms max=24.62ms p(90)=23.26ms p(95)=23.94ms
- Golang
http_req_duration..............: avg=16.98ms min=13.52ms med=17.44ms max=19.21ms p(90)=19ms p(95)=19.11ms
- Node.js
http_req_duration..............: avg=19.85ms min=15.56ms med=17.88ms max=30.62ms p(90)=29.09ms p(95)=29.86ms
- Python
http_req_duration..............: avg=15.74ms min=12.55ms med=14.1ms max=22.98ms p(90)=19.45ms p(95)=21.21ms
Nest.js
はnest new APP_NAME
で生成された状態のままで
Cloud Functions
にデプロイした状態です。
なので、ちょっとオーバーヘッド気味ですが、
その他のフレームワークを使用しない感じだと、
そこまで大差がないことがわかりました。
イメージ的にGO
が圧倒的に速いのかと思っていたので、
少しびっくりです😶
PCの環境にもよると思いますので、 ご参考までにご覧いただけると幸いです。