0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

lambda serverless 環境でのブラボーなバックエンド言語をぼんやり考える

Posted at

lambda serverless上でtypescript + expressなシステムを作っていて、「コールドスタート早くしたいなぁ」と考える日々

lamdaで動かす場合、コールドスタートの速さ大事
EC2とかECSで動かすシステムと、ブラボーな方向がちょっと変わる

テスト環境 lambda / 本番環境ECSでも良いのだけど、lambdaの管理のしやすさは素敵。
(lamdaで対応可能な負荷のシステムに限定)

sls deployと唱えるだけでhttps環境出来てしまうし、放っておいてもお金かからないし。

今まで使ってきた言語
C# / Java => Scala => ruby => Python(ちょっと) => TypeScriptへ遷移してきた。

C#は良かった。
Scalaはサイコーに良かったのだけど、どちらもコールドスタートの遅さツラい。

求める言語について

  • コールドスタート速い
  • json apiサーバをサクサク開発できること。
  • 型ある
  • 流行ってる
  • 優秀なORM
  • 高階関数もサクサク使えること

TypeScriptについて

僕の現在のメインウエポン
型は正義、面倒臭い時はanyで何とでもなるし、硬さと柔らかさのバランスはなかなか良いと思う。
Frontと同じ感覚で使えるし、定数とかユーティリティをフロント・バックエンドの双方で使えるのは良い。

コールドスタートがちょい遅いのがツライ。
メインで使ってるTypeORMのパッケージサイズが大きいのよね。
Prismaだとちょい軽くなりそうだけど、serverless環境での動作がなかなかうまくいかん。

助走後は動作自体は早いので、lambdaじゃなければ凄く良いのだけど。

環境的に、tsconfigとかwebpackとかsource-mapとかnpmサイズとかチマチマとめんどい。
awaitめんどい。
型がついてもjavascriptなので、思わぬエラーに出くわすこともある。

Go言語 or Rust言語

lambdaでコールドスタートを考えると、この二つなのかなぁ。

Go言語

いくつか検証コード書いて見たんだけど、言語仕様的にけっこー辛くね?
["hoge", "moge", "hage"].filter(s=>s.include("h")).map(s=>hello ${s}])
みたいのを書くだけでも、けっこーな行数になってしまうというか。

Rust言語

全く書いたことが無いので、隣の芝生はもしかして青いんじゃね?状態なう
難しそうなイメージがあったので敬遠してたけど、Goより関数的な書き方はやりやすい予感?
ちょっと勉強してみようかなーと思う。
wasmにも応用聞くのは良いよね。

その他

.NET ネイティブコンパイラ

.NET7でネイティブコンパイラが導入されるらしいけど、
もしかしてC#でGo/Rust並みのコールドスタート得られるんじゃね?
妄想は広がる。

Ruby

lamdaでは動かしたことないけど、型欲しいよね。
ActiveRecordとRails consoleは最高にブラボー。

Python

数年前にちょっと使ったけど、こまごまと面倒くさかった、高階関数書きにくい。
numpy / pandas / pillowは最高にブラボー。
個人的には、Pythonに行くならTypeScriptで良いかな。

Deno

どうなん?

PHP

CakePHP時代にちょっと書いただけなので、あまり詳しくない。
そもそもFastCGI時代に生まれていてコールドスタートもそこそこ早いっぽい。
型もあるしLaravelも良さげっぽい。
もしかしてServerlessに向いてるっぽい?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?