記事

C4モデルとは

システムアーキテクチャ

概要 アーキテクチャ図を書くときにいつも粒度に迷っていたが、C4モデルという技法があることを知ったので、調べてみた。 C4モデルとは ソフトウェアアーキテクチャのモデル化技法の一つ。 C4はContext、Containers、Components、Codeの略で、システムをこれらの要素に分解することでソフトウェアアーキテクチャを記述する。 C4モデルは抽象度の高い順に以下の4つのビューを提供する...

C4モデル アーキテクチャ

クリティカルユーザージャーニーとは

ソフトウェア工学

概要 SLOの文脈でクリティカルユーザージャーニーについて知りたくなった。 クリティカルユーザージャーニーについて調べたことをまとめる。 クリティカルユーザージャーニーとは サービスのユーザーにとって最も重要な体験や、特定の目的を達成するための主要経路を示すものである。 ユーザーが目標達成する過程で重要なタッチポイントや障害を特定することができる。 ユーザーが達成すべき目標を明確にし、タスクやサブ...

クリティカルユーザージャーニー SLO

良い戦略、悪い戦略

ビジネス

良い戦略、悪い戦略を読んだ。 事例について書かれている部分が多い。面白い事例もあった。 良い戦略には取るべき行動指針が含まれている 戦略の基本は弱みに最大の強みをぶつけること、最も伸びしろがある部分に最強の武器を使うこと 戦略を立てるときは「何をするか」と同じくらい「何をしないか」が重要 悪い戦略の原因は誤った発想とリーダーシップの欠如 悪い戦略の特徴 空疎である 重大な問題に取り組まない 目...

New Relic実践入門 第2版 オブザーバビリティの基礎と実現

ツール

New Relic実践入門 第2版 オブザーバビリティの基礎と実現を読んだ。 New Relicの機能を一通り網羅している。活用方法についても半分近くページが割かれているので、実践方法について知ることができる。 NRQLの仕様とかも書いてあると良いなと思ったが、足りないところはドキュメントで補完したり、実際に触ってみるのが早そう。 テレメトリデータについて次のように定義している メトリクス 定期...

New Relic

ヘルシープログラマ ―プログラミングを楽しく続けるための健康Hack

ヘルスケア

ヘルシープログラマ ―プログラミングを楽しく続けるための健康Hackを読んだ。 全体的にエクササイズの紹介が多めにある。 本書で紹介される研究は科学的なエビデンスに基づいているものが多い。とはいえ10年近く前の書籍であるため、エビデンスにアップデートはありそう。 ただ、10年前から変わっていないなぁと思うことも多く、一見の価値があると思った。特に健康は習慣から育むという考え方はずっとある考えなのだ...

健康

Web APIの設計

アプリケーション

Web APIの設計を読んだ。 API設計の視点を与えてくれる本。 API設計のインターフェースだけでなく、もっと手前の入り口から書かれている。 API設計は、仕組みではなくユーザーが何をできるかに焦点を当てて設計すると良い。仕組みに焦点を当てると複雑化する APIのゴールを洗いだすアプローチとしてゴールキャンパスというフレームワークの解説があったが、良い方法だと思った APIバージョニングのパ...

API OpenAPI 設計

SLOを始めるためのスタートガイド

ソフトウェア工学

概要 SLOについて理解し、SLOの運用を始めることができるようになるためのガイドとなるような内容をまとめる。 SLOの導入から運用までのステップ 組織やチームにSLOの導入を行い、運用を開始していくためには幾つかの段階を踏む必要がある。 SLOの知識について共有する SLOの導入目的について合意する SLOの運用方針について合意する SLOの設計を行う SLOの運用を開始する SLOを組織に...

信頼性 SLO

契約テストとPactについて

アプリケーション

概要 契約テストとPactについて調べたことをまとめる。 契約テスト(Contract Testing)とは コンシューマ(サービスを呼び出す側)とプロバイダー(サービスを提供する側)の間の動作をテストするテスト手法のことである。 コンシューマーとプロバイダー間での合意を契約として記述し、その契約に基づいてテストを行う。 コンシューマーが契約を発行し、プロバイダーはその契約に従ってテストを行う形式...

契約テスト Pact プロデューサー駆動契約テスト コンシューマー駆動契約テスト

TypeScriptの基本を学び直す

アプリケーション

概要 TypeScriptの基本について学び直す。 JavaScriptの復習 変数のスコープ(scope) グローバルスコープ windowオブジェクトのプロパティとして定義されるスコープ。 const a = "Hello"; console.log(window.a); // Hello ローカルスコープ 関数スコープ 関数内で定義された変数はその関数内でのみ有効。 f...

TypeScript

SLO サービスレベル目標 ―SLI、SLO、エラーバジェット導入の実践ガイド

ソフトウェア工学

SLO サービスレベル目標 ―SLI、SLO、エラーバジェット導入の実践ガイドを読んだ。 サービスやユーザーの定義について語られている SLOを考える時は特にユーザーについての解像度を高めておく必要があると思った 解像度が低いとサービスの信頼性を過剰に高めようとしたり、無意味な指標になってしまいがちになると感じた サービスが信頼できるか?というのはサービスはユーザーが必要とする動作を実行して...

SLO