【GCP】 Cloud Functionsで速度比較をしてみた

2024-07-23に公開

はじめに

個人開発をしていてネックなのが、
バックエンドとデータベースのサーバー代が高額になってしまうことだと思います。
そこで、サーバーレスなLambdaを使ってきましたが、
今までよく使用していたServerless Frameworkのプラグインである、
lambda-layersが廃止されてしまったりで、
色々検討した結果、GCPでうまくできないかと思いました。



GCPにはLambdaと同じようなCloud Functionsがどうやらあるらしいとわかったので、
どれくらいのパフォーマンスが出せるのか検証していきたいと思い、
この記事を書くことにしました。


今回は、単純にカスタムな処理は入れず下記の公式記載の関数作成方法で実装し、
まっさらな状態で各言語別にどれくらい差が出るのかを出し、今後の技術選定の参考にしたいと思います。



内容 対象
言語 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.jsnest new APP_NAMEで生成された状態のままで
Cloud Functionsにデプロイした状態です。
なので、ちょっとオーバーヘッド気味ですが、
その他のフレームワークを使用しない感じだと、
そこまで大差がないことがわかりました。

イメージ的にGOが圧倒的に速いのかと思っていたので、 少しびっくりです😶

PCの環境にもよると思いますので、 ご参考までにご覧いただけると幸いです。