この広告は、90日以上更新していないブログに表示しています。
タイトルに「AWS」が入っていませんが、AWSに限定してサーバーレス周りの開発の基礎を一通り解説した本。作者陣はCIerとしても有名なアイレット社の方々。JAWS-UG運営の方もいらっしゃいますね。そういえば2019年のAWS Summitに行った時にcloudpackのノベルティをもらった覚えがあります……

2014年に提供開始されたAWS Lambdaの登場で大きく変わった、サーバーレスとは何ぞやという話。注目を浴びている一方で本書では課題も上げています。
オンプレ>IaaS>サーバーレスサーバーレスのメリットについては以下を挙げています。
最後のメリットはさすが現場のCIerさんの意見ですね。提案書に盛り込んだ新しいワードに食いつくお客さんというのはどこでもいそうです。
サーバーレスのデメリットとしては以下を挙げています。
最後のLambdaからRDSへ繋げるのはかつてはアンチパターンとしても知られていたそうです。Lamdaを使った構成の実例というと大抵後ろにはRDBでなくてDynamoDBがいるのには、こういう訳があるのですね。
技術はなんでもそうですが、闇雲に使えばいいという訳ではないというあたりもしっかり書いています。
知っている方にはおなじみな、だいたいよく出てくるサービスの機能をまとめている章。
AWS Lambda: 2019年のVPC設定のアップデートで起動時間は改善。ランタイム(言語)はNode.js/Java/Python/Go/.NET Core/Rubyが標準で用意。「.NET 5」は2020/11リリースなのでLambdaではまだ.NETCore。Amazon API Gateway: 後ろがコンテンツでなくLambdaなどの場合も、CloudFrontと組み合わせてレイテンシーを抑えられる。WebSocketAPIを使うとステートフルな通信でチャットアプリなどにも使える。Amazon Aurora Serverless: 名前が超ややこしいが、サーバーレス専用のまったく新しいAuroraではなくてスケーリングを自動でやってくれるオプション。アクセスがあった時だけお金がかかる。使用頻度が低かったり、インスタンスサイズが不明だったりワークロードが予想できなかったり、ピーク時期が決まっているもの、開発用で平日昼間しか使わないものなどに使える。Amazon CloudWatch: 2018年のre:Inventでクエリ言語を使ってログ内の検索や分析ができるCloudWatch Logs Insights が登場、だいぶ便利になった。Amazon SQS: 性能の良い標準キューと、順番が保証されるFIFOキューがある。AWS CodeCommit: ユーザ5人までだと制限内では実は無料。AWS CodePipeline: リリースまでのステップ作業を自動化。AWS CodeBuild: ビルド時は内部でマシンを使うのでAmazonLinux かUbuntu。東京リージョンでは使えないが、Windows Server 2016 も使えるリージョンもある。AWS CodeDeploy: Lambdaのデプロイの場合は3種類。All at onceの全部一度、Y分ごとにXパーセントづつの「線形」、Xパーセント移行の後にY分後に残り全部を変えるのが「カナリア」。Amazon S3: 機能いろいろ。AWS認定でもよく出るやつ。AWS Step Functions: 2016年の登場時はLambda専用のワークフロー管理だった。2020現在は連携できるサービスがかなり増えて便利に。2019年発表のStep Functions Express Workflow はIoTなど短時間の大量イベント処理向けに最初から設計、制限や違いがあるが値段もお得。AWS DynamoDB: WCU/RCUのキャパシティユニットは、最初から設定するプロビジョニング済み以外にオンデマンドもある。
AWS Cloud9: ブラウザで動くIDE。実はEC2上以外にオンプレでもインストールできる。SAMをサポートしていてサーバーレスでよく使われる。
docs.aws.amazon.comdocs.aws.amazon.com
自分的にはAWS認定試験でよく出てきたやつ!と思いきや、けっこう新しくなっているサービスもありました。どんどん進化していきますね……
実際の構築の章。フレームワークは2つあります。SAM: Servlerless Application Model がAWS専用の構築用フレームワーク。
> sam init でクイックスタートテンプレートを選んでいって選択、ディレクトリが作られる。> sam build でビルド。出来上がった生成物を「アーティファクト」と称する。> sam local invoke でローカル上でLambdaも実行できる。> sam deploy (--guided) で対話形式で選んだりしてデプロイ。内部的にCloudFormationが使われ、AWS上にLambda関数のリソース実物が登録される。> sam local start-api で、ローカル上にDockerを使って環境が作られるので、curlhttp://127.0.0.1:3000/hogehoge のような指定でも動く。> aws cloudformation deelte-stack ... のようにCFnを使って削除。aws.amazon.comdocs.aws.amazon.com
Serverless Framework はAWSサービスへの連携度は落ちるが、Google Cloud FunctionsとAzure Functions でも動く汎用的なもの。プラグインが豊富なんだそうです。
> sls create --template xx --name AppName のようにしてディレクトリ作成。設定ファイルはserverless.yml> sls deploy がデプロイ。> sls invole local --function funcName のようにしてローカル実行。> sls remove でリソースを削除できる。www.serverless.comwww.serverless.comwww.serverless.com
「フレームワーク」と名付けられていますがRailsやLaravelやDjangoのようなWebアプリケーションフレームワークとはだいぶ意味が違って、フロントエンドの技術ならボイラープレート、create-react-appやVueCLIなどなどにちょっと似てます。コマンドでいろいろできて設定も補助してくれる便利ツールのような印象です。
CI/CDについても2章で出てきたCodeシリーズを使った一連の流れの実例を詳しく説明しています。パイプラインで使うリソースの用意の設定ファイルはpipeline.xml, CodeBuildの設定はbuildspec.yml でした。(これは認定試験でよく見たやつ...)
デプロイ時にトラフィックを切り替える「トラフィックシフト」についてもLambdaのバージョニングを利用した通常/カナリアリリースでの実例を挙げています。この節はエイリアスの説明があまりなかったので自分的にはちょい分かりにくかったです。
まずは一見するとEC2の上位互換のようにも見えるサーバーレスで、どれだけコストが変わるかの話。
うーん月6-7万というと家賃みたいですね。業務システムにLambdaを適用するとなるとバッチに使ったりするのかなと何となく思っていたのですが、必ずしもそういう訳でもなさそうです。本書でも強調されていますが、他の手段と比較し、システムの要件に合わせて検討していく必要があるのですね。
サーバーレスの監視についても以下のように解説しています。
クラウドベンダーに任せればOKではなくて、セキュリティ対策も必要ですというお話の章。
CloudFrontをリクエスト/レスポンスが通る際、振る舞いとしてCloudFrontの中にデプロイしたLambda関数が動作する機能が「Lambda@Edge」。これを使った実例も挙げています。立ち位置としてはCloudFrontの機能の一つなんですね。(自分も最初は別のサービスかと誤解してました……)
実際の開発イメージが分かる構築例が、豊富なスクリーンショットと共に掲載されています。
HTMLや画像はすべてS3に上げて静的Webサイト。データはLambda関数を通して後ろのDBのAurora Serverlessから取ってくるという構成での構築例。
続いて、マスターデータがオンプレミスの他社サーバー上のCSVにあり、これを取ってこなければならない……というケース。こんな時に使うサービスもあるんですね。
AWS Transfer for SFTP を構築。管理コンソールでボタンを押すとサーバーが構築される。> sftp ... {作成したSFTPサーバーのエンドポイント}のようにコマンドで接続、put {ファイル名} とするとS3バケットにファイルが転送される。 このAWS Transfer for SFTPですが、現在は他の機能も加わってサービス名としては「AWS Transfer Family」となっているようです。aws.amazon.com
上の構築事例でも出てきますが、LamdaをVPC内のサブネットにアタッチする方法を改めて詳しく説明しています。「VPC Lambda」と呼ぶんですね。(サービス名ぽくてややこしいです...)2019年に改善されたアップデートは3点でした。
Provisioned Cuncurrency: 突発大量リクエストの際にLambdaのコールドスタートで遅くなるのを防ぐため、予め指定された数のLambdaを起動しておけるように。設定数は要調整、また無料利用枠から外れてしまう。RDS Proxy:Amazon RDS側の新機能。接続先をプロキシに紐づけておくと、不要セッション管理などをプロキシに任せられる。これのおかげでLambda→RDSで繋ぎまくってDBコネクションが枯渇する現象に対応できるように。このアップデートで、もはやアンチパターンでもなくなって活用の幅が広がったとのこと。自分のいるエンタープライズな開発の世界だと、たとえこれからAWSがより使われるようになっても、データの置き場所はDynamoDBではなくオンプレのRDBからデータを移行した各種RDSであることが多そう(な気がする)ので、こういう最新情報にも触れてくれるのはありがたいですね。
2017年に発表された「AWS IoTエンタープライズボタン」を活用して、物理的なボタンを押したらLambda関数が動いてSlackに通知、Google Apps Script(GAS)経由でGoogleスプレッドシートに勤怠を記入するという、withコロナ時代っぽい仕組み。実際に活用されているそうです。
最後はGUIでなくて声が入力のVUIとして、Alexa経由でTodoリストを作ってしまうという本格的な例。
最後のこの事例は非常に本格的で、Lambdaのコード例がけっこう長くて理解しきれませんでした(笑)
最後は先駆者の失敗のありがたい共有ということで、スクショ付きで幾つか載っています。
自分が使うシーンが出てこないことを祈りたいところですが、Lambda関数が無限ループしたら、管理コンソールの「スロットリング」ボタンで強制停止するというテクもあるんですね。
本書のあちこちに出てきますが、配置した後の監視もけっこう大事なのだなと思いました。
この先詳しくはAWS公式へ、となっているところもありますが、サーバーレス周りの情報を一通り掴める本でした。
さすがにクラウドの現場の会社発ということで、気を付けるべき点や思わぬ実戦テクもあちこちに書いてありますし、設定例やLamda関数のコード例も豊富です。258ページなので割と手軽に読めます。
ありがたいのは本書は2020年7月刊行、2020年前半までのAWSアップデートが反映されているところ。下に並べてみましたがサーバーレスの本というと2017-2018年頃で止まっているので、最新情報が得られるのは助かります。
僕もAWS認定資格の知識がベースだったもので、なんかもう新しくなってる……!という箇所があちこちにありました。Lambdaの後ろにRDSを配置するのは以前はアンチパターンだったなんて本書で初めて知りました。
既にサーバーレスの地平に身を置いている方にも、学習中の方にも、それぞれ役に立つことと思います。自分的にはやはりコードを書くエンジニアなので、Lambda関数周りはさらに深堀っていきたいなと思いました。

『AWSによるサーバーレスアーキテクチャ』が原著者はServerlessconfのオーガナイザーの方で翻訳が2018年。この本はよく見聞きします。

感想記事が以下。この本も理論から実際の構築まで幅広く扱っておりおすすめです。
『Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド』が同じく2018年。AWSJの中の人自らによる執筆。
感想記事が以下。画像投稿サイトを組んでいく実例が実践的でおすすめです。
『AWS Lambda実践ガイド』が2017年10月、LambdaにフォーカスしてコードはすべてPython。評価の高い本です。
感想記事が以下。2017年刊行でもそう古いところはなく、2021年現在でも十分役に立つ本でした。
『実践AWS Lambda 「サーバレス」を実現する新しいアプリケーションのプラットフォーム』 も同じく2017年の6月、こちらはAWSJの方による執筆で日本で最初のLambdaの本。
『サーバーレスシングルページアプリケーション ―S3、AWS Lambda、APIGateway、DynamoDB、Cognitoで構築するスケーラブルなWebサービス』がタイトルが長いオライリーの翻訳本で2017年。フロント側のSPAまで扱っています。

サーバーレスシングルページアプリケーション ―S3、AWS Lambda、API Gateway、DynamoDB、Cognitoで構築するスケーラブルなWebサービス
ほか、技術の泉シリーズの軽めの本やKindle限定の本でいくつかあります。
AWS以外のクラウドプラットフォーム、AzureやGCPでかつサーバーレスの本というのは商業本では出ていませんが、AWS Lambdaに相当するAzure Functionsに限った本は2019年に出ています。

Azure Functions入門~サーバー管理を不要にするサーバーレスアプリ開発のすべて~
id:iwasiman引退した元TRPGゲーマー。COBOLでもなくPL/Iの金融系レガシー紙駆動開発から脱出→国産メーカー系総合ITベンダーのITエンジニア。所謂SIerのSEだけど仕事はほぼソフトウェアエンジニア/ソフトウェアアーキテクトとして、Web開発でコードを書いたり技術を追ったり時々イベントに行ったり、楽しいエンジニアリングを目指しています。Views are my own.
お気軽にどうぞ~
リンク集:https://lit.link/iwasiman
AIイラスト関連の活動はこちら↓
https://www.chichi-pui.com/users/iwasiman/
https://pixiv.me/iwasiman
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。