技術書典13に『Google Cloud Platformで学ぶTerraform』の基礎編と実践編の第2版をもって出展します!

  • オフライン開催
    • 会期:2022/09/11 (日)
    • 会場:池袋サンシャインシティ 展示ホールD(文化会館ビル2F)
  • オンライン開催
    • 会期:2022/09/10 (土) 〜 2022/09/25(日)
    • 会場:技術書典オンラインマーケット

最後にオフライン会場で出展したのは、2019年の技術書典7。2年ぶりのオフライン会場めちゃくちゃ楽しみにです!

「か10」にいます。

販売チャネルとラインナップ

今回第2版を出す2冊は印刷します!初紙本化!技術書典8以降も継続的に出展し、新刊をお届けしてきました。しかし、オンラインマーケットのみ参加ということで、紙本印刷はすべて見送ってきました。

技術書典13ではつぎのラインナップ、部数、価格を予定しています。電子版は継続販売しますが、紙本は期間中のみなのでご注意ください。価格設定も異なります。

技術書典オフライン開催

池袋サンシャインシティで2022/09/11 (日)に開催されるオフラインイベントでは、3種類の本がご購入いただきます。オンラインの価格据え置き+αで、紙本もついてくるというお得な感じになっています。

  • 『Google Cloud Platformで学ぶTerraform 〜基礎編〜 第2版』
    • 紙本 + 電子版(PDF、EPUB)のQRコードカード: 1000円 (先着100名)
    • 電子版(PDF、EPUB)のQRコードカード: 1000円 (先着100名)
  • 『Google Cloud Platformで学ぶTerraform 〜実践編〜 第2版』
    • 紙本 + 電子版(PDF、EPUB)のQRコードカード: 1000円 (先着80名)
    • 電子版(PDF、EPUB)のQRコードカード: 1000円 (先着20名)
  • 『Knativeソースコードリーディング入門』
    • 紙本 + 電子版(PDF、EPUB)のQRコードカード: 500円 (先着xx名)
    • 電子版(PDF、EPUB)のQRコードカード: 500円 (先着xx名)

上記すべて売り切れた場合でも、オンラインで出品している商品の現金購入、かんたん後払いを受け付けます。

技術書典オンライン開催

技術書典オンラインマーケット自体は常設です。そのため、2022/08/29時点で、電子版はすべてご購入いただけます。

2022/09/10 (土) 〜 2022/09/25(日)期間中は、紙本もご注文いただけるようになる予定です。技術書典の「あとから印刷」を利用するため、紙本がお手元に届くのは期間後です。

BOOTH

2022/08/29時点で、電子版はすべてご購入いただけます。

GCPで学ぶTerraformの基礎編・実践編については、オフラインイベントで在庫が発生した場合のみ紙本も販売します。

GCPで学ぶTerraform 基礎編・実践編 第2版紹介

『Google Cloud Platformで学ぶTerraform 〜基礎編〜 第2版』

(以前書いた紹介文より)

僕は、マイクロサービスを開発するためのプラットフォームを開発・運用するチームで2020年から働き始めました。それ以前の仕事は、バックエンドエンジニアとしてのマイクロサービス開発です。プラットフォームチームが開発したTerraformモジュールに設定を渡し、GCPやKubernetesのリソースを作成していました。

いざそのモジュールを作成したり、エラーのデバッグをする立場になってみると何もわかりません。つぎのような疑問がわきました。
・モジュールとは何か
・複数のリソースから構成されるアーキテクチャはどう組み立てるのか
・なぜ Terraform の状態と実際のクラウドリソースの状態はずれるのか

Terraformの概念や個々のリソースの使い方、GCPを利用したサンプルのモジュールはたくさんあります。Terraformに関する書籍もあります。
しかし、Terraformの具体的な説明に登場するクラウドは、ほとんどがAWSです。クラウドアーキテクチャの設計経験も多くはない著者にとって、AWS ベースで説明された内容をGCPに置き換えながら学ぶのはとても大変でした。そこで、この本を書くことに決めました。

AWSからGCPへの翻訳をせず、クラウドの設計やTerraformをGCPを通じて学べる本。半年前の僕が欲しかった本です。この本を通じ、Terraform をより身近に感じる人が増えたら幸いです。

正誤表・増補改訂情報はこちらのページで公開しています。

https://toshi0607.com/event/learning-terraform-with-gcp-basic-edition-update/

登場するほとんどのサンプルコードも、GitHub上で公開しています。

toshi0607/Learning-Terraform-with-GCP

目次です。

第1章 はじめに

第2章 Terraform の概要
2.1 Terraformの意義
2.2 Terraformのアーキテクチャ
2.3 まとめ

第3章 環境構築
3.1 GCPアカウント
3.2 GCPプロジェクト
3.3 GoogleCloudSDK
3.4 tfenv
3.5 vscode-terraform
3.6 まとめ

第4章 リソースとterraformコマンド
4.1 リソース
4.2 terraformコマンド
 init
 plan
 apply
 destroy
4.3 ライフサイクル
 create_before_destroy
 prevent_destroy
 ignore_changes
4.4 まとめ

第5章 Configurationの書き方
5.1 関数
 join
 length
 contains
 values
 file
 その他の関数
5.2 変数
 variable
 output
 locals
 データソース
5.3 ループ
 count
 for_each
 for
 dynamic
5.4 条件式
5.5 バージョンの明示
5.6 モジュール
 子モジュールの定義
 ルートモジュールの定義
5.7 まとめ

第6章 ステート管理
6.1 ステートの構造
6.2 リモートバックエンド
6.3 管理単位
 ワークスペース
 バックエンド
6.4 参照
6.5 ズレと直し方
 定義あり、ステートあり、リソースあり
 定義あり、ステートあり、リソースなし
 定義あり、ステートなし、リソースあり
 定義あり、ステートなし、リソースなし
 定義なし、ステートあり、リソースあり
 定義なし、ステートあり、リソースなし
 定義なし、ステートなし、リソースあり
 定義なし、ステートなし、リソースなし
6.6 リファクタリング
 moved
terraform state mv
6.7 まとめ
[コラム]リソースの種類の変更

あとがき

『Google Cloud Platformで学ぶTerraform 〜実践編〜 第2版』

基礎編の続きです。基礎編の内容理解を前提とし、モジュールの設計、リント、バリデーション、テスト、CI/CDなどのより実践的な内容をお届けします。

正誤表・増補改訂情報はこちらのページで公開しています。

https://toshi0607.com/event/learning-terraform-with-gcp-practical-edition-update/

登場するほとんどのサンプルコードも、GitHub上で公開予定です。

toshi0607/Learning-Terraform-with-GCP
toshi0607/GKE-Microservices-Terraform-project-template
目次です。

第1章 はじめに

第2章 環境構築
2.1 GCPアカウント
2.2 GCPプロジェクト
2.3 Google Cloud SDK
2.4 tfenv
2.5 Hashi CorpTerraform
2.6 まとめ

第3章 2層アーキテクチャ
3.1 アーキテクチャの概要
3.2 アーキテクチャの詳細
3.3 Terraform化
3.4 安全な変更
3.5 まとめ

第4章 アーキテクチャの全体像
4.1 アーキテクチャの概要
4.2 Terraformモジュール
4.3 まとめ

第5章 Projectモジュール
5.1 モジュールの機能
5.2 組織の作成
5.3 モジュールの開発
5.4 まとめ
[コラム]GCPプロジェクトのクオータ緩和申請

第6章 Clusterモジュール
6.1 モジュールの機能
6.2 モジュールの開発
6.3 まとめ
[コラム]モジュールのパス
[コラム]モジュールの埋め込みとコンポジション

第7章 Microservicesモジュール
7.1 モジュールの機能
7.2 モジュールの開発
7.3 まとめ

第8章 リントとバリデーション
8.1 terraform fmt
8.2 terraform validate
8.3 TFLint
8.4 Conftest
8.5 まとめ

第9章 テスト
9.1 Terratest
9.2 Projectモジュール
9.3 Microservicesモジュール
9.4 まとめ
[コラム]テストの磨き込み

第10章
10.1 Cloud Build
10.2 事前準備
権限付与
Step実行用のコンテナイメージ
CloudBuildとGitHubの連携
10.3 ソースコードと変更差分の取得
10.4 Terraformの検証‧実行
10.5 モジュールのテスト
10.6 まとめ
あとがき

技術書典10に関わられたすべてのみなさんお疲れ様でした。

つぎの出展に備えて振り返りたいと思います。

出展した本の内容についてはこちらにまとめています。

技術書典10で新刊『Google Cloud Platformで学ぶTerraform 〜実践編〜』を含む6冊+αを出展します #技術書典

技術書典オンラインマーケットでも、BOOTHでも引き続き販売中です!

手にとってくださった方は、こちらのページで変更内容をお知らせしていくのでぜひ見てみてください。

『Google Cloud Platformで学ぶTerraform 〜実践編〜』

『Google Cloud Platformで学ぶTerraform 〜実践編〜』の正誤表と増補改訂情報 #技術書典

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』の正誤表と増補改訂情報 #技術書典

『KnativeとIngress Gateway』

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』の正誤表と増補改訂情報 #技術書典

『Knativeソースコードリーディング入門』

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Knativeの歩き方』

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda』

『Goで学ぶAWS Lambda』の正誤表と増補改訂情報 #技術書典

振り返り

Good

諦めなさ

技術書典10が発表されたのが10月28日。今年の2月くらいだろうと油断していたところ、12月26日まで2ヶ月弱しかありませんでした。

去年3回目の技術書典(= 締切)だったことや、12月に入っても検証が終わらなかったことで何度か折れそうになりました。それでも、実践編はいつ出るのか何人か問い合わせていただいたこともあり、なんとか間に合わせられました。

実践

仕事で得た知見を最大限活かせたと思います。資産として、会社のメンバーに対するオンボーディングに活かそうと思います。

表紙絵

妻に大感謝です。ついでに、ツイッターのアイコンも新しく作ってもらいました。

Challenge

改訂版

すでにいくつか指摘をいただいているので、改訂版を出そうと思います。コマンド間違いの訂正や、説明補足、Terraformのバージョンアップなどです。

ネットワークまわりで、デフォルトのVPCでなくShared VPCを利用するのもあったほうがいいかなぁとは思います。

紙本

前回の振り返りでも、紙本を検討しようとしていました。しかし、まったく時間がなかったので手つかずでした。

次回出展するとしたら、GCP Terraform本を改定するのと、基礎編と実践編を合わせたバージョンを出したいと思っています。

需要を調べ、もしあるようなら紙本を出します。

Zenn

基礎編と実践編を合わせたバージョンを作る段階で、Zennでも出そうと思います。ブラウザで全部読めると楽なのかもしれません。

数字の整理

売上

技術書典オンラインマーケット

12/26〜1/7分

  • Google Cloud Platformで学ぶTerraform 〜実践編〜: 46冊
  • Google Cloud Platformで学ぶTerraform 〜基礎編〜: 6冊
  • JavaScriptとSEO: 2冊
  • KnativeとIngress Gateway 第2版: 1冊
  • Knativeソースコードリーディング入門: 1冊
  • Knativeの歩き方 第2版: 2冊
  • Goで学ぶAWS Lambda 第2版: 4冊

1000円 × 60冊 + 500円 × 2冊 = 61,000円

BOOTH

12/26〜1/7分

  • Google Cloud Platformで学ぶTerraform 〜実践編〜: 20冊
  • Google Cloud Platformで学ぶTerraform 〜基礎編〜: 6冊
  • JavaScriptとSEO: 0冊
  • KnativeとIngress Gateway 第2版: 2冊
  • Knativeソースコードリーディング入門: 2冊
  • Knativeの歩き方 第2版: 4冊
  • Goで学ぶAWS Lambda 第2版: 6冊

1000円 × 40冊 = 40,000円

原価

過去分

前回の売上は、リモートワークに不可欠ないすと、実践編の前提になったProfessional Data Engineerの受験費用と、『Official Google Cloud Certified Professional Data Engineer Study Guide』の購入費用に充てました。

今回は妻用のいすを購入しようと思います。

2020年12月26日(土)〜2021年1月6日(水)に開催される技術書典10で6冊出展します!

カエルと空というサークルで、このページから出展しているのでぜひのぞいて行ってください!

カエルと空のサークルページ

出展する本を紹介します。

『Google Cloud Platformで学ぶTerraform 〜実践編〜』

前回出した基礎編の続きです。基礎編の内容理解を前提とし、モジュールの設計、リント、バリデーション、テスト、CI/CDなどのより実践的な内容をお届けします。

正誤表・増補改訂情報はこちらのページで公開しています。

『Google Cloud Platformで学ぶTerraform 〜実践編〜』の正誤表と増補改訂情報 #技術書典

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/2629085

登場するほとんどのサンプルコードも、GitHub上で公開予定です。

目次です。

第1章 はじめに

第2章 環境構築
2.1 GCPアカウント
2.2 GCPプロジェクト
2.3 Google Cloud SDK
2.4 tfenv
2.5 Hashi CorpTerraform
2.6 まとめ

第3章 2層アーキテクチャ
3.1 アーキテクチャの概要
3.2 アーキテクチャの詳細
3.3 Terraform化
3.4 安全な変更
3.5 まとめ

第4章 アーキテクチャの全体像
4.1 アーキテクチャの概要
4.2 Terraformモジュール
4.3 まとめ

第5章 Projectモジュール
5.1 モジュールの機能
5.2 組織の作成
5.3 モジュールの開発
5.4 まとめ
[コラム]GCPプロジェクトのクオータ緩和申請

第6章 Clusterモジュール
6.1 モジュールの機能
6.2 モジュールの開発
6.3 まとめ
[コラム]モジュールのパス
[コラム]モジュールの埋め込みとコンポジション

第7章 Microservicesモジュール
7.1 モジュールの機能
7.2 モジュールの開発
7.3 まとめ

第8章 リントとバリデーション
8.1 terraform fmt
8.2 terraform validate
8.3 TFLint
8.4 Conftest
8.5 まとめ

第9章 テスト
9.1 Terratest
9.2 Projectモジュール
9.3 Microservicesモジュール
9.4 まとめ
[コラム]テストの磨き込み

第10章
10.1 Cloud Build
10.2 事前準備
権限付与
Step実行用のコンテナイメージ
CloudBuildとGitHubの連携
10.3 ソースコードと変更差分の取得
10.4 Terraformの検証‧実行
10.5 モジュールのテスト
10.6 まとめ
あとがき

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』

僕は、マイクロサービスを開発するためのプラットフォームを開発・運用するチームで2020年から働き始めました。それ以前の仕事は、バックエンドエンジニアとしてのマイクロサービス開発です。プラットフォームチームが開発したTerraformモジュールに設定を渡し、GCPやKubernetesのリソースを作成していました。

いざそのモジュールを作成したり、エラーのデバッグをする立場になってみると何もわかりません。つぎのような疑問がわきました。
・モジュールとは何か
・複数のリソースから構成されるアーキテクチャはどう組み立てるのか
・なぜ Terraform の状態と実際のクラウドリソースの状態はずれるのか

Terraformの概念や個々のリソースの使い方、GCPを利用したサンプルのモジュールはたくさんあります。Terraformに関する書籍もあります。
しかし、Terraformの具体的な説明に登場するクラウドは、ほとんどがAWSです。クラウドアーキテクチャの設計経験も多くはない著者にとって、AWS ベースで説明された内容をGCPに置き換えながら学ぶのはとても大変でした。そこで、この本を書くことに決めました。

AWSからGCPへの翻訳をせず、クラウドの設計やTerraformをGCPを通じて学べる本。半年前の僕が欲しかった本です。この本を通じ、Terraform をより身近に感じる人が増えたら幸いです。

正誤表・増補改訂情報はこちらのページで公開しています。

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』の正誤表と増補改訂情報 #技術書典

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/2354817

登場するほとんどのサンプルコードも、GitHub上で公開しています。

toshi0607/Learning-Terraform-with-GCP

目次です。

第1章 はじめに

第2章 Terraform の概要
2.1 Terraformの意義
2.2 Terraformのアーキテクチャ
2.3 まとめ

第3章 環境構築
3.1 GCPアカウント
3.2 GCPプロジェクト
3.3 GoogleCloudSDK
3.4 tfenv
3.5 vscode-terraform
3.6 まとめ

第4章 リソースとterraformコマンド
4.1 リソース
4.2 terraformコマンド
 init
 plan
 apply
 destroy
4.3 ライフサイクル
 create_before_destroy
 prevent_destroy
 ignore_changes
4.4 まとめ

第5章 Configurationの書き方
5.1 関数
 join
 length
 contains
 values
 file
 その他の関数
5.2 変数
 variable
 output
 locals
 データソース
5.3 ループ
 count
 for_each
 for
 dynamic
5.4 条件式
5.5 バージョンの明示
5.6 モジュール
 子モジュールの定義
 ルートモジュールの定義
5.7 まとめ

第6章 ステート管理
6.1 ステートの構造
6.2 リモートバックエンド
6.3 管理単位
 ワークスペース
 バックエンド
6.4 参照
6.5 ズレと直し方
 定義あり、ステートあり、リソースあり
 定義あり、ステートあり、リソースなし
 定義あり、ステートなし、リソースあり
 定義あり、ステートなし、リソースなし
 定義なし、ステートあり、リソースあり
 定義なし、ステートあり、リソースなし
 定義なし、ステートなし、リソースあり
 定義なし、ステートなし、リソースなし
6.6 リファクタリング
6.7 まとめ

あとがき

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜 第2版』

初版から大幅に加筆した第2版です!

2019年末同僚に「なぜIstio(VirtualService)を使わずにKnativeはトラフィックスプリッティングのような機能を実現できるのか」と質問されて答えられなかったのがきっかけで調べることにしました。

Knativeは当初Ingress GatewayにIstioを採用(依存)しましたが、後にGlooをはじめ様々なコンポーネントで代替可能になりました。代替できる事実は知りつつも、なぜ代替できるのか、代替できるとはどういうことなのかを調べることはありませんでした。

しかし、「プラットフォームを開発・運用する」ことへの関心が高まり、(何層もある)Knativeより下のレイヤーを学びたい気持ちが強くなりました。本書はその一環です。Knative = Kubernetes Networkingとも説明されるKnativeのIngress Gateway周りの調査はKubernetesが提供しているService、Ingressの特徴や課題、そもそもロードバランサーとは何かのか、サービスメッシュやEnvoyとはどういう関係があるのか、といったネットワーク関連の入門にもうってつけでした。

「KnativeはなぜIngress Gatewayを交換できるのか?」という問いに答えることは、Envoyの設定をどう表現し、どう配信するかというデザインパターンを見い出すことに繋がります。

90ページ弱の自由研究に付き合っていただけたら幸いです!

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/1882118

目次です。

第1章 Knative
1.1 概要
1.2 Serving
1.3 Eventing
1.4 まとめ

第2章 Gateway
2.1 ServiceとIngress
2.2 Gateway と Service Mesh
 [コラム]APIGatewayとサービスメッシュの違い
2.3 Envoy とコントロールプレーン
2.4 コントロールプレーンの実装例(Istio)
2.5 まとめ
 [コラム]IngressAPIの進化
 [コラム] L4 から L7 ロードバランサーへ

第3章 Istio
3.1 概要
3.2 KnativeのCRD
3.3 Knativeのコンポーネント
3.4 IstioのCRD
3.5 Istioのコンポーネント
3.6 localgateway
3.7 Gateway
3.8 まとめ

第4章 Ambassador
4.1 概要
4.2 Knativeのコンポーネント
4.3 Ambassadorのコンポーネント
4.4 AmbassadorとEnvoy
4.5 まとめ

第5章 Contour
5.1 概要
5.2 Knativeのコンポーネント
5.3 Contourのコンポーネント
5.4 まとめ

第6章 Kourier
6.1 概要
6.2 Knativeのコンポーネント
6.3 Kourierのコンポーネント
6.4 まとめ
 [コラム] Kourier の活用事例

第7章 Gloo
7.1 概要
7.2 Knativeのコンポーネント
7.3 Glooのコンポーネント
7.4 まとめ
 [コラム]Envoyとgo-control-planeの今後

第8章 まとめ
8.1 Gateway
8.2 Ambassador
8.3 Contour
8.4 Gloo
8.5 Kourier
8.6 Istio
8.7 最後に

Appendix

『Knativeの歩き方 KubernetesからServerlessを訪ねて 第2版』

こちらはKnativeのコンポーネントの説明やユースケースを中心に説明した本です。実際にKnativeが利用されたプロダクトの図解も掲載しています。

こちらもすでにBOOTHで電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1309468

正誤表や増補改訂情報ページはこちらです。

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

目次です。

第1章 Knativeの概要
1.1 Knativeの構成要素
1.2 Serving
1.3 Build
1.4 Eventing

第2章 Kubernetes環境の準備

第3章 KubernetesとKnativeの関係
3.1 Kubernetesの基本的思想
3.2 Kubernetesのオートスケール
3.3 Kubernetesの拡張機能

第4章 Knative Serving
4.1 Knativeのインストール
4.1.1 Istioの設定
4.1.2 Knativeの設定
4.2 Configuration
4.3 Revison
4.4 Routes
4.5 Service
4.6 オートスケールの仕組み

第5章 Knative Build
5.1 Build
5.2 BuildTemplate
5.3 Servingと組み合わせる

第6章 Knative Eventing
6.1 Sources
6.2 BrokerとTrigger
6.3 ChannelとSubscription

第7章 Knative のユースケース
7.1 FaaS プラットフォームの構築
7.1.1 イベントやリクエストを Function に渡すサーバー
7.1.2 サーバーとFunctionのパッケージング
7.1.3 CLI
7.2 イベント pull 型の FaaS 〜Knative Lambda Runtimes の利用例〜
7.2.1 AWS Lambda の Function(Go)
7.2.2 AWSLambdaとRuntimeInterface
7.2.3 knative-lambda-runtime
7.2.4 triggermesh/aws-custom-runtime
7.2.5 bootstrap
7.2.6 Tekton で生成するコンテナイメージ
7.3 イベント push 型の FaaS 〜OpenFaaS の Watchdog の利用例〜
7.3.1 WatchdogによるFunction制御
7.3.2 WatchdogとFunction同梱のDockerfile
KnativeのCLI

『Knativeソースコードリーディング入門 Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー』

Knativeの仕組みをより深く追おうとするときに、Kubernetesのカスタムリソースやカスタムコントローラーの枠組みを知っておくと追いやすくなります。本書では、Knativeはもちろん、Kubernetes自体の様々なソースコードを追いながらそれを解説しています。

以前mercari.goで発表した内容をより詳細に紹介したものです。

目次です。

第1章 KnativeとKuberentesの関係
1.1 Kubernetesの概要
1.2 Kubernetesの拡張方法
1.3 Knative の概要

第2章 KubernetesのAPI
2.1 APIサーバーの責務
2.2 Kind
2.3 APIグループ
2.4 バージョン
2.5 リソースとサブリソース
2.6 APIリクエストの処理フロー

第3章 APIクライアント
3.1 client-go
3.2 Object
3.2.1 TypeMeta
3.2.2 ObjectMeta
3.2.3 Spec
3.2.4 Status
3.3 ClientSet
3.4 Informer
3.5 APIMachinery
3.5.1 Scheme
3.5.2 RESTMapper

第4章 カスタムリソース
4.1 CR
4.2 CRD
4.2.1 categories
4.2.2 shortNames
4.2.3 subresources
4.2.4 additionalPrinterColumns

引き続き電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1568456

正誤表や増補改訂情報ページはこちらです。

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda 第2版』

技術書典5で出展したAWS Lambdaのユースケースに関する本も引き続き。

AWS Lambda周辺のエコシステムはこの本の最終更新後に大きな変更がありました。Amazon RDS Proxy with AWS Lambda、AWS Lambda VPC接続の改善、Provisioned Concurrency for Lambda Functionsは本の中でも触れられている課題の決定的な解決策です。少し本の内容が古くなってしまったものの、AWS Lambda(とSAM)をGo言語で学ぶ入門の1つとしては依然として有効ではないかと思います。

お陰様で商業版を出版したり、こちらもすでに第2版がBOOTHで購入できる状態になっています。

https://booth.pm/ja/items/1034858

GoとSAMで学ぶAWS Lambda

目次です。

第1章 環境構築
1.1 anyenv
1.2 anyenvupdate
1.3 goenvとGo
1.4 pyenvとPython
1.5 aws-cli
1.6 aws-sam-cli
インストールトラブルシューティング
1.7 saw
1.8 direnv
1.9 dep
1.10 gig

第2章 S3 イベントの活用
2.1 概要
2.2 S3
2.3 シーケンス
2.4 フォルダ構成
2.5 ソースコード
2.6 テスト
2.7 デプロイ
2.8 削除

第3章 SNS と SQS によるファンアウト
3.1 概要
3.2 SQS
3.3 SNS
3.4 シーケンス
3.5 フォルダ構成
3.6 ソースコード
3.7 テスト
3.8 デプロイ
3.9 削除
CloudFormationトラブルシューティング

第4章 API Gateway と DynamoDB を使った URL 短縮サービス
4.1 概要
4.2 APIGateway
4.3 DynamoDB
4.4 シーケンス
4.5 フォルダ構成
4.6 ソースコード
4.7 テスト
4.8 デプロイ
4.9 削除
DynamoDBのテーブル定義変更
LambdaとAPIGatewayのローカル実行

このページでは『Google Cloud Platformで学ぶTerraform 〜実践編〜 第2版』の正誤表と増補・改訂をお知らせします。

この本を手にとってくださった方がちょっとでも選んでよかったと思う本に育てていきたいので、章の追加なども楽しみにしていてください。

増補・改訂版は購入方法に応じて異なります。

  • ダウンロードカード: Googleドライブ。バージョン毎にフォルダが分かれています。
  • 技術書典のサイト: 技術書典サイトのマイページ。常に最新版をアップロードしています。
  • BOOTH: BOOTH購入ページの注文詳細画面。常に最新版をアップロードしています。

引き続きフィードバックお待ちしてます!@toshi0607

正誤表

PDFページ PDF反映 ePub版反映 修正日 version
6 switch use done done 2021/1/10 v1.0.1
41 Secert Secret done done 2021/1/10 v1.0.1
77 gsutil mb -l ASIA-NORTHEAST1
-p 【YOUR PROJECT】 【YOUR PROJECT】
gsutil mb -l ASIA-NORTHEAST1 -p
【YOUR PROJECT】 【YOUR BUCKET】
done done 2021/1/10 v1.0.1
77 gcp_project = 【YOUR PROJECT】 (削除) done done 2021/1/10 v1.0.1
83 [PROJECT_NUMBER]@cloudbuild.
gserviceaccount.com@cloudbuild.gserviceaccount.com
[PROJECT_NUMBER]@cloudbuild.
gserviceaccount.com
done done 2021/1/10 v1.0.1
37 service microservice done done 2022/8/28 v2.0.0
69 tf validate terraform validate done done 2022/8/28 v2.0.0

増補・改訂

PDFページ 内容 PDF反映 ePub版反映 修正日 version
36 クレデンシャル情報の設定追記 done done 2021/1/10 v1.0.1
8章 リソース名にexampleサフィックスを追加 done done 2021/1/10 v1.0.1
全体 バージョン更新 done done 2022/8/28 v2.0.0
18 scopesをcloud-platformに done done 2022/8/28 v2.0.0
23 key_algorithmを削除 done done 2022/8/28 v2.0.0
45 identity_namespace -> workload_pool done done 2022/8/28 v2.0.0
47 GKE_METADATA_SERVER -> GKE_METADATA done done 2022/8/28 v2.0.0
47 oauth_scopesをcloud-platformに done done 2022/8/28 v2.0.0
59 Artifact Registry GA done done 2022/8/28 v2.0.0
69 GCPのルールセットGA done done 2022/8/28 v2.0.0
71 TFLint初期化にtflint --initを利用 done done 2022/8/28 v2.0.0
72 TFLintデフォルトのルールセットを追加 done done 2022/8/28 v2.0.0
73 Conftestサポート対象を更新 done done 2022/8/28 v2.0.0
83 公式のモジュールテスト状況を追加 done done 2022/8/28 v2.0.0
86 go mod利用方法を更新 done done 2022/8/28 v2.0.0

リソース

技術書典応援祭に関わられたすべてのみなさんお疲れ様でした。

オンライン開催にもかかわらず、お祭感があって執筆後も楽しめました。でもやっぱり、またいつか物理会場で「当日」を迎えたいなぁ。

つぎの出展に備えて振り返りたいと思います。

出展した本の内容についてはこちらにまとめています。

技術書典9で新刊『Google Cloud Platformで学ぶTerraform 〜基礎編〜』を含む5冊+αを出展します #技術書典

技術書典オンラインマーケットでも、BOOTHでも引き続き販売中です!

手にとってくださった方は、こちらのページで変更内容をお知らせしていくのでぜひ見てみてください。

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』の正誤表と増補改訂情報 #技術書典

『KnativeとIngress Gateway』

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』の正誤表と増補改訂情報 #技術書典

『Knativeソースコードリーディング入門』

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Knativeの歩き方』

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda』

『Goで学ぶAWS Lambda』の正誤表と増補改訂情報 #技術書典

振り返り

Good

テーマ設定

現在のプラットフォーム開発の仕事に直結し、確実に読者がいるテーマを設定できたと思います。

すべてはこのツイートから始まりました。

あったら欲しい、けどない。というわけで、ないものは書けばいいですね。

自分が欲しいし、あまり売れなくても社内には確実に読者になる人がたくさんいる。モチベーションが保てました。

執筆のモデル化

執筆のプロセスをだいぶ見直しました。

  • ざっと本と公式ドキュメントを読んで大まかな見取り図(荒い目次のようなもの)を作る
  • 項目ごとにGitHubでissueを作り、GitHubのprojectにする
  • 項目ごとに情報収集・検証する
  • ある程度集まったら目次を作る
  • 「こうすればTerraformを理解できる」を言語化する(今回の本でいう1章)
  • 頭に入っている内容と目次で、前書き(本を書く動機とできるようになってほしいこと)と各章400字くらいずつで全体をざっと書く
  • 1章ずつ書いていく
  • 推敲

本を通じて伝えたい内容(モデル)の仮説を立てて、いったんざっと全体を書いてしまうのを大事にしました。

そこから各章・各項目を検討しながら書き進め、モデルをアップデートしていきます。

全体を書き終えたら、章立て全体がモデルを読者に伝えるのに適切な構成になっているのかを見直します。章の順序を入れ替えたり、不要な情報をコラムとして切り出したりします。

今後も詳しくなりたい技術分野は出続けるでしょう。その過程で本も書くと思います。技術を身につけるための型を身につけ、改善していくのは不可欠です。

つぎの本に大きな影響を受けました。読み直すたびに理解したり実感したりするための経験値は増えているので、毎回違った見え方がします。

エンジニアの知的生産術 ―効率的に学び、整理し、アウトプットする

知的戦闘力を高める 独学の技法

イシューからはじめよ ― 知的生産の「シンプルな本質」

入門編と実践編

今回は「入門編」として出しました。次回の技術書典10で実践編を出します。

元々は1冊の本として出す予定でした。もうちょっと頑張ったら書き切れたかもしれません。しかし、技術書典開始ギリギリまで書いた結果初版のクオリティが低くなった前著の反省を踏まえ、立ち止まることにしました。

期限が決まっている中で、時間を闇雲に投下してなんとか間に合わせるやり方は極力避けたいです。質は下げたくありません。スコープを調整するというのを覚えました。

ゆとり

最終的には、今までで一番気持ちに余裕がありました。追い込みの3週間くらいは自粛したものの、それまではゼルダもしてました。

追い込みのタイミングで作りたいサービスができ、原稿の合間に開発もしました。

締め切りのあるものでも、OKRに詰め込み過ぎず、自分を許してこれくらいの気持ちの余裕は持ち続けたいです。

総じて新しくChallengeすることは増やさずに、Goodで触れたモデル化に継続して取り組もうと思います。

妻の本のレビュー

妻も前回の技術書典で書いた本の改訂版を出しました。

JavaScriptとSEO(PDF、ePubセット) #技術書典

前回の反省に「妻の作品のサポート」を挙げたので、今回はレビューする時間を設けました。

Challenge

時間配分

技術書典は7月にあるものとして4〜6月のOKRを組み立てていました。結果的に9月になったものの、7月にあったら新刊アウトでした。

4〜6月のOKRはこれ。

2020年1〜3月ふりかえり 〜HCLエンジニアとしても闘争〜

6月時点でGCPもTerraformもどっちつかずだったので、7月に技術書典がないのがわかったタイミングでGCPのキャッチアップに専念することにしました。GCPを学ばずして、GCPで学ぶTerraform本の見通しが全然立てられなかったためです。

8〜9月を余裕をもって過ごしたようで、実は仕掛りのOKRがスライドして達成できたことが減っただけという見方もできます。

ただ、わからないものはわかりません。自分をさらに律する施策を考えるのでなく、OKRは詰め込みすぎないように〜くらいにしておこうと思います。

紙本

今回も前回も紙本を準備していません。印刷費用がかからない分利益は増えるし、在庫を抱える心配もありません。

特に要望もないものの、次回はTerraform本の基礎編と実践編を合わせた紙本の印刷も検討しようと思います。

僕自身が基本的に紙本を買わないので、物理会場で開催されるまではあまり乗り気にならないかもしれません。

次回作について

技術書典10では、予告通り『Google Cloud Platformで学ぶTerraform』の実践編を書きます。

基礎編では個々のリソースの書き方やステート管理、モジュールの基礎について書きました。実践編では、複数のリソースからなる典型的なGCPのアーキテクチャやモジュールをいかにTerraform化するかについて書きます。

ロードバランサーとインスタンスグループ、GKE、プロジェクトのテンプレート、ログ管理などが題材です。ログ管理やその活用は、Professional Data Engineerの内容を理解した上で取り組むのがよいかなぁと思っています。

さらに、そうして出来上がったものをいかに継続的に変更していくかについても触れます。

CI/CD、リント、テスト、サービスアカウント管理などが題材です。

もし技術書典9でTerraform本を書き終えていたら、Cloud Runのユースケース集的な本を書こうと思っていました。これはサーバーレスなカンファレンスがあれば、そこにワークショップのプロポーザルを出したり、それが実現しなくてもZennでチュートリアルを出したりできないか検討してみます。技術書典11の時点では何に関心があるか読めません。

数字の整理

売上

技術書典オンラインマーケット

9/12〜9/30分

  • Google Cloud Platformで学ぶTerraform 〜基礎編〜: 70冊
  • JavaScriptとSEO: 16冊
  • KnativeとIngress Gateway 第2版: 4冊
  • Knativeソースコードリーディング入門: 2冊
  • Knativeの歩き方 第2版: 2冊
  • Goで学ぶAWS Lambda 第2版: 5冊

500円 × 16冊 + 1000円 × 83冊 = 91000円

BOOTH

9/5〜9/30分

  • Google Cloud Platformで学ぶTerraform 〜基礎編〜: 37冊
  • JavaScriptとSEO: 0冊
  • KnativeとIngress Gateway 第2版: 5冊
  • Knativeソースコードリーディング入門: 1冊
  • Knativeの歩き方 第2版: 2冊
  • Goで学ぶAWS Lambda 第2版: 4冊

1000円 × 49冊 = 49,000円

原価

  • 技術書典参加費: なし
  • BOOTH手数料: 3,734円
  • 受験したり、本買ったりした気がします

過去分

フライングしてこれを購入しました!ありがとうございます!!

あとは実践編で前提となるProfessional Data Engineerの受験費用と、『Official Google Cloud Certified Professional Data Engineer Study Guide』の購入費用に充てようと思います。

2020年9月12日(土)〜22日(火)に開催される技術書典9で5冊出展します!

カエルと空というサークルで、このページから出展しているのでぜひのぞいて行ってください!

カエルと空のサークルページ

出展する本を紹介します。

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』

僕は、マイクロサービスを開発するためのプラットフォームを開発・運用するチームで2020年から働き始めました。それ以前の仕事は、バックエンドエンジニアとしてのマイクロサービス開発です。プラットフォームチームが開発したTerraformモジュールに設定を渡し、GCPやKubernetesのリソースを作成していました。

いざそのモジュールを作成したり、エラーのデバッグをする立場になってみると何もわかりません。つぎのような疑問がわきました。
・モジュールとは何か
・複数のリソースから構成されるアーキテクチャはどう組み立てるのか
・なぜ Terraform の状態と実際のクラウドリソースの状態はずれるのか

Terraformの概念や個々のリソースの使い方、GCPを利用したサンプルのモジュールはたくさんあります。Terraformに関する書籍もあります。
しかし、Terraformの具体的な説明に登場するクラウドは、ほとんどがAWSです。クラウドアーキテクチャの設計経験も多くはない僕にとって、AWSベースで説明された内容をGCPに置き換えながら学ぶのはとても大変でした。そこで、この本を書くことに決めました。

AWSからGCPへの翻訳をせず、クラウドの設計やTerraformをGCPを通じて学べる本。半年前の僕が欲しかった本です。この本を通じ、Terraform をより身近に感じる人が増えたら幸いです。

正誤表・増補改訂情報はこちらのページで公開しています。

『Google Cloud Platformで学ぶTerraform 〜基礎編〜』の正誤表と増補改訂情報 #技術書典

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/2354817

登場するほとんどのサンプルコードも、GitHub上で公開しています。

toshi0607/Learning-Terraform-with-GCP

目次です。

第1章 はじめに

第2章 Terraform の概要
2.1 Terraformの意義
2.2 Terraformのアーキテクチャ
2.3 まとめ

第3章 環境構築
3.1 GCPアカウント
3.2 GCPプロジェクト
3.3 GoogleCloudSDK
3.4 tfenv
3.5 vscode-terraform
3.6 まとめ

第4章 リソースとterraformコマンド
4.1 リソース
4.2 terraformコマンド
 init
 plan
 apply
 destroy
4.3 ライフサイクル
 create_before_destroy
 prevent_destroy
 ignore_changes
4.4 まとめ

第5章 Configurationの書き方
5.1 関数
 join
 length
 contains
 values
 file
 その他の関数
5.2 変数
 variable
 output
 locals
 データソース
5.3 ループ
 count
 for_each
 for
 dynamic
5.4 条件式
5.5 バージョンの明示
5.6 モジュール
 子モジュールの定義
 ルートモジュールの定義
5.7 まとめ

第6章 ステート管理
6.1 ステートの構造
6.2 リモートバックエンド
6.3 管理単位
 ワークスペース
 バックエンド
6.4 参照
6.5 ズレと直し方
 定義あり、ステートあり、リソースあり
 定義あり、ステートあり、リソースなし
 定義あり、ステートなし、リソースあり
 定義あり、ステートなし、リソースなし
 定義なし、ステートあり、リソースあり
 定義なし、ステートあり、リソースなし
 定義なし、ステートなし、リソースあり
 定義なし、ステートなし、リソースなし
6.6 リファクタリング
6.7 まとめ

あとがき

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜 第2版』

初版から大幅に加筆した第2版です!

2019年末同僚に「なぜIstio(VirtualService)を使わずにKnativeはトラフィックスプリッティングのような機能を実現できるのか」と質問されて答えられなかったのがきっかけで調べることにしました。

Knativeは当初Ingress GatewayにIstioを採用(依存)しましたが、後にGlooをはじめ様々なコンポーネントで代替可能になりました。代替できる事実は知りつつも、なぜ代替できるのか、代替できるとはどういうことなのかを調べることはありませんでした。

しかし、「プラットフォームを開発・運用する」ことへの関心が高まり、(何層もある)Knativeより下のレイヤーを学びたい気持ちが強くなりました。本書はその一環です。Knative = Kubernetes Networkingとも説明されるKnativeのIngress Gateway周りの調査はKubernetesが提供しているService、Ingressの特徴や課題、そもそもロードバランサーとは何かのか、サービスメッシュやEnvoyとはどういう関係があるのか、といったネットワーク関連の入門にもうってつけでした。

「KnativeはなぜIngress Gatewayを交換できるのか?」という問いに答えることは、Envoyの設定をどう表現し、どう配信するかというデザインパターンを見い出すことに繋がります。

90ページ弱の自由研究に付き合っていただけたら幸いです!

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/1882118

目次です。

第1章 Knative
1.1 概要
1.2 Serving
1.3 Eventing
1.4 まとめ

第2章 Gateway
2.1 ServiceとIngress
2.2 Gateway と Service Mesh
 [コラム]APIGatewayとサービスメッシュの違い
2.3 Envoy とコントロールプレーン
2.4 コントロールプレーンの実装例(Istio)
2.5 まとめ
 [コラム]IngressAPIの進化
 [コラム] L4 から L7 ロードバランサーへ

第3章 Istio
3.1 概要
3.2 KnativeのCRD
3.3 Knativeのコンポーネント
3.4 IstioのCRD
3.5 Istioのコンポーネント
3.6 localgateway
3.7 Gateway
3.8 まとめ

第4章 Ambassador
4.1 概要
4.2 Knativeのコンポーネント
4.3 Ambassadorのコンポーネント
4.4 AmbassadorとEnvoy
4.5 まとめ

第5章 Contour
5.1 概要
5.2 Knativeのコンポーネント
5.3 Contourのコンポーネント
5.4 まとめ

第6章 Kourier
6.1 概要
6.2 Knativeのコンポーネント
6.3 Kourierのコンポーネント
6.4 まとめ
 [コラム] Kourier の活用事例

第7章 Gloo
7.1 概要
7.2 Knativeのコンポーネント
7.3 Glooのコンポーネント
7.4 まとめ
 [コラム]Envoyとgo-control-planeの今後

第8章 まとめ
8.1 Gateway
8.2 Ambassador
8.3 Contour
8.4 Gloo
8.5 Kourier
8.6 Istio
8.7 最後に

Appendix

『Knativeの歩き方 KubernetesからServerlessを訪ねて 第2版』

こちらはKnativeのコンポーネントの説明やユースケースを中心に説明した本です。実際にKnativeが利用されたプロダクトの図解も掲載しています。

こちらもすでにBOOTHで電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1309468

正誤表や増補改訂情報ページはこちらです。

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

目次です。

第1章 Knativeの概要
1.1 Knativeの構成要素
1.2 Serving
1.3 Build
1.4 Eventing

第2章 Kubernetes環境の準備

第3章 KubernetesとKnativeの関係
3.1 Kubernetesの基本的思想
3.2 Kubernetesのオートスケール
3.3 Kubernetesの拡張機能

第4章 Knative Serving
4.1 Knativeのインストール
4.1.1 Istioの設定
4.1.2 Knativeの設定
4.2 Configuration
4.3 Revison
4.4 Routes
4.5 Service
4.6 オートスケールの仕組み

第5章 Knative Build
5.1 Build
5.2 BuildTemplate
5.3 Servingと組み合わせる

第6章 Knative Eventing
6.1 Sources
6.2 BrokerとTrigger
6.3 ChannelとSubscription

第7章 Knative のユースケース
7.1 FaaS プラットフォームの構築
7.1.1 イベントやリクエストを Function に渡すサーバー
7.1.2 サーバーとFunctionのパッケージング
7.1.3 CLI
7.2 イベント pull 型の FaaS 〜Knative Lambda Runtimes の利用例〜
7.2.1 AWS Lambda の Function(Go)
7.2.2 AWSLambdaとRuntimeInterface
7.2.3 knative-lambda-runtime
7.2.4 triggermesh/aws-custom-runtime
7.2.5 bootstrap
7.2.6 Tekton で生成するコンテナイメージ
7.3 イベント push 型の FaaS 〜OpenFaaS の Watchdog の利用例〜
7.3.1 WatchdogによるFunction制御
7.3.2 WatchdogとFunction同梱のDockerfile
KnativeのCLI

『Knativeソースコードリーディング入門 Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー』

Knativeの仕組みをより深く追おうとするときに、Kubernetesのカスタムリソースやカスタムコントローラーの枠組みを知っておくと追いやすくなります。本書では、Knativeはもちろん、Kubernetes自体の様々なソースコードを追いながらそれを解説しています。

以前mercari.goで発表した内容をより詳細に紹介したものです。

目次です。

第1章 KnativeとKuberentesの関係
1.1 Kubernetesの概要
1.2 Kubernetesの拡張方法
1.3 Knative の概要

第2章 KubernetesのAPI
2.1 APIサーバーの責務
2.2 Kind
2.3 APIグループ
2.4 バージョン
2.5 リソースとサブリソース
2.6 APIリクエストの処理フロー

第3章 APIクライアント
3.1 client-go
3.2 Object
3.2.1 TypeMeta
3.2.2 ObjectMeta
3.2.3 Spec
3.2.4 Status
3.3 ClientSet
3.4 Informer
3.5 APIMachinery
3.5.1 Scheme
3.5.2 RESTMapper

第4章 カスタムリソース
4.1 CR
4.2 CRD
4.2.1 categories
4.2.2 shortNames
4.2.3 subresources
4.2.4 additionalPrinterColumns

引き続き電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1568456

正誤表や増補改訂情報ページはこちらです。

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda 第2版』

技術書典5で出展したAWS Lambdaのユースケースに関する本も引き続き。

AWS Lambda周辺のエコシステムはこの本の最終更新後に大きな変更がありました。Amazon RDS Proxy with AWS Lambda、AWS Lambda VPC接続の改善、Provisioned Concurrency for Lambda Functionsは本の中でも触れられている課題の決定的な解決策です。少し本の内容が古くなってしまったものの、AWS Lambda(とSAM)をGo言語で学ぶ入門の1つとしては依然として有効ではないかと思います。

お陰様で商業版を出版したり、こちらもすでに第2版がBOOTHで購入できる状態になっています。

https://booth.pm/ja/items/1034858

GoとSAMで学ぶAWS Lambda

目次です。

第1章 環境構築
1.1 anyenv
1.2 anyenvupdate
1.3 goenvとGo
1.4 pyenvとPython
1.5 aws-cli
1.6 aws-sam-cli
インストールトラブルシューティング
1.7 saw
1.8 direnv
1.9 dep
1.10 gig

第2章 S3 イベントの活用
2.1 概要
2.2 S3
2.3 シーケンス
2.4 フォルダ構成
2.5 ソースコード
2.6 テスト
2.7 デプロイ
2.8 削除

第3章 SNS と SQS によるファンアウト
3.1 概要
3.2 SQS
3.3 SNS
3.4 シーケンス
3.5 フォルダ構成
3.6 ソースコード
3.7 テスト
3.8 デプロイ
3.9 削除
CloudFormationトラブルシューティング

第4章 API Gateway と DynamoDB を使った URL 短縮サービス
4.1 概要
4.2 APIGateway
4.3 DynamoDB
4.4 シーケンス
4.5 フォルダ構成
4.6 ソースコード
4.7 テスト
4.8 デプロイ
4.9 削除
DynamoDBのテーブル定義変更
LambdaとAPIGatewayのローカル実行

このページでは『Google Cloud Platformで学ぶTerraform 〜基礎編〜 第2版』の正誤表と増補・改訂をお知らせします。

この本を手にとってくださった方がちょっとでも選んでよかったと思う本に育てていきたいので、章の追加なども楽しみにしていてください。

増補・改訂版は購入方法に応じて異なります。

  • ダウンロードカード: Googleドライブ。バージョン毎にフォルダが分かれています。
  • 技術書典のサイト: 技術書典サイトのマイページ。常に最新版をアップロードしています。
  • BOOTH: BOOTH購入ページの注文詳細画面。常に最新版をアップロードしています。

引き続きフィードバックお待ちしてます!@toshi0607

正誤表

PDFページ PDF反映 ePub版反映 修正日 version

増補・改訂

PDFページ 内容 PDF反映 ePub版反映 修正日 version
全体 バージョン更新 done done 2022/8/28 v2.0.0
16 ロックファイル追加 done done 2022/8/28 v2.0.0
71 etcdサポート終了 done done 2022/8/28 v2.0.0
86 GCE作成コマンド化 done done 2022/8/28 v2.0.0
90 moved追加 done done 2022/8/28 v2.0.0
96 tgmigrateコラム追加 done done 2022/8/28 v2.0.0

リソース

技術書典応援祭に関わられたすべてのみなさんお疲れ様でした。

特に運営のみなさん、想定外の事態にも関わらず常にベストを考え、最後までやり遂げていただき頭が上がりません。本当にお疲れ様でした。

つぎの出展に備えて振り返りたいと思います。

出展した本の内容についてはこちらにまとめています。

技術書典 応援祭で新刊『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』を含む4冊を出展します #技術書典

『JavaScriptとSEO』はBoothでの販売を技術書典応援祭終了後に開始しました。

他はBoothでも引き続き販売しています!

手にとってくださった方はこちらのページで変更内容をお知らせしていくのでぜひ見てみてください。

『KnativeとIngress Gateway』

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』の正誤表と増補改訂情報 #技術書典

『Knativeソースコードリーディング入門』

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Knativeの歩き方』

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda』

『Goで学ぶAWS Lambda』の正誤表と増補改訂情報 #技術書典

振り返り

Good

テーマ設定

今回のテーマはKnativeにおいてIstioに代替可能なGatewayのコンポーネントを比較するというものでした。

このテーマの根本にあったのは、昨年同僚から受けた「KnativeはIstioのVirtualServiceを使わずにどうやってトラフィック制御するのか」という問いに答えることです。当時は答えられませんでした。

前回の技術書典の振り返りでもつぎのように書いていました。

そもそもIstio(をはじめゲートウェイコンポーネントとして依存するもの)やKubernetes自体の知見なしに存在するプラットフォームではないのでその観点から自分の知識・経験は強化して臨む必要もあります。

締切がある中、1回の執筆で調査、理解できることには限りがあります。しかし、そこで新たに生じた課題や疑問を放っておかずに継続して向き合い続けられたのはよかったなぁと感じました。

回を追うごとに想定読者が減っていっている(Knative概論 -超えられない壁-> Knativeソースコードリーディング -> KnativeのIngress Gateway)気がしますが、より夏休みの自由研究感が増していってて愛情は深まっています。

Istioのキャッチアップ

最近、マイクロサービスを開発・運用するチームからマイクロサービスのプラットフォームを開発・運用するチームに移り、2月頃からIstio周りの仕事をしていました。

今回のテーマはIstioに代替可能なコンポーネントの比較ですが、そもそもIstioを学んだことがありませんでした。さらに、3月にはマイクロサービス開発者向けにIstioのワークショップを実施する必要があったので、一定の水準で高速キャッチアップする必要がありました。

この本ではそもそもKnativeがどうIstioを利用するのか、なぜKubernetesのServiceやIngressではダメなのかから考える必要があったため、Istioのキャッチアップは必須でした。執筆過程で本業にダイレクトに関係ある部分に取り組めたのは精神衛生上もよかったです。

また、チームの20%ルールのテーマにこの本の執筆を掲げ、調査内容をチームのGitHub issueに英語でまとめることにも取り組みました。

世には出ないものの、途中経過をアウトプットしながら進められるのもまた精神衛生上良いです。

経験上アウトプットよりもインプットに数倍時間がかかります。いざ書き始める頃には調査した内容を忘れることも多々あったので、このやり方は進捗にとってもプラスでした。

いいまとまりで発信しつつ、最終的に体裁を整え本にするくらいが理想かなぁとは思っています。

キャッチアップには特につぎの本や講座が効果的でした。

Manning社のアーリーアクセスプログラムは、本の更新が通知されるので好きです。出版はこういう形式が理想だなぁと思っています。

本も好きなときに読めていいのですが、動画はプロダクト操作のデモががっつり見られて理解が定着しやすく感じます。特にIstioの場合はKialiなどの可視化ツールとセットで解説されるのでより効果的でした。

執筆仲間

今回とうとう妻が『JavaScriptとSEO』で執筆デビューしました!

これまで、僕の書く本の原稿以外すべて(表紙絵、サークルカット、校閲、入稿、ダウンロードカードなど)を支えてもらっていたのですが、共に〆切に追われる仲間になりました。

締切直前はやや怖かったですが、とにかく嬉しいです!!

Challenge

時間

もし開催スタートが元のままであれば間に合っていませんでした。毎度精神が厳しいです。

何にチャレンジすれば緩和されるのかはよくわからないので、感想として書き残しておくことにします。

フォーマット

毎回TechBoosterさんのReVIEW-Templateを使わせていただいていて助かっています。

けど今度はカウプランさんのRe:VIEW Starterを試そうと思っています。

ReVIEW-Templateに不満があったわけではなく、妻が試していていい感じの見栄えになっていたためです。

コードをいい感じに折り返してくれてる雰囲気なのもポイントです。

妻の作品のサポート

今回はしっかりレビューする時間をとれませんでした。

妻はフロントエンドエンジニアということで、テーマもフロントエンド関連です。僕は普段馴染みがありません。かといってフロントエンドも実装していた時期もあるので何もわからないこともありません。

それゆえに、この部分をもっと説明してほしいだったり、何回か執筆しているだけに構成で気になる部分だったり、一緒に良くしていける部分が少なからずあります。

改訂版の印刷や、次回の新作でサポートできたらなぁと思います。

継続的改善

本を印刷するのが技術書典9が初ということで、『KnativeとIngress Gateway』はがっつり改定予定です。普段Knativeを運用している方にもインスピレーションの湧くコメントをすでにたくさんいただいています。

この辺りが増補改定される予定です。お楽しみに!

すでに電子版でご購入いただいている方はもちろん読んでいただけるようになります。

次回作について

技術書典9ではGCPでTerraformに入門するか実践するかの本を書きたいと思っています。

理由はこんな感じです。

  • 今業務ドメイン的にどちらも時間を投資して学ぶ価値がある
  • 社内にGCPもTerraformも強い人がたくさんいる(のでレビューされたい)
  • Lambda本以来のポップでキャッチーなテーマ(議論の余地あり)にしたい

今回もとりあえずGCPもTerraformも何もわからん状態なので、Professional Cloud Architectをとるところから始めます。

数字の整理

## 売上

サイト

3/7〜4/5分

  • JavaScriptとSEO: 41冊
  • KnativeとIngress Gateway: 22冊
  • Knativeソースコードリーディング入門: 7冊
  • Knativeの歩き方 第2版: 5冊
  • Goで学ぶAWS Lambda 第2版: 9冊

500円 × 41冊 + 1000円 × 43冊 = 63500円

Booth

3/1〜4/5分

  • JavaScriptとSEO: 期間中は販売していませんでした
  • KnativeとIngress Gateway: 19冊
  • Knativeソースコードリーディング入門: 2冊
  • Knativeの歩き方 第2版: 5冊
  • Goで学ぶAWS Lambda 第2版: 11冊

1000円 × 37冊 = 37,000円

原価

  • 参加費: 7480円

過去分

妻はすでに売上金であつ森を購入しています。

そして家の装備をパワーアップしました!家庭内燻製を実現し、低温調理をパワーアップさせます。

2020年3月7日(土)から開催される技術書典 応援祭で4冊出展します!

『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』

今回の新刊はKnativeのIngress Gatewayについてです。3回連続でKnative関連のお話になりました。

昨年末同僚に「なぜIstio(VirtualService)を使わずにKnativeはトラフィックスプリッティングのような機能を実現できるのか」と質問されて答えられなかったのがきっかけで調べることにしました。

Knativeは当初Ingress GatewayにIstioを採用(依存)しましたが、後にGlooをはじめ様々なコンポーネントで代替可能になりました。代替できる事実は知りつつも、なぜ代替できるのか、代替できるとはどういうことなのかを調べることはありませんでした。

しかし、「プラットフォームを開発・運用する」ことへの関心が高まり、(何層もある)Knativeより下のレイヤーを学びたい気持ちが強くなりました。本書はその一環です。Knative = Kubernetes Networkingとも説明されるKnativeのIngress Gateway周りの調査はKubernetesが提供しているService、Ingressの特徴や課題、そもそもロードバランサーとは何かのか、サービスメッシュやEnvoyとはどういう関係があるのか、といったネットワーク関連の入門にもうってつけでした。

「KnativeはなぜIngress Gatewayを交換できるのか?」という問いに答えることは、Envoyの設定をどう表現し、どう配信するかというデザインパターンを見い出すことに繋がります。

80ページ弱の自由研究に付き合っていただけたら幸いです!

すでにBOOTHで電子版をご購入いただける状態になっています。

https://toshi0607.booth.pm/items/1882118

7月の技術書典9で紙本を印刷するのを目指し、フィードバックを受けてブラッシュアップしていく所存です。

目次です。

第1章 Knative
1.1 概要
1.2 Serving
1.3 Eventing
1.4 まとめ

第2章 Gateway
2.1 ServiceとIngress
2.2 Gateway と Service Mesh
2.3 Envoy とコントロールプレーン
2.4 コントロールプレーンの実装例(Istio)
2.5 まとめ

第3章 Istio
3.1 概要
3.2 KnativeのCRD
3.3 Knativeのコンポーネント
3.4 IstioのCRD
3.5 Istioのコンポーネント
3.6 localgateway
3.7 Gateway
3.8 まとめ

第4章 Ambassador
4.1 概要
4.2 Knativeのコンポーネント
4.3 Ambassadorのコンポーネント
4.4 AmbassadorとEnvoy
4.5 まとめ

第5章 Contour
5.1 概要
5.2 Knativeのコンポーネント
5.3 Contourのコンポーネント
5.4 まとめ

第6章 Kourier
6.1 概要
6.2 Knativeのコンポーネント
6.3 Kourierのコンポーネント
6.4 まとめ

第7章 Gloo
7.1 概要
7.2 Knativeのコンポーネント
7.3 Glooのコンポーネント
7.4 まとめ

第8章 まとめ
8.1 Gateway
8.2 Ambassador
8.3 Contour
8.4 Gloo
8.5 Kourier
8.6 Istio
8.7 最後に

『Knativeの歩き方 KubernetesからServerlessを訪ねて』

こちらはKnativeのコンポーネントの説明やユースケースを中心に説明した本です。実際にKnativeが利用されたプロダクトの図解も掲載しています。

こちらもすでにBOOTHで電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1309468

正誤表や増補改訂情報ページはこちらです。

『Knativeの歩き方 〜KubernetesからServerlessを訪ねて〜』の正誤表と増補改訂情報 #技術書典

目次です。

第1章 Knativeの概要
1.1 Knativeの構成要素
1.2 Serving
1.3 Build
1.4 Eventing

第2章 Kubernetes環境の準備

第3章 KubernetesとKnativeの関係
3.1 Kubernetesの基本的思想
3.2 Kubernetesのオートスケール
3.3 Kubernetesの拡張機能

第4章 Knative Serving
4.1 Knativeのインストール
4.1.1 Istioの設定
4.1.2 Knativeの設定
4.2 Configuration
4.3 Revison
4.4 Routes
4.5 Service
4.6 オートスケールの仕組み

第5章 Knative Build
5.1 Build
5.2 BuildTemplate
5.3 Servingと組み合わせる

第6章 Knative Eventing
6.1 Sources
6.2 BrokerとTrigger
6.3 ChannelとSubscription

第7章 Knative のユースケース
7.1 FaaS プラットフォームの構築
7.1.1 イベントやリクエストを Function に渡すサーバー
7.1.2 サーバーとFunctionのパッケージング
7.1.3 CLI
7.2 イベント pull 型の FaaS 〜Knative Lambda Runtimes の利用例〜
7.2.1 AWS Lambda の Function(Go)
7.2.2 AWSLambdaとRuntimeInterface
7.2.3 knative-lambda-runtime
7.2.4 triggermesh/aws-custom-runtime
7.2.5 bootstrap
7.2.6 Tekton で生成するコンテナイメージ
7.3 イベント push 型の FaaS 〜OpenFaaS の Watchdog の利用例〜
7.3.1 WatchdogによるFunction制御
7.3.2 WatchdogとFunction同梱のDockerfile
KnativeのCLI

『Knativeソースコードリーディング入門 Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー』

Knativeの仕組みをより深く追おうとするときに、Kubernetesのカスタムリソースやカスタムコントローラーの枠組みを知っておくと追いやすくなります。本書では、Knativeはもちろん、Kubernetes自体の様々なソースコードを追いながらそれを解説しています。

以前mercari.goで発表した内容をより詳細に紹介したものです。

目次です。

第1章 KnativeとKuberentesの関係
1.1 Kubernetesの概要
1.2 Kubernetesの拡張方法
1.3 Knative の概要

第2章 KubernetesのAPI
2.1 APIサーバーの責務
2.2 Kind
2.3 APIグループ
2.4 バージョン
2.5 リソースとサブリソース
2.6 APIリクエストの処理フロー

第3章 APIクライアント
3.1 client-go
3.2 Object
3.2.1 TypeMeta
3.2.2 ObjectMeta
3.2.3 Spec
3.2.4 Status
3.3 ClientSet
3.4 Informer
3.5 APIMachinery
3.5.1 Scheme
3.5.2 RESTMapper

第4章 カスタムリソース
4.1 CR
4.2 CRD
4.2.1 categories
4.2.2 shortNames
4.2.3 subresources
4.2.4 additionalPrinterColumns

引き続き電子版、紙本 + 電子版がBOOTHで購入できる状態になっています。

https://toshi0607.booth.pm/items/1568456

正誤表や増補改訂情報ページはこちらです。

『Knativeソースコードリーディング入門 〜Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラー〜』の正誤表と増補改訂情報 #技術書典

『Goで学ぶAWS Lambda 第2版』

技術書典5で出展したAWS Lambdaのユースケースに関する本も引き続き。

AWS Lambda周辺のエコシステムはこの本の最終更新後に大きな変更がありました。Amazon RDS Proxy with AWS Lambda、AWS Lambda VPC接続の改善、Provisioned Concurrency for Lambda Functionsは本の中でも触れられている課題の決定的な解決策です。少し本の内容が古くなってしまったものの、AWS Lambda(とSAM)をGo言語で学ぶ入門の1つとしては依然として有効ではないかと思います。

お陰様で商業版を出版したり、こちらもすでに第2版がBOOTHで購入できる状態になっています。

https://booth.pm/ja/items/1034858

GoとSAMで学ぶAWS Lambda

目次です。

第1章 環境構築
1.1 anyenv
1.2 anyenvupdate
1.3 goenvとGo
1.4 pyenvとPython
1.5 aws-cli
1.6 aws-sam-cli
インストールトラブルシューティング
1.7 saw
1.8 direnv
1.9 dep
1.10 gig

第2章 S3 イベントの活用
2.1 概要
2.2 S3
2.3 シーケンス
2.4 フォルダ構成
2.5 ソースコード
2.6 テスト
2.7 デプロイ
2.8 削除

第3章 SNS と SQS によるファンアウト
3.1 概要
3.2 SQS
3.3 SNS
3.4 シーケンス
3.5 フォルダ構成
3.6 ソースコード
3.7 テスト
3.8 デプロイ
3.9 削除
CloudFormationトラブルシューティング

第4章 API Gateway と DynamoDB を使った URL 短縮サービス
4.1 概要
4.2 APIGateway
4.3 DynamoDB
4.4 シーケンス
4.5 フォルダ構成
4.6 ソースコード
4.7 テスト
4.8 デプロイ
4.9 削除
DynamoDBのテーブル定義変更
LambdaとAPIGatewayのローカル実行

今後

回を追うごとにニッチな感じになってきた気がします。自分の興味のある分野の自由研究としてとても面白くはあるものの、技術書典9はポップでキャッチーなやつ書こうかなと思っています。

このページでは『KnativeとIngress Gateway 〜Ambassador、Contour、Gloo、Kourier、Istioの比較〜』の正誤表と増補・改訂をお知らせします。

この本を手にとってくださった方がちょっとでも選んでよかったと思う本に育てていきたいので、章の追加なども楽しみにしていてください。

増補・改訂版は購入方法に応じて異なります。

  • ダウンロードカード: Googleドライブ。バージョン毎にフォルダが分かれています。
  • 技術書典のサイト: 技術書典サイトのマイページ。常に最新版をアップロードしています。
  • Booth: Booth購入ページの注文詳細画面。常に最新版をアップロードしています。

引き続きフィードバックお待ちしてます!@toshi0607

正誤表

PDFページ PDF反映 ePub版反映 MOBI版反映 修正日 version

増補・改訂

PDFページ 内容 PDF反映 ePub版反映 MOBI版反映 修正日 version
全般 Knative v0.14へのバージョンアップ done done done 2020/5/12 v2.0.0
全般 プロダクトのバージョン明記 done done done 2020/5/12 v2.0.0
全般 インストールされるコンポーネントの一覧追加 done done done 2020/5/12 v2.0.0
全般 CNCFlandscape上の位置付け追記 done done done 2020/5/12 v2.0.0
全般 カウプランさんのRe:VIEW Starterへの移行 done done done 2020/5/12 v2.0.0
8 API Gatewayとサービスメッシュコラム追加 done done done 2020/5/12 v2.0.0
21 Ingress APIの機能拡張コラム追加 done done done 2020/5/12 v2.0.0
21 L4からL7 LB移行のコラム追加 done done done 2020/5/12 v2.0.0
35 Ambassadorの提供機能一覧追加 done done done 2020/5/12 v2.0.0
39 AmbassadorのIR関連記述の詳細化 done done done 2020/5/12 v2.0.0
55 KourierのKnativeリポジトリでのリリース追記 done done done 2020/5/12 v2.0.0
60 Kourierの活用事例コラム追加 done done done 2020/5/12 v2.0.0
80 Envoyとgo-control-planeの未来コラム追加 done done done 2020/5/12 v2.0.0
89 所属の変更 done done done 2020/5/12 v2.0.0

リソース