LoginSignup
22
15

サーバレスアンチパターンが無くなった日

Last updated at Posted at 2020-07-10

Amazon RDS ProxyがGAに!

Amazon RDS ProxyがGAされたことで、@Keisuke69 さんのツイートの最後のパーツが揃ったので、名実共に今年がサーバレス元年に。
これまでサーバレスアンチパターンと言われていた構成でも使えるようになり、サーバレスアンチパターンがほぼ無くなりました。

今月になってサーバレス関連のイベントや、Webinarが増えていて、いくつか参加して聴いた内容をまとめておこうと思います。

lambda × RDS

lambdaはイベントやリクエストのたびにコンテナが起動され、そのタイミングでDBへのコネクションが張られるため、同時に処理すべきリクエスト数分のコネクションが張られることになります。RDBMSは同時接続数に限界があるため、DBへの都度接続のオーバーヘッドを回避したいのですが、コンテナ間でコネクションプールを共有することは難しいため、スケールアップが前提のRDSにおいて、lambdaとRDSの組み合わせはアンチパターンと言われてきました。なので、lambdaはこれまで分散型データベースであるDynamoDBと組み合わせて使うことが前提になっていました。こちらから要約させてもらったので、詳しい内容は見てみてください。

RDS Proxy登場

RDS Proxyが登場したことで、lambdaとRDSのコネクションプールの役目をRDS Proxyが担うことができるようになり、コネクションを有効活用してLambdaからRDSにアクセスできるようになりました。ただ、RDS Proxyを使う場合にはコストが余計にかかることと、RDSがスケールアップが前提というのは変わらないので、RDS Proxy側でRDS側の最大接続数に対してコネクションを許可する割合を設定したりしながら、RDSのCPUやメモリなどのリソースが逼迫しないようにチューニングする必要性はありそうです。

lambda × EFSと新しいアンチパターン

lambdaからEFSをマウントできるようになったことで、lambda間でデータを保存、共有できるようになったのですが、その結果 lambdaでステートフルなアプリケーションを作ってしまう可能性が高まりそうです。これまでのサーバレスアンチパターンは解消されましたが、新しいアンチパターンが生まれることもありそうです。全てを無理にlambdaでやろうとすることが最大のアンチパターンという話もありました。

それでも制限や制約もある

lambdaは水平方向のスケーラビリティは確保されているものの、スパイクなどの急激なリクエスト数の変化や、リクエスト数が少なくてもUXのために遅延を回避したい場合、またはlambdaバースト制限の緩和に対しては、Provisioned Concurrencyを活用してチューニングする必要がありそうです。また、lambdaの実行時間15分を超えるような処理の場合は、Fargateの活用も考えるべきでしょう。

Provisioned Concurrencyのチューニングについては、ServerlessJPでのAWS下川さんのスライドを参考にさせてもらいました。

thumbnail

モノリスだっていいところもある

これだけサーバレスのアンチパターンが無くなると、モノリスは無くなっていく(無くしていきたい)と思ったりしたのですが、@tcshさんのツイートを読んでなるほどと。安定を求めるか変化を求めるか。やっぱりサーバレスを考える上では、ビジネスや文化や組織論的な話につながっていくんでしょうね。

モノリスからサーバレスへ

なんでもサーバレスはアンチパターンとはいえ、適切な手順を経てサーバレスに移行することで得られるビジネス上の価値も大きいとは思います。AWS Expert Onlineの下川さんのセッションに、ベストプラクティスがギュッと詰まってました。

22
15
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
22
15