天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

マスタリングAPIアーキテクチャ - Forkwell Library#72に参加してきた

forkwell.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

この10年の間に、ソフトウェア開発を行う方法は大きく変容しました。

作業に依存関係が生じるモノリシックなアーキテクチャから、APIによるマイクロサービスアーキテクチャが主役となりつつあります。

この本はモダンなAPI駆動型アーキテクチャについて解説する書籍で、REST APIの基礎から、最適な設計、構築、運用、バージョン管理、およびテスト方法など実践的な方法を交えて学ぶことができる1冊となっています。 今回は訳者の石川朝久氏に本書のポイントについてお話していただきます。

会の様子

書籍の概要

架空のカンファレンスシステムを例に、オンプレシステムの一部APIを移行していく様子を記述しているアーキテクチャの進化や改善手法がわかる書籍だということでした。

イントロダクション

実はかなり重要な章だということで、

  • C4 Model
  • カンファレンスシステムの概要
  • ADR

の3つが記載されており、書籍の全体像がわかる章になっているということでした。
ただし、アーキテクチャの推移だけにフォーカスしたい場合は10章から読んだほうがよいということです。

第一部

APIやテストに関する基礎的な知識が整理されているということで、APIを設計するにあたって必要不可欠な知識やテストが記載されているそうです。

第二部

本書籍は一部モジュールをAPIに移行するという話であるため、APIゲートウェイとサービスメッシュそれぞれでトラフィックごと(外部トラフィック/内部トラフィック)に考慮すべきことを説明しているということです。

第三部

APIは継続的にリリースをしていくという前提にたった時に必要な知識を一通り説明した後に、セキュリティ運用の話として脅威モデリングAPIの認証認可周りの話が記載されているということでした。

第四部

アプリケーションレベルやインフラレベルで、アプリケーションを再設計するためにどのようなことが必要なのか?という話がされているということです。

具体的には、3種類の基本的な概念(結合、凝集、情報隠蔽)だったり、6Rを利用したクラウドへの環境移行が検討されているということでした。

本書の特徴

本書は、APIアーキテクチャ設計が体系的に学べる書籍であり、実例を通してアーキテクトの思考方式を学べる点が特徴の一つとして挙げられるということでした。
また、モノリスからの移行技法が学べるというのも本書の特徴の一つだということです。

アーキテクトの役割

アーキテクトは、

  • システム全体の構造や設計を定義する
  • 技術的なガバナンスと標準の確立
  • 技術選定と評価
  • セキュリティとリスク管理
  • コミュニケーションと調整
  • 技術的な問題解決とサポート

が仕事の一つとしてありますが、本書ではこれらの話がすべて抑えられているため、アーキテクトに必要な業務が一通り丁寧に書かれているのが良いポイントだという話がありました。

Q&A

講演の後はQ&Aがありました。以下、質問と回答を一問一答形式かつ常体で記載していきます。

石川さんがアーキテクトとして働くうえで気をつけていることはなにか?

色々な分野に興味を持つことは大切にしている。また、判断できることとできないことをはっきり認知しておくことや追加情報を取る術を持っておくこと。
また、どういう点に気をつけているのかどういうことに注意しているのかといった意思決定の記録をドキュメントに残しておくようにしている。

マイクロサービス界隈ではシステム間接続のインターフェース不整合に対する定石はあるか?

定石と言えるかはわからないが、テストに力点を置く。スキーマ定義に基づく静的型付けチェックなどもする。

どういうきっかけで翻訳を始めたのか?

企画を持ち込むようにしている。

一からプロダクトを立ち上げるために必要な技法は本書にのっているのか?

機能要件から必要なAPIを抽出するという話は載っていないのだが、リソース名の名付け方などは少し書いてある。

コントラクトテストとは、Pactなどのツールを利用して開発字からAPIの利用者・開発者が比較的密な状態で行うという理解で良いか?

そんなイメージ。ただし、APIの利用者と開発者が密にやり取りできるかというとそんなことはないので、変更の主導権を持っている人たちに対してどうしていくか?という話になると思う。

Actorモデルのような設計もAPIアーキテクチャで取り扱われているか?

書籍には書かれていない。石川さん個人としても、そんなに見たことはない。

認証認可サービスとそれ以外の連携方法がなかなか難しいテーマだと思うが、実践的な例が欲しい

本書では少しだけ扱っているが、どちらかというと理論寄りの記載になっている。

会全体を通した感想

書籍が出た時にタイトルと目次だけ見てなんとなく気にはなっていたのですが、想像していたよりも広範囲のテーマを扱っているというのが分かったので良かったです。

リアルなシステムに近い実例が取り上げられながらも理論的な説明も多くあるということだったので、一度で読み切るというよりは状況に応じて見直す前提で読んでみようと思いました。