契約テストとPactについて
2024年7月21日概要 契約テストとPactについて調べたことをまとめる。 契約テスト(Contract Testing)とは コンシューマ(サービスを呼び出す側)とプロバイダー(サービスを提供する側)の間の動作をテストするテスト手法のことである。 コンシューマーとプロバイダー間での合意を契約として記述し、その契約に基づいてテストを行う。 コンシューマーが契約を発行し、プロバイダーはその契約に従ってテストを行う形式...
概要 契約テストとPactについて調べたことをまとめる。 契約テスト(Contract Testing)とは コンシューマ(サービスを呼び出す側)とプロバイダー(サービスを提供する側)の間の動作をテストするテスト手法のことである。 コンシューマーとプロバイダー間での合意を契約として記述し、その契約に基づいてテストを行う。 コンシューマーが契約を発行し、プロバイダーはその契約に従ってテストを行う形式...
概要 TypeScriptの基本について学び直す。 JavaScriptの復習 変数のスコープ(scope) グローバルスコープ windowオブジェクトのプロパティとして定義されるスコープ。 const a = "Hello"; console.log(window.a); // Hello ローカルスコープ 関数スコープ 関数内で定義された変数はその関数内でのみ有効。 f...
SLO サービスレベル目標 ―SLI、SLO、エラーバジェット導入の実践ガイドを読んだ。 サービスやユーザーの定義について語られている SLOを考える時は特にユーザーについての解像度を高めておく必要があると思った 解像度が低いとサービスの信頼性を過剰に高めようとしたり、無意味な指標になってしまいがちになると感じた サービスが信頼できるか?というのはサービスはユーザーが必要とする動作を実行して...
Jestのスナップショットテストを避けたほうが良いかもしれないデメリットについて雑メモ。 デメリット テストが脆くなってしまう スナップショットテストはUIの変更を簡単に検知することができる反面、テストの関心事ではないような変更(ex. class名のリネームだけで見た目は変わらない変更)であってもテストがFailしてしまう。 アサーションの期待が不明確 スナップショットテストではtoMatchS...
Web APIテスト技法を読んだ。 API設計のテストで5w1hを使って問いを考える話があったが、具体例が分かりやすく、示唆に富んでいた 現場のテスタビリティについて理解するフレームワークとして挙げられていた10個のPモデルが良かった。テスト戦略や計画を考える前提の整理に役立ちそう テスト計画の整備と文書化について書かれているテスト計画のフォーマット例も考えやすいシンプルなもので良かった。戦略と...
自分が健康のために行っている習慣について書き留めておく。半分くらいはポエム。そのうち将来振り返ることがあるかもしれないので、いつかの改善のために。 自分が健康のために行っている習慣について書き留めておく。半分くらいはポエム。そのうち将来振り返ることがあるかもしれないので、いつかの改善のために。 免責 この記事で書いていることの正しさ(≒エビデンスがある)については保証できません。自分が調べたこと、...
大規模データ管理 ―エンタープライズアーキテクチャのベストプラクティスを読んだ。 データ管理そのものというよりもアーキテクチャの話に興味があって手にとってみた。 データ管理を中央集権的に行うとデータ管理のトレンドの変化について行くことが難しくなるので、そのためにスケーラブルなアーキテクチャにしていきましょうという話。 データウェアハウスはサイロ化しがちなので避けたほうが良いというのは学びがあった。...
マイクロサービスアーキテクチャ 第2版 を読んだ。 マイクロサービスに取り組んでいる、マイクロサービスを検討しているなら読んでおきたい一冊。 分散システムに求められるアーキテクチャの特性(非機能要件)についてもよく触れられており、マイクロサービスオンリーな観点に囚われず読んでも良さそう。 マイクロサービスの概念についてサッと確認したい場合には第一章がよくまとまっているので参照したい。 一部モノリス...
以前、GoReleaserを使ってのGoのアプリケーションを配布するというタイトルの記事でGoReleaserを使ったバイナリ配布の方法について書いたが、Dockerhubへのイメージプッシュもやってみたのでまとめておく。 ソースコードの全体像はbmf-san/gondolaを参照。 .goreleaser.yamlを設定 ockers: - image_templates: - ...
モノリスからマイクロサービスへ ―モノリスを進化させる実践移行ガイドを読んだ。 モノリスからマイクロサービスへの移行アプローチについて書かれている。 最もページが割かれている第4章はマイクロサービス化への1番の砦と思われるデータベースの分割について書かれている。時間がない、振り返りだけしたいならこの章だけは目を通しておきたい。 この本はタイトル通りアプローチに特化している内容であるので、マイクロサ...
概要 Bitemporal Data Modelについて調べたことをまとめる。 Bitemporal Data Modelとは Temporal Data Modelsという分野で扱われるデータモデルの1つで、時間軸を取り扱うデータモデルのうち、2つの時間軸を持つデータモデルのことを指す。 ノンテンポラル(Non-Temporal) 現在の状態のみを保持する 過去の履歴や将来の変更に関する情報は...
セキュアで信頼性のあるシステム構築 ―Google SREが考える安全なシステムの設計、実装、保守を読んだ。 前半部分に興味の中心があったのでメモしておく。 セキュリティと信頼性は創発特性、単純に実装されるものではなく、デプロイや運用における複数の要因(仕組みやテスト、検証状態などから)から創発される特性である。 プロジェクトの初期段階からセキュリティと信頼性について考えておいたほうがよい。プロ...
間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価を読んだ。 2010年に初板が発売された割と古い本ではあるが、今にも通ずるソフトウェア・アーキテクチャの話がかなり砕けた表現で書かれている。 この年代では自分はまだ学生だったので時代背景はわからないが、アーキテクトという存在がこの10年で結構変わったんだろうなぁという印象を持った。 技術書というよりエッセイ本なので、技術的な要素のみ...
概要 権限管理の設計について事例を調べてみたのでメモしておく。 調査メモ 調査した情報を整理してみたが、わかっていないこともあるのでちゃんと整理しきれていない。 権限を構成する要素 権限は次の要素で成り立つものと考えられそう。 誰が(Principal) 何に(Resource) 何を(Action)していいか(ALLOW)、いけないか(DENY) 権限設計の手法 設計手法としては次のようなも...
単体テストの考え方/使い方を読んだ。 質の高いテスト設計の為に必要な考え方やアプローチがまとめられている。テスト手法に留まらないテスト設計の本であり、テスト関連の本の中でもあまり類を見ないものだと思われる。 良いテストは、リグレッションへの保護、リファクタリング耐性、フィードバックの迅速さ、保守性を備えているが、これらを全て満たすのは難しいため費用対効果を考える必要がある。本書はその考え方を示す実...
ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするにはを読んだ。 トレードオフはドキュメントには書かれないことがある。何かを選択した理由は書かれていても、選択していなかった理由を示していないことは結構あるのではないだろうか。 この本では、設計判断のトレードオフを対照的に考えることの重要さと、ソフトウェア設計におけるトレードオフ事例を学び得ることができる。 後半はトレー...
概要 RubyのModuleについてかく。 Moduleとは クラスや他のモジュールに共通のメソッドや定数を提供するための仕組み。 # モジュール定義 module Hi def say_hi puts "Hi!" end end Moduleはクラスと異なり、インスタンス化できない。また継承もできない。 モジュールにはクラスメソッドやインスタンスメソッドを定...
概要 Rubyの特異クラスと特異メソッドについてかく。 特異クラス 特異クラスとは、特定のオブジェクトに対してのみ有効なクラスのことを指す。 class Greet def say_hi puts 'Hi' end end greet = Greet.new # 特異クラス class << greet # シングルトンメソッド def ...
概要 RubyのProcとlamdaについてかく。 Procとは ブロックをオブジェクト化したもの。ブロックはオブジェクトではない。 このオブジェクトは手続きオブジェクトと呼ばれ、Procクラスのインスタンスとして表現される。 Proc.newまたはprocによって手続きオブジェクトを生成できる。 # Proc.new proc_object = Proc.new { |x| puts x } ...
概要 Rubyのブロック構文についてかく。 ブロック構文とは 他メソッドにコード断片を渡すことで、そのメソッド内で処理を実行させることができる構文。 do..endまたは{}を使って定義する。ブロックは引数を受け取ることができる。 # do..end [1...3].each do |number| puts number end # {} [1...3].each { |number| p...
概要 Rubyのシンボルについて書く。 シンボルとは 任意の文字列と対に対応するオブジェクト。 内部実装では、整数として管理されている。 :symbol :'symbol' %s!symbol! シンボルはSymbolクラスのオブジェクトであり、文字列はStringクラスのオブジェクトである。そのためメモリ効率が良い。 文字列と違い、シンボルは同一のオブジェクトである。 # ...
マスタリングTCP/IP―入門編―(第6版)を読んだ。 例えが分かりやすくて読みやすい。 TCP/IPの基本からネットワークについての理解を進める入門書として良い教科書だと感じた。 ネットワークはつい苦手意識を持ってしまっておざなりになっているが、この本は読みやすくて良かった。 ...
健康になる技術 大全を読んだ。 エビデンスを強く意識した健康についての本。 エビデンスについての捉え方や考え方を前提として整理されている。参考文献の量に圧倒される。 食についての章に最もページを割かれているが、食事は健康にとって最も重要な要素の一つなのでこれは有り難い。 食については、一概に健康に良い・悪いではなく、リスクが高い・低い程度に捉えるのが良いのだろうと感じる部分が多かった。エビデンスに...
内部構造から学ぶPostgreSQL―設計・運用計画の鉄則を読んだ。 PostgreSQLを運用するに当たって知っておきたいことが設計・運用の観点で網羅されていて良い。 MySQLにもこういう本ないかなぁ。ありそう。 ...
PostgreSQL徹底入門 第4版 インストールから機能・仕組み、アプリ作り、管理・運用までを読んだ。 PostgreSQLを触ったことなかった自分にはちょうど良い入門書だった。 アプリケーションの実例の章が割と多めにページを割かれているが、PostgreSQLの基本的なことはカバーされている。 ...
パーフェクトRuby on Railsを読んだ。 Ruby on Railsに入門したくて読んだ本。網羅的に書かれているのでフレームワークの機能を把握するのに役立つ。 ...
パーフェクトRubyを読んだ。 パーフェクトシリーズは他にはPHPとJavaScriptしか読んだことないが、安定のパーフェクトシリーズといった感じ。 ...
プロを目指す人のためのRuby入門を読んだ。 業務レベルで役に立ちそうなことが詳細に書かれている。読みやすい。 ...
コンピュータはなぜ動くのか 第2版 知っておきたいハードウエア&ソフトウエアの基礎知識を読んだ。 改訂版が出ていたので読み直した。 ハードウェアからソフトウェアまでの流れを理解することができる。 プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識もセットで読むと良い気がする。 ...
プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識を読んだ。 改訂版が出ていたの読み直した。 情報系の学校であればこういうことは講義で学んでいる気がしている。 ...
概要 これまでgoblinという自作HTTPルーターを自分のアプリケーションで使っていたが、Go1.22でServeMuxの機能が拡張されてからはServeMuxを使うようになった。 この記事では、Go1.22で追加されたServeMuxの機能や性能について整理し、これからのGoのHTTPルーター選定について考えてみる。 Go1.22で追加されたServeMuxの機能 Go1.22rcの公開時にS...
改訂2版 最新 知りたいことがパッとわかる 社会保険と労働保険の届け出・手続きができる本 を読んだ。 社会保険・労働保険についてパッと学べることができる本。各種手続きや書類の数、法改正など大変そうだ... ...
「人事・労務」の実務がまるごとわかる本を読んだ 人事・労務の仕事についてあれこれ学べる本。 ...
図解 人材マネジメント 入門 人事の基礎をゼロからおさえておきたい人のための「理論と実践」100のツボ 人事の関心事について知ることができる本。人事担当者でなくとも読みやすい視点で書かれている。 ...
カイゼン・ジャーニーを読んだので感想をメモする。 感想 ストーリー調なのが読みやすいような読みにくいようなという印象を持ったのが、読み終わってみると「越境」というものを追体験するには分かりやすい形式だなと感じた。 登場するアジャイルのプラクティスは、他で学んだことがあるので目新しさは個人的にはなかった。 ただこの本ではそうしたプラクティスの詳細よりも「越境」することの目的や意義にメッセージ性を強く...
正しいものを正しくつくる プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先についてを読んだ。 プロダクト開発のプロセスのあれこれが言語化された本。気になったことをメモしておく。 プロダクトづくりのマネジメントを操作する2つのレバーは関係性がある リスクマネジメント 要求リスク、技術リスク、要員リスク、政治リスクをいち早く検知・対処する 期待マネジメント ステークホルダー間...
ALL for SaaS SaaS立ち上げのすべてを読んだので気になったことをメモする。 ASPとSaaSの違い シングルテナントなのがASP、マルチテナントなのがSaaS と語られることもある リカーリングレベニュー 繰延収益 企業の売上の内、継続可能性のあるもの ユニットエコノミクス Unit ecnomics = Life time value/Customer Acquisi...
概要 ISUCON環境を利用してシステムメトリクスをちゃんと見れるようなろうという勉強会を定期的に行っているので、そのまとめを残す。 Webエンジニアが知っておきたいインフラの基本 インフラの設計から構成、監視、チューニングまでを参考図書とし、第5章以降の内容を実際に手を動かして確認するような形で行っている。 環境はConohaでISUCON8のイメージを利用してサーバーを立てている。 プラン:メ...
概要 カンファレンスなどの登壇イベントでCFPを提出することがあるが、自分がどのようにCFPを書き上げ、提出しているかについてポエムを書いておく。 これまでの実績 過去CFPを提出した回数が7回、採択率は100%(うち1件は諸事情により辞退)であった。 登壇したイベントは、PHPのカンファレンスとGoのカンファレンスで、PHPのカンファレンスのほうが登壇回数が多い。 cf. https://spe...
PHPCompatibilitiyを使ってPHP8.2の互換性チェックを行う際にハマったことのメモ。 ハマったこと 2023年10月現在、latestである9.3.5をインストールしてもPHP8.2の互換性チェックはできない。 9.3.5は2019年リリースで、最近のPHPのバージョンにまだ対応していないらしい・・・ 解決策 もしかして開発止まってる?と一瞬思ったが、その様子はない。 develo...
達人に学ぶDB設計徹底指南書: 初級者で終わりたくないあなたへを読んだ。 体系的に解説されていて分かりやすい。 ...
概要 MySQLのロックについてまとめる。 MySQLのバージョンは8系を想定する。 検証環境 検証に使う環境はdocker-composeで用意した。(1コンテナだけなのでcomposeを使わなくも良いのだが..) . ├── docker-compose.yml └── initdb.d └── 1_schema.sql docker-compose.yml version: &#x...
エンジニアが学ぶ金融システムの「知識」と「技術」を読んだ。 システム的な話より金融のドメイン知識が多めの印象。銀行、保険、証券、クレジットカード会社などの業務やシステムについて説明されている。決済システムに関わるような人でも役立つ本かなと思った。 ...
エンジニアが学ぶ会計システムの「知識」と「技術」を読んだ。 会計や簿記の知識が前提になり、どんなインプットからアウトプットを出すかということが説明されている。この分野には苦手意識がある。。。 ...
エンジニアが学ぶ在庫管理システムの「知識」と「技術」を読んだ。 在庫管理の難しさを知った。生産、販売、購買、会計、原価と関係するシステムもあり、在庫管理に求められる機能の複雑さを感じた。 ...
エンジニアが学ぶ生産管理システムの「知識」と「技術」を読んだ。 生産管理システムに限った話ではないが、業務フローを深く理解することがシステムの品質に大きく関わるなぁというのをひしひし感じた。 ...
エンジニアが学ぶ物流システムの「知識」と「技術」を読んだ。 モノの流れ、モノの管理をどのように最適化するかということが業務知識とともに語れているのが興味深かった。 ...
インデックスとは テーブルに格納されているレコードを高速に取り出すための仕組み 以下のようなO(n)問題を抱えたクエリがあるとする。 SELECT * FROM users WHERE first_name = ‘Tom’ このクエリのパフォーマンスを上げるためには、以下のようにIndexを貼る。 ALTER TABLE users ADD INDEX (first_name) メリット・デメリッ...
理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)を読んだ。 理論から学ぶことでRDBに対する向き合い方、考え方を整理することができる。集合論や論理学は理解しきれていないので今後の課題。 ...
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへを読んだ。 「なるほどこういうふうに書けるのか〜」といった感じにSQLの引き出しが増えた気がする。 ...
初めてのSQL 第3版を読んだ。 SQL入門書として分かりやすい。駆け出しの時に読んでおけば良かった。基本的なことを振り返るにもちょうどよい。 ...
SQLアンチパターンを読んだ。 定番of定番。分かりやすい解説でアンチパターンが紹介されている。 ...
SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)を読んだ。 SQLを書くときに意識しておきたいことが整理されている。 ...
NULLとは 「値が存在しない」または「値が不明」ということを示す。 値ではないため値のように比較できない。 空集合(要素が0個の集合)ではなく、存在しない集合と見なされる。 リレーショナルモデルに反するNULL リレーショナルモデルは閉世界仮説(真であると判明しないものは全て偽であると仮定すること)に基づいており、NULLはこれに反する。 リレーショナルモデルでは2値論理が元となっているため、真...
キャパシティプランニングの目的 システムのリソース管理を目的とし、リソースを効率的に利用することを目指す。 キャパシティプランニングのプロセス キャパシティプランニングは概算と詳細を使い分ける。不必要に詳細に踏み込まないようにし、必要な時に適切な詳細を用意する。 アプリケーションのパフォーマンス要件を定義する レスポンスタイム、スループット、同時接続数、負荷性能など。 現在のインフラの稼働状...
IDとは あるものを一意に特定するもの。 集合論において、あるものと属性が1:1で対応することを全単射と呼ぶ。 全単射になっているものはIDとして機能とする。 IDを考えるときは、単数に対するものか、複数(グループ)に対するものか、複数であればどのような粒度であるのか?などを考慮する必要がある。ex. カニという属性を考えるとして、どんな種類なのか?何科目なのか?色は?名称は? 一見一意性を持たな...
キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置を読んだ。 古い本ではあるが、キャパシティプランニングについての基本的な考え方を学ぶことができる。 オンプレが前提とはなっているが、クラウドにおいても転用できる考え方があると思う。 ...
QPDFをインストールする。 brew install qpdf 対象ファイルのパスワードを解除する。 qpdf --decrypt input.pdf --password=PASSWORD output.pdf 〜完〜 ...
Kubernetesの各コンポーネントについて Control Plane Components kube-apiserver クラスタを操作するためのKubernetes APIを提供するサーバー。水平スケールが可能な形に設計されている。 etcd 全てのクラスタの状態管理を行うための高可用性のキーバリューストア。 kube-scheduler ノードが未割り当ての新しく生成されたPodをどの...
概要 Cloud Spannerの知見を漁ったのでメモ。走り書きなのでカテゴライズしていない。 メモ 計画メンテナンスやスキーマ変更のためのダウンタイムなし、最大99.999%の可用性を保証 Cloud SQLはダウンタイムありの計画のメンテナンス Cloud Spannerのアーキテクチャ構成 クライアント R/Wするコードが実行されているサーバーやコンテナ クライアントライブラリを使うと...
bufferサイズを記録したかったときに調べていたのでメモ。 large_client_header_buffers ngx_http_core_module モジュールに含まれるディレクティブ 構文: large_client_header_buffers number size; デフォルト: large_client_header_buffers 4 8k; コンテキスト: http, s...
SaaSなんもわからん!からSaaS完全に理解した!に近づくために参考になりそうな資料をまとめておく。 資料 docs.aws.amazon.com - SaaS アーキテクチャの基礎 docs.aws.amazon.com - SaaSレンズ docs.aws.amazon.com - SaaS Tenant Isolation Strategies: Isolating Resources ...
実務で使える メール技術の教科書 基本のしくみからプロトコル・サーバー構築・送信ドメイン認証・添付ファイル・暗号化・セキュリティ対策までを読んだ。 メール技術について体系立てキャッチアップしたことがなかったので大変役に立った。 ...
rune型とは int32のエイリアス型で、Unicodeのコードポイントを表す。 Unicodeは符号化文字集合や、文字符号化方式などを定めた文字コードの標準規格で、世界の多様な言語や書式、記号に番号を割り当てたもの。 符号化文字集合とは、コンピューター上で扱う文字や記号を重複しないように集めた文字セットのことであり、文字と文字に割り当てられた番号の対応表を指す。文字符号化方式は、文字に割り当て...
GoでHTTPサーバーを書いているときなどオレオレ証明書がほしいときに役立つワンライナー。 go run $(go env GOROOT)/src/crypto/tls/generate_cert.go -rsa-bits 2048 -host localhost cert.pemとkey.pemが用意できる。 openssl使ったりmkcert使ったりしていたけどGo使っていたらこれで良さそう...
入門 考える技術・書く技術――日本人のロジカルシンキング実践法を読んだ。 クリティカルシンキングとかロジカルシンキングとかそのへんのテーマの本も一読しておくと理解が深まりそう。昔読んだその手の本が割と役立った。 ...
指数バックオフ(Exponential backoff) リクエストの遅延を乗算的に増加させる(リトライ間隔を遅延させていく)形で失敗したリクエストを定期的に再試行(リトライ)する手法。 ex. 1回目のリトライは1秒後、2回目は2秒後、3回目は4秒後、4回目は8秒後... リトライ設計においては、バックオフのみに依存するのではなく、リトライ上限やタイムアウト(接続タイムアウトとリクエストタイムア...
この記事はMakuake Advent Calendar 2023の24日目の記事です。 概要 10年以上運用しているサービスのPHPとFuelPHPのアップデートを行ったプロジェクトのレポーティングをする。 アップデート対象 メインサービス(会社が運用する主要なサービス)のアプリケーション FuelPHP利用 メインサービスが利用している社内ライブラリ(2つ) PHP製 メインサービス...
この記事はMakuake Advent Calendar 2023の19日目の記事です。 なんでこんな大遅刻かというと、唯一埋まっていなかった19日の枠を急遽埋めようと思って投稿したため。元々掴んでいた枠ではないので遅刻ではない。 概要 去年くらいからGoのnet/httpに含まれるServeMuxの機能拡張の提案が出ていてウォッチしていたのだが、最近Closedになったらしい。 cf. net/...
概要 gRPCとProtocol Buffersについて改めておさらいしておきたかった。 リンク gRPC grpc.io 公式ドキュメント zenn.dev - 作ってわかる! はじめてのgRPC まだ読んだことなかったので読んでみたのだが大変勉強になった。日本語情報はまずこれ読んでみると良いかも。 www.wantedly.com - gRPC Internal - gRPC の設計...
最近モブプロを人生で初めて経験したので、その体験の良さを忘れないようにメモ書きしておく。 モブプログラミングとは 3人以上のメンバーで1台のコンピューターを共有してプログラミングする手法のこと。 通常コードを書くドライバーと、それを支えるナビゲーターの二手に分かれて作業をする。 Pros / Cons Pros ナレッジ共有がしやすい 同期的なフィードバックを得ることができる 認識を合わせやすい...
OpenAPI Specificationとは 言語依存のない形でHTTP APIの仕様を定義するためのフォーマット。YAMLまたはJSONで記述する。 Swagger SpecificationはOpenAPI Specificationの前身である。 OpenAPIを採用するメリット・デメリット メリット REST APIの標準化されたフォーマットであり、開発者間のコミュニケーションコストを...
Go1.18から追加されたWorkspace modeを使ったことがなかったので、使ってみた。 Workspace modeとは Goのマルチモジュール構成を便利するための機能。 Workspace modeの使い方 次のような構成を用意する。 . ├── bar │ └── bar.go └── foo └── foo.go // foo.go package foo func ...
世界一流エンジニアの思考法をちょっと前に読んだのでメモ。 この本で書かれていることはどこかで聞いたり学んだりしたことが多かったので個人的にはあまり目新しいことがなかったのだが、2つほど頭に留めておきたいことがあった。 1つはBelazyであれということ。より少ない時間で価値を最大化しようという考え。 これは一人でも実践できるマインドセットだが、周りの環境もBelazyであることがより大事かなと思っ...
2023年の振り返りと来年の抱負 今年も1年を振り返って来年の抱負を記す。 2022年の振り返りと来年の抱負 2021年の振り返りと来年の抱負 2020年の振り返りと来年の抱負 2019年の振り返りと来年の抱負 2018年の振り返りと2019年の目標 プライベート 昨年やれなかったことを今年はやれたか振り返ってみる。 Kubernetes→CKAの取得には至らなかったが、勉強にはある程度時間を...
開発生産性についての記事を漁った。 記事リスト github.com - dora-team/fourkeys fourkeysを計測するためのツール dl.acm.org - The SPACE of Developer Produtivity SPACEについての論文 www.atlassian.com - 5 つの役立つアジャイル KPI 指標 bliki-ja.github.io...
ソフトウェアのアーキテクチャと組織の設計に関して記事を漁ってみたので、読んだものをリストアップしておく。随時読んだものを追加していこうと思う。 記事リスト logmi.jp - 状況に合わせたトレードオフで“ベター”を目指す 組織設計における、書籍『ソフトウェアアーキテクチャ・ハードパーツ』の活用 engineer.crowdworks.jp - 変化に適応するソフトウェアアーキテクチャと組織構...
Aurora Serverlessについて興味を持ったので記事を漁ってみた。 チェックした記事 aws.amazon.com - Amazon Aurora Serverless techblog.zozo.com - Aurora Serverless v2を本番導入した話 〜検討や導入時のポイント・得られた効果について〜 www.plan-b.co.jp - Aurora Serverles...
概要 GrafanaでContact Pointsがプロビジョニングがいつの間にかできるようになっていたので、プロビジョニングを設定してみる。 環境 grafana-oss 10.0.1 Docker Docker Compose 設定方法 雑メモなのでDocker Composeを使ったビルド周りの説明は割愛する。bmf-san/gobel-exampleを参照。 provisioning/...
この記事はMakuake Advent Calendar 2023の22日目の記事(ポエム)です。 概要 ソフトウェア開発のプロジェクトにおける不確実性について、自分が日々どのように向き合っているかを言語化してみる。 アジャイル関連の本を読み漁ったり、PMBOKの勉強をしたりと体系的に学んできたわけではないので、経験に基づいた主観的な話になる。 前提 自分がどのような環境で不確実性に向き合っている...
概要 モニタリングのシステムにおけるPull型とPush型のアプローチの違いについてまとめる。 Pull型 監視サーバー側で監視対象ホストについて設定をし、監視サーバーから監視ホストにデータを取得しにいく。 ex. Prometheus、Nagios、Zabbixなど PrometheusはPull型の欠点を補うかのように、exporterというPush型のようなアプローチのような仕組みがある。e...
概要 構成図レベルでのアーキテクチャの設計をする時の進め方として個人的に良いと思ったやり方を1つ取り上げてまとめておく。 進め方 事前に要件定義や調査がある程度済んでいるという状態を前提として、アーキテクチャの構成図を書きながら設計を進めていく作業の取り組み方法について書く。 といってとても単純で、「最初からゴールの絵を描こうとせずに、段階を踏んで設計する」というだけである。 上図のように...
GoReleaserを使ってGoのアプリケーションをクロスコンパイルしてバイナリ配布をやってみた。 GoReleaserとは GoReleaserは、Go言語で書かれたアプリケーションのビルド、パッケージング、およびリリースを自動化するツール。 クロスコンパイル、バイナリの圧縮、アーカイブの作成、GitHubなどのプラットフォームへのアーティファクトのアップロードができる。 GitHub Acti...
ADRのテンプレートファイルを生成するだけのMakeコマンドを作成したのでメモっておく。 コマンド .PHONY:help help: ## Print help. @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z0-9_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n"...
概要 GraphQLの素振りをしていたので調べたことについてまとめておく。 親切なチュートリアルが用意されており、始めやすい。 cf. www.howtographql.com GraphQLとは Meta社によって開発されたWeb API開発のためのクエリ言語。 GraphQLはGraphQL Foundationによって管理されており、Meta社はその一員である。 GraphQLの仕様と全ての...
概要 サービスメッシュについて調べたことをまとめる。 サービスメッシュとは サービス間(分散システム)の通信を管理するためのネットワークインフラストラクチャのこと。 一般的にはサービスにプロキシをサイドカーとして追加することで構成する。 サービスメッシュが解決すること 可観測性の向上 サービス間の通信の管理・制御 サービス間の通信のセキュリティ向上 サービスメッシュの機能 サービスディスカバ...
概要 CircleCIでphpunitの並列テストを行うアプローチについてかく。 PHPUnitの設定ファイルを生成するスクリプトを用意する #!/bin/sh basePath="/foo/bar" testFiles=$@ xmlFileStringData="" for file in $testFiles; do xmlFileStrin...
概要 Goでlog/slogを使ったcontextual loggingについてまとめる。 log/slogとは Go1.21で追加された構造化ロギングのためのパッケージ。 構造化ロギングとは、ログを構造化されたデータとして出力すること。 今まではGoで構造化ロギングをする場合はサードパーティのパッケージを利用するか、自前でスクラッチするかしか手段がなかったが、今後は標準パッケージも視野に入るよう...
More Effective Agileを読んだ。 アジャイルを実践するためのプラクティスがまとめられた本。 アジャイルワークショップの教科書として活用させてもらった。 ...
概要 モジュラモノリスについて調べたことをメモする。 モジュラモノリスとは モジュール分割をしたモノリス モジュール分割はドメインによる分割が一般的に見えるが、機能分割や技術分割など様々なパターンを検討することができる モノリスと同じく単一のデプロイメントパイプラインを持つ メリット モジュールが分割されているのでモジュール単位で開発を独立して行うことができる マイクロサービスへの移行が容易...