nekotool さんのヨミメモ

『マイクロサービスアーキテクチャ』(Sam Newman) by nekotool

マイクロサービスアーキテクチャ
Sam Newman
出版社: オライリージャパン   出版日: 2016-02-26   ページ数: 344

単一責任原則
小さく、かつ1つの役割に専念
変更する理由が同じものは集める、変更する理由が違うものは分ける
サービスの境界をビジネスの境界に合わせる
サービス指向アーキテクチャ SOA
複数のサービスが連携して最終的な一連の機能を提供する設計手法
同期と非同期
リクエスト/レスポンス(同期)とイベントベース(非同期)
オーケストレーション手法
→ リクエスト/レスポンスで、マネジャー的な中央監督機関サービスが各サブサービスにリクエスト
コレオグラフィ手法
→ 非同期でイベント発行させ、それをサブスクライブするサブサービスが処理
→ 疎結合で柔軟
→ デメリットとして、追跡しにくいこと→ 全体を追跡、監視するシステムを追加で作らないといけない
セマンティックバージョニング
MAJOR.MINOR.PATCH
MAJOR→後方互換性のない変更
MINOR→後方互換性のある新機能の追加
PATCH→既存機能にバグ修正
BFF Backends For Frontends
複数デバイス向けの共通APIゲートウェイをオニオンアーキテクチャでやるのではなく、各デバイス向けのバックエンドをそれぞれ用意する。
CRC Class-Responsibility-Collaboration カード
1つのカードに、クラス名、その責務、その連携クラスを書く。
テストスコープ
テストピラミッド
UI ← エンドツーエンドテスト
サービス ← サービステスト
単体 ← 単体テスト
逸脱の常態化 normalization of deviance
→ 信頼できないテストを含むテストケースに慣れてしまう状態
テストにおける非決定性の根絶
Eradicating Non-Detetminism in Tests
 → 信頼できないテストは、すぐに修正するか、テストスイートから排除する
スモークテストスイート
 → デプロイ直後毎回
ブルーグリーンデプロイメント
 → 本番環境の負荷をリダイレクトで新規デプロイ成果物に向ける。エラーあればすぐフォールバック
カナリアリリース
リリースを改善するために労力をかける方が、自動化された機能テストを増やすより大幅に有益なこともある
MTBFとMTTRとの間の最適化のトレードオフ
平均修復時間
MTTR - Mean Time To Repair
自動化された機能テスト
MTBF - Mean Time Between Failures
非機能要件
通常機能のようには実装できないシステムの特性
Webページの遅延の許容範囲、
システムがサポートすべきユーザ数、
障害をもつ傾けのアクセシビリティ、
顧客データのセキュリティなど
別名、機能横断要件
CFR Cross-Functional Requirements
Fluentd、Logstash、Kibana、Graphite
マイクロサービスとは何かを再び考えてみましょう。これは技術ドメインではなくビジネスドメインに倣ってモデル化されたサービスです。あるサービスを所有するチームがビジネスドメインに合わせて構成されていると、チームは顧客中心の姿勢を維持でき、サービスに関連するすべての技術を全体的に理解して所有するので、より多くの機能開発をやり遂げられる可能性が高くなります。