[AIに聞いてみた] サーバーレスってなんや [AWS Lambda]

## サーバレスってなんや
オッス、オラよわよわエンジニア。
涙目になりながら、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/](https://aws.amazon.com/jp/lambda/faqs/)
* **Hello from Lambda！AWSでサーバーレスに触ってみた #1 | LAC WATCH - 株式会社ラック**: [https://www.lac.co.jp/lacwatch/people/20240910_004109.html](https://www.lac.co.jp/lacwatch/people/20240910_004109.html)
* **大量リクエストを低コストでさばく AWS Lambda 関数を JVM で実現**: [https://aws.amazon.com/jp/builders-flash/202110/jvm-lambda-function/](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](https://logmi.jp/tech/articles/314348)
* サーバーレスのおとぎ話は終わったのか？ - Momento: [https://jp.gomomento.com/blog/is-the-serverless-fairytale-over/](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](https://speakerdeck.com/_kensh/where-did-serverless-come-from)


この年表が、サーバーレスの歴史を理解する上で役立つことを願っています。