サーバレスってなんや
オッス、オラよわよわエンジニア。
涙目になりながら、AWSを使って一人でwebアプリが作れるようになったところだ。
ところが近頃 「サーバーレスじゃないと〜」 と Lambdaつかえよ とかよく言われる
サーバーがないの?なにそれ怖い。
結論
なんで早く教えてくれなかったんだ
EC2でApache動かすとかより先にLabdaを学ぶべきなんじゃないか?
ただの神じゃねえか。
項目 | 従来の Web サーバー | Lambda |
---|---|---|
サーバー管理 | 自分で行う必要がある | AWS が行う |
OS/ソフトウェアの更新 | 自分で行う必要がある | AWS が自動的に行う |
セキュリティパッチの適用 | 自分で行う必要がある | AWS が自動的に行う |
負荷分散 | 自分で設定する必要がある | AWS が自動的に行う |
スケーラビリティ | 自分で設定する必要がある | AWS が自動的に行う |
コスト | サーバーの運用コストがかかる | 実行時間に応じた従量課金 |
Lambda最高!Apacheとかもういらなくね!?
そう言ったらAIに怒られました。以下AIによる回答です。
Lambdaは確かに素晴らしいサービスで、従来のサーバー管理の手間を大幅に削減できる点で魅力的ですよね!
しかし、「もうApacheとか使わなくて良い」と言い切れるかどうかは、ケースバイケースです。
Lambdaのメリット
- サーバー管理不要: インフラの管理から解放され、コードの実行に集中できます。
- 自動スケーリング: アクセス量に応じて自動でスケールするため、負荷の変動に対応しやすいです。
- 従量課金: 使用した分だけ支払うため、コスト効率が良いです。
Lambdaのデメリット
- 実行時間制限: 長時間実行する処理には不向きです。
- コールドスタート: 初回実行時に起動時間がかかる場合があります。
- ステートレス: 状態を保持できないため、セッション管理などに工夫が必要です。
- デバッグの難しさ: ローカル環境でのデバッグが難しい場合があります。
Apacheを使うケース
- 複雑なWebアプリケーション: 長時間実行が必要な処理や、ステートフルな処理を含む場合。
- フルコントロール: サーバーの設定を細かくカスタマイズしたい場合。
- 既存システムとの連携: 既存のApacheベースのシステムとの連携が必要な場合。
結論
Lambdaは、シンプルなWebアプリケーションやAPI、イベント駆動型の処理などに最適です。しかし、複雑なアプリケーションや、サーバーのフルコントロールが必要な場合は、Apacheなどの従来のサーバーも依然として有効な選択肢です。
より詳しく知りたい場合は
- AWS Lambda よくある質問: https://aws.amazon.com/jp/lambda/faqs/
- Hello from Lambda!AWSでサーバーレスに触ってみた #1 | LAC WATCH - 株式会社ラック: https://www.lac.co.jp/lacwatch/people/20240910_004109.html
- 大量リクエストを低コストでさばく AWS Lambda 関数を JVM で実現: https://aws.amazon.com/jp/builders-flash/202110/jvm-lambda-function/
これらの資料も参考にして、LambdaとApacheのどちらが適しているか判断してください。
他にもあんの?
はい、AWS Lambdaのようなサーバーレスコンピューティングサービスは、他のクラウドプロバイダーも提供しています。代表的なサービスとその特徴をMarkdown方式で表にまとめました。
サービス名 | プロバイダー | 特徴 | 料金 | 対応言語 |
---|---|---|---|---|
Azure Functions | Microsoft Azure | .NETとの親和性が高い、App Serviceとの統合 | リクエスト数と実行時間に応じた従量課金 | C#, Java, JavaScript, Python, PowerShell |
Google Cloud Functions | Google Cloud Platform | Googleサービスとの統合、シンプルな料金体系 | リクエスト数、実行時間、メモリ使用量に応じた従量課金 | Node.js, Python, Go, Java |
IBM Cloud Functions | IBM Cloud | Apache OpenWhiskベース、Kubernetesとの統合 | リクエスト数と実行時間に応じた従量課金 | Node.js, Python, Swift, Java, PHP |
補足
- 各サービスとも、基本的な機能はLambdaとほぼ同じです。
- イベント駆動でコードを実行し、サーバーの管理が不要というサーバーレスコンピューティングのメリットを提供しています。
- プロバイダーごとに、得意な分野や料金体系、対応言語などが異なります。
- 上記以外にも、Alibaba CloudのFunction Computeなど、様々なサーバーレスコンピューティングサービスがあります。
選択のポイント
- 使用するプログラミング言語
- 他のクラウドサービスとの連携
- 料金体系
- 利用可能なリージョン
- サポート体制
これらの要素を考慮して、最適なサービスを選択してください。
サーバーレスっていつからあんの?最近だよなぁ!?
全然違いました。 以下AIによる回答です。
サーバーレスコンピューティングは、ここ10年ほどで急速に発展してきました。主な出来事を年表形式でまとめます。
年 | 出来事 |
---|---|
2008年 | Google App Engineのリリース |
2012年 | "サーバーレス" という言葉が登場 |
2014年 | AWS Lambdaのリリース |
2015年 | Amazon API Gatewayのリリース |
2016年 | Azure Functionsのリリース |
2017年 | Google Cloud Functionsのリリース |
2018年 | サーバーレスフレームワークの普及 |
2019年 | サーバーレスデータベースの登場 |
2020年 | エッジコンピューティングでのサーバーレス活用 |
2021年 | AI/ML分野でのサーバーレス活用 |
2022年 | サーバーレスセキュリティの進化 |
2023年 | より多くの企業がサーバーレスを採用 |
初期
- 2008年にGoogle App Engineがリリースされたことが、サーバーレスの起源と言えるでしょう。
- 当初は、プラットフォームに依存したサービスとしての提供が主流でした。
AWS Lambdaの登場
- 2014年にAWS Lambdaがリリースされたことで、サーバーレスは大きな転換期を迎えました。
- AWS Lambdaは、FaaS(Function as a Service)の先駆けとなり、多くのクラウドプロバイダーが追随しました。
発展
- API Gatewayなどの関連サービスが登場し、サーバーレスで構築できるアプリケーションの幅が広がりました。
- サーバーレスフレームワークの登場により、開発の効率化が進みました。
- サーバーレスデータベースの登場により、データの永続化が容易になりました。
現在
- サーバーレスは、Webアプリケーションだけでなく、モバイルバックエンド、IoT、AI/MLなど、様々な分野で活用されています。
- エッジコンピューティングでのサーバーレス活用も進んでいます。
- セキュリティ対策も進化し、より安心して利用できるようになっています。
今後の展望
- サーバーレスは、今後も進化を続け、より多くのアプリケーションで利用されるようになると予想されます。
- 特に、AI/ML分野での活用が期待されています。
- また、セキュリティ対策もさらに強化され、より安全なサービスになるでしょう。
参考資料
- ゼロから学ぶサーバレスの歴史 FaaSの誕生がもたらしたもの - ログミーTech: https://logmi.jp/tech/articles/314348
- サーバーレスのおとぎ話は終わったのか? - Momento: https://jp.gomomento.com/blog/is-the-serverless-fairytale-over/
- サーバーレスはどこから来たのか サーバーレスは何者か サーバーレスはどこへ行くのか / Where did serverless come from? - Speaker Deck: https://speakerdeck.com/_kensh/where-did-serverless-come-from
この年表が、サーバーレスの歴史を理解する上で役立つことを願っています。