Serverless
Serverを持たないbackend
2014年にAWS Lambdaが発表されたのが始まり ref
対義語はServerful
FaaS
Serverfulとの違い、Serverlessの特徴
Serverlessは、eventが発生した時に初めて起動する
起動して、関数を実行して、終了する、という感じ
そのため、statefulな処理には向いていないっぽいmrsekut.icon
やりようはあるんだろうけど
Serverfulは常に稼働している必要がある
AWS Lambdaは、実行した「時間(100ms単位)」と「回数」で課金される
requestがない期間は費用が発生しない
最小限の費用になる
serverを常時稼働しているときよりずっと安い
AWS Lambdaの場合は、管理の大部分をAWSに任せられる
serverの管理や運用が不要
Serverfulはserverを自分で管理する必要がある
例
AWS Lambda
Azure Functions
Google Cloud Functions
参考
/mrsekut-book-4046053550/322 (4-2-4 サーバーレス)
Serverlessの本
『基礎から学ぶサーバーレス開発』
#WIP
コスト観点
/mrsekut-book-4046053550/322 (4-2-4 サーバーレス)
稼働した時間だけ課金
設計・計画フェーズの工数短縮
バージョン管理の作業の最小化
デメリット
/mrsekut-book-486354314X/021
何に向いているか
いつ処理が必要になるかわからないが、1回の処理が短時間で終わるもの
管理の大部分をAWS側に任せられる
OSやミドルウェアのメンテが不要
ミドルウェアはLAMPのA,M,Pらへんのこと
OSや言語のversionを上げる時に、サービス停止する必要がない
必要なCPUとメモリを設定するだけでいい
サーバーへの攻撃を避けられる
/mrsekut-book-486354314X/020
どういうこと #??
サーバーのリソースを意識しない
柔軟なスケーラビリティ
事前に必要なキャパシティを考慮しなくても、リクエスト数や負荷によって自動的にスケーリング(拡張/縮退)される
可用性・回復性の向上
デフォルトで可用性と耐障害性機能が備わっているものが多い
イベント駆動プログラミングになる
Auto Scaling
#??
設計はEC2のときとどれぐらい変わるのか
どういう箇所を気をつけて実装することになるのか
EC2で実装していたコードはどれぐらい流用できるのか
どういうサービスがserverleeに向いているのか
serverlessを使った時に起こりがちな問題
table:比較
特性 仮想マシン Container Serverless
拡張の単位 仮想マシン アプリケーション 機能
存続期間 数日から数か月 数秒から数分 数ミリ秒から数秒
パフォーマンス 予測可能 予測可能性が低い 予測可能性が最も低い
運用コスト 高 中 低
運用管理性 高 中 低
プロバイダー・ロックイン 中~高 低 高
Serverlessの操作的意味論
https://qiita.com/takanorig/items/3a3a0b43b5be5b4a124f
https://qiita.com/Munchkin/items/eab39ed2a39aa20b5e54
https://blog.yuuk.io/entry/2019/rethinking-serverless-architecture
https://aws.amazon.com/jp/serverless/patterns/serverless-pattern/
https://aws.amazon.com/jp/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/