サーバーレスことはじめには「サーバーレスアプリケーション開発ガイド」がおすすめ

 「『サーバーレス』の勉強を始めたいんだけど何すればいい?」「Lambda について教えてー。」「SAMのハンズオンしてほしい!」というような相談を最近多くもらうようになりました。そんな方におすすめしたいのが「サーバーレスアプリケーション開発ガイド」です。

Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド

Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド

 おすすめする理由は大きく2つあります。

  • 実践で使える「深い」知見を得られる
  • 「手を動かしながら」学べる

この記事では、この2つを軸に、簡単に本の内容を紹介させていただきます。

実践で使える「深い」知見を得られる

 まず、この本の1章で、

  • 「なぜ」サーバーレスなのか?
  • 「いつ」サーバーレスを使うのか?
  • 「どのように」サーバーレスを使うのか?

が解説されています。サーバーレスが初めての方は、この20ページ弱を読むだけでも非常に勉強になると思います。

 その後、後述する「手を動かしながら学ぶ」ユースケースをベースにした章が始まるので、個々人が興味を持っている内容から読み進めるといいと思うのですが、各章で「こういう構成にすべき」だけではなく、「その背景にはこういう理由があって..」という解説があるため、

  • サーバーレスにすべきか/サーバありにすべきかの検討をするシーン
  • お客さんにサーバーレスな提案をするシーン

で、自信をもって議論/説明ができる力がつくと感じました。

 特に、5章のサーバーレス構成におけるファイルアップロード方式の検討は、個人的にもどうするか悩んでいた部分だったので、非常に参考になりました。

その他、

  • Lambda と RDS の相性が悪い理由
  • グローバルスコープを用いることで、コンテナの再利用を有効活用する
  • DynamoDB のオペレーションの選択(GetItem , Query , Scan の動き)

などは、AWS でサーバーレス構成を採用する場合に抑えておきたい内容ですが、どれも丁寧に解説されていて非常に勉強になりました。

「手を動かしながら」学べる

 個人的に、サーバーレスを学ぶには「実際に手を動かしながら学ぶ」のが一番手っ取り早く&楽しいと思います。3章以降はユースケース毎に CLI コマンドやソースコードが丁寧に紹介されており、「手を動かしながら学ぶ」のにもってこいです。紹介されているユースケースは下記の通りです。

  • 3章: CloudWatch のメトリクスに応じて Lambda で AWS リソースの設定を変更する
  • 4章: Kinesis を使って Twitter の内容を取得&DynamoDB に格納する
  • 5章: SPA フロントエンド& REST API バックエンドをサーバーレスに構築する
  • 6章: SAM や Code シリーズを使って、サーバーレスアプリケーションのCI/CDを自動化する
  • 7章: XRay などを用いて、サーバーレスなシステムのトラブルシューティングを行う

特におすすめしたいのが、5章の「SPA フロントエンド& REST API バックエンドをサーバーレスに構築する」です。この構築手順を抑えれば、大抵のWebサービスは作れるのではないかと思います。また、ネイティブアプリのバックエンドとしても使えるので、アプリ屋さんは REST API バックエンドの部分だけでも理解できると、作れるサービスの幅がかなり広がると思います。

個人メモ

謝辞

 実は、元々この本は MUST BUY だと思っていたのですが、著者である西谷さんにおねだりして本を頂戴しました。本当にありがとうございます。非常に学びが多く、今後の血肉になったと感じます。5章の写経を通して、更に理解を深めていければと考えています。

まとめ

 「サーバーレスアプリケーション開発ガイド」の感想と学びについて紹介させていただきました。先日の JAWS DAYS 2018 でもサーバーレス系セッションは非常に盛り上がりをみせていました。世の中に沢山需要がある反面、まだまだ枯れていない部分が多い分野ということもあり、エンジニアの関心が高いのだと思います。そんな中でまずは知識の土台を作れるこの本は本当に良い本だと感じました。本からナレッジを吸収し、自分のプロダクトに反映させ、今後も新しい知見をこのブログなどで共有していければと思います。

Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド

Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド