📑

Effective Microservice 開発ガイドの目次構成(案)@20240211

2024/02/11に公開

株式会社RE-XのKaz(@kaz-tk)です

本シリーズの背景
Effective Microservice 開発ガイドの執筆に向けて
 https://zenn.dev/rexkk/articles/97308550b77d40

過去書籍の執筆をした時の経験から、まずは、目次とターゲット読者を決める必要があります。
ターゲットは、現時点における中級者の方を狙っていこうと考えています。

と言うのは、初心者をターゲットにするのは常套手段なのですが、Kubernetesを活用した開発ガイドであるため、その時点で全体で見れば、中級者と言う扱いになるかと考えています。
逆に中級者の方向けの書籍として刺されば、初心者の方にも勧めていただけるのでは?と考えてそのようにしたいと考えています。

中級者向けにする理由としては、他にもあって、開発をするというのは非常に大変で、
今のご時世としては、だいぶ世の中に便利なソフトウェアがあふれています。
これらをすべて説明しきるというのは非常に大変なことです。
単一のツールであれば、割と簡単に使えるのですが、その先や商用NWへの適用まで考慮を行うと、とたんに工数が必要になります。
私からするともはや、ああこのパターンね、となるのですが、よくよく思い直してみると、Javaのデザインパターン然り、抽象的な物はしっくりくるまで非常に時間がかかります。

インフラデザインパターンと言うおすすめの書籍もあるのですが、これだけでも127パターンあると言われています。
https://amzn.to/3SUrety

そう考えると、おそらく、本書籍も多数選択肢あるうちのいくつかのパターンしか抑える事は困難ですし、全ての理由を説明するのは不可能かと考えています。

従って、本書籍ではまず筆者が提唱する組み合わせパターンを紹介し、それに賛同いただける方に刺さればよい、と言うスタンスで進めさせていただき、賛同者が増えた際に改めて初心者向けの書籍化なども検討するという流れで考えさせていただこうと思っています。


さて、それはさておき目次案ですが、現時点では以下の通りで考えています。

はじめに
第一章:大規模サービスとマイクロサービス
第二章:開発環境の構築

  • クラウドIDEとローカルPCでの開発
    • 開発者となるあなたへ
    • 管理者のお仕事
      • 筆者が行ったことと、今後プロジェクトの中で本書を利用されるあなたへ
  • クラウドIDE:開発をすぐに始めなければいけない時に
  • ローカルPC:セキュアな環境でじっくりやる時に

第三章:開発効率を意識した開発環境

  • マルチレポジトリ管理ツールと、デバッグ手法
    • マルチレポジトリ管理ツール:tsrc
    • ローカルCI/CD:skaffold
  • ローカルKubernetes クラスタで基本機能のデプロイとデバッグ
    • Kubernetes in Docker:kind
    • マイクロサービスへのアクセス:socks
  • 便利なマイクロサービスのラッパー
    • HelmとKubevela

第四章:クラウド管理の効率化

  • クラウドリソースのプロビジョニング
    • Kubevela/Helmを利用したパッケージデプロイ:Kubevela/Fluxcd・ArgoCD/Helm
    • Kubernetesでクラウドリソースを管理:CrossPlane
  • シークレット管理の為のExternal-SecretとCrossPlane
  • サービスの公開:Ingressと、External-DNS
  • コスト可視化:CloudForet
  • スキーママイグレーション:bytebase

第五章:マイクロサービスの開発

  • フロントエンド開発
  • バックエンド開発
    • REST API
    • メッセージバスアーキテクチャ
      • Kafkaを利用したアプリケーション
      • EventSourcing

第六章:これは使って当たりまえ?クラウドネイティブアーキテクチャの基本機能

  • 認証認可:OpenIDConnect
    • KeyCloakを活用したOIDC認証認可
    • FederationやSCIMを使ったSaaS化

第七章:本当に使えるCI/CD

  • リリース管理と、CI/CDの関係性

  • マイクロサービス向けのCI/CDとは?

    • プロジェクト横断、ゲーティングとは?クロスプロジェクトゲーティング:Zuul CI
    • 単一プロジェクト向けのCIとは?
  • リリース戦略

    • インフラが補助してくれるリリース手法
      • BlueGreenDeployment
      • CanaryRelease
    • ソフトウェアの考慮を行わなければいけないパターン
      • APIデザイン、トピックデザイン
        第八章:Day-2オペレーション
  • ソフトウェア開発と運用オペレーション

  • よりソフトウェアの中を理解するために必要なこと

    • OpenTelemetryの活用
      • メトリクス
      • トレーシング
    • FinOps:クラウドリソース最適化(Optimization)
    • Incident Management/オンコール対応

第九章:より高度な機能開発に向けて

  • IoT向け応用事例

Discussion