思い
EC2の管理なんてしたくない。
個人開発の金銭的ハードルが高い。
バーストアクセスでダウン...?まじかよ。。。
サーバーレス って素敵なワード...
気になったお話
それぞれわかりやすそうな記事を貼り付けていますが公式のものは各記事からリンクで飛んでください
- Lambdaの実行時間の課金単位が1ミリ秒に短縮されました
- RDS ProxyがGAされました!!
- Lambda 関数が VPC 環境で改善されます
- Lambdaのメモリ割り当てを自動で最適化!!AWS Lambda Power Tuning
- Amazon Aurora Serverless v2(プレビュー)
Lambdaの実行時間の課金単位が1ミリ秒に短縮されました
https://dev.classmethod.jp/articles/lambda-billed-duration-1ms/
課金単位が短くなったので単純にコストがより最適化されるようになりました
個人開発としては嬉しいですね
RDS ProxyがGAされました!!
https://dev.classmethod.jp/articles/rds-proxy-ga/
lambdaとRDSの組み合わせは今までタブーでした。
lambdaは実行毎でDBにコネクションを取りに行くのでRDSのmax connectionに引っかかってDBに接続ができなくなります。
従来のアプリケーションではアプリケーションでコネクションを保持して使い回すようにしており、これをコネクションプールといいます。
RDS ProxyはこのコネクションプールをAWSマネージドで行ってくれます。
=> 結果lambdaでもコネクションを食い潰すことがなくなりました。
アプリケーションからAWSマネージドに持っていくことで以下のメリットがあります(特に上はサーバーレス関係なくでかい!)
- アプリケーションを冗長構成にしていく時にmax connectionを気にして冗長上限を気にしなくて良くなる
- 複数の接続先(複数のアプリやBIやローカル...etc)でコネクションを使いまわせる(やった方がいいかはおいておいて)
Lambda 関数が VPC 環境で改善されます
今までは接続毎でENIを作成してVPC内にアタッチしていたことにより「初期起動に時間がかかる」「ENIの上限に引っかかる」という問題があったようです。(その時代に明るくなく...)
それをVPC to VPC Natを用意することによって解消されたようです
Lambdaのメモリ割り当てを自動で最適化!!AWS Lambda Power Tuning
lambdaではメモリーを自分で指定する必要があります。
これは大概よくわからずちょっと多めに構えて徐々に調整するという感じだったと思います。(私は個人開発だったのでデフォルトで放置してました...)
最近のアップデートで最低なメモリーサイズをAWSの方で提案してくれるようになったようです。
Amazon Aurora Serverless v2 (プレビュー) => GA
※ 2021/01段階でプレビューです!
追記:こちら2022/04にGAされました https://aws.amazon.com/jp/about-aws/whats-new/2022/04/amazon-aurora-serverless-v2/
RDSがついにサーバーレスで使いやすくなってきそうですね!
今まではRDSはスケールアップするにしても数秒のダウンタイムが発生したりとなかなか変更が難しいので普段から大きいサイズのインスタンスで構えることが多かったです。(しかしこいつまじで高いんですよね。。。。)
Aurora Serverlessでは自動でスケールアップをしてくれて、アクセスが低い時には自動でスケールダウンしてくれる。
アプリケーションが消費する容量に対してのみ料金を支払い、ピーク負荷の容量をプロビジョニングするコストと比較して、データベースコストを最大 90% 節約できます。
ほんの一瞬で数百から数十万のトランザクションに瞬時にスケールします。
夢のような言葉が綴られており見た瞬間お祈りポーズでした
v1にはいくつか問題点もあるようで特に一定時間アイドルすると停止されて再開に1分程度かかるという部分はだいぶ致命的かなと思います。
こちらv2でどうなっているのか見れていないので情報あったら教えて欲しいです
そのほかv1の問題点まとめられているのでぜひこちらも参考にしていただけるとです。
参考: https://dev.classmethod.jp/articles/lessons-learned-from-up-and-running-aurora-serverless/