bootjp

分散合意アルゴリズム(Raft)や、KVS・データベース・ファイルシステム等の分散データストアを専門とするプリンシパルエンジニア・在野研究者です。Spanner をはじめとする NewSQL(TiDB など)や、「Log is the Database」の思想で設計された Aurora から Aurora DSQL まで深い知見を持ちつつ、特定製品に限定せず分散システム全般を扱います。

Supership/PLAID での大規模配信・低遅延システムの実務を経て、現在は hacomono でマルチプロダクト戦略に向けた部分的なマイクロサービス化と、疎結合なスキーマ駆動イベントバスの設計・実装を主導しています。メインプロダクトと新規プロダクトを連携させる基盤を整備し、開発チームと連携しながら実装・運用を進めています。

アドテクをはじめ、低レイテンシー・高スループット・高スケーラビリティが求められる領域で、配信・計測基盤の設計と運用に加え、クライアント中心一貫性モデルを活用したスマートフォンキャリアサービス向け通知管理システムの設計・運用にも携わってきました。スパイク耐性を備えたスケーラブルなシステム構築を得意としています。

理論(論文研究・自作実装)と実践(大規模商用開発)を往復しながら、堅牢でスケーラブルなシステム基盤を構築します。

Creations

主な自作プロダクト

  • create-raft-redis — 「Goで作って理解するRaftベースRedis互換KVS」のコード
  • go-kvlib — 上記教材向けに作成したRaft対応KVS用ライブラリ
  • dcache — CoreDNSプラグインによる非同期分散キャッシュ
  • disable_twitter_shortcut — Twitter Webのキーボードショートカット無効化拡張
  • elastickv — DynamoDBのようなクラウド環境向けの分散キーバリューストア開発を目指す実験的プロジェクト
  • echo_middleware_path_auth — Echo向けパスベース認証ミドルウェア
  • jenkins_consecutive_fail_detector — Jenkinsジョブの連続失敗のみを通知する監視ツール
  • adaptsize-go — サイズアウェアアドミッションポリシーのGo実装(AdaptSize論文ベース)
  • その他、多数のプロジェクトは GitHubプロフィール をご覧ください。

著作(技術同人誌)

  • Goで作って理解する Raftベース Redis互換KVS — 技術書典16。Redisを題材に、Raft合意アルゴリズムを用いた強整合性KVSの構築を学ぶハンズオン書籍。単なる実装解説に留まらず、分散システムにおいてなぜRaftが必要なのか、AWS等の実際の故障事例と併せて「止まらない・壊れない」システムの設計思想を解説。分散KVSを一から組み上げて動かすことで、分散合意の実践的な理解を目指す一冊。

その他(サービス / 非GitHub)

Publications

国際会議(査読あり)

  • 上田義明, (タイトル未定: LSM Tree のパフォーマンス最適化に関する研究)
    • 執筆中 (In preparation)

国内査読なし論文

  • 上田義明, 碓井利宣, パーソナライズされたコンテンツ配信のための低遅延分散 KVS の構築
    • 第 82 回全国大会講演論文集, 2020-02-20, ページ 87 - 88
    • PDF / 書誌
  • 上田義明, 分散システムのための DNS キャッシュヒット率及び応答速度の改善手法の提案
    • 第 84 回全国大会講演論文集, 2022-03-05, プレプリント, 学生奨励賞

技術同人誌

  • Goで作って理解する Raftベース Redis互換KVS
    • 技術書典16(技術同人誌 / 全79ページ, ver 1.2)
    • 本書の狙い
      • Redis 互換 KVS を実装しながら、分散システム・一貫性モデル・Raft の要点を手を動かして学ぶ入門書。
    • 構成
      • 前半で「分散システムの基礎」「Redis/Redis Cluster の特性と限界」「一貫性モデル」「Raft の主要概念(リーダー選出・ログ複製・安全性)」を整理。
      • 後半で Redis 互換 KVS 実装を通じて、理論と実装を接続。
    • ハンズオン実装(Go)
      • hashicorp/raft を採用し、データストア、SnapshotStateMachine (Apply/Snapshot/Restore) を実装。
      • RESPredcon を使って実装し、GET/SET/DEL をサポート。
      • フォロワー受信時は MOVED でリーダーへリダイレクトし、3ノード構成で動作確認。
    • 実務との接続
      • 強整合性と可用性が求められる実例として、PayPay の TiDB 採用事例にも触れ、設計判断の背景を理解できる構成。
    • TechBookFest 商品ページ / BOOTH

登壇・発表 (Presentations)

Experience

プリンシパルエンジニア(分散システム)

株式会社hacomono

ウェルネス業界向け垂直統合型SaaSにおいて、マルチプロダクト戦略を支える基盤刷新を担当。

  • マルチプロダクト戦略に向け、既存基盤を前提とした部分的なマイクロサービス化の計画策定と設計
  • メインプロダクトと新規プロダクトを疎結合に接続する、スキーマ駆動イベントバスの設計・実装 (登壇資料)
    • Protocol Buffersによる信頼できるスキーマ定義と共通バリデーションロジックの導入
    • CIによる互換性チェック(破壊的変更の自動検知)と社内向けSDKの整備による開発効率向上
    • 可観測性を前提に、SLI/SLOの定義と計測を整備し、Datadogダッシュボード/アラートを用いた運用を推進
    • 新規プロダクト開発チームと連携し、イベント契約・導入フロー・運用ルールを整備
    • チーム横断での基盤導入に向けて、オンボーディング・運用フロー整備・問い合わせ対応をリード
  • SaaSの突発トラフィックに対応するためのスケーラブルなアーキテクチャ刷新計画の策定と設計
  • 運用改善:インデックス未使用クエリの検知システムの設計・実装
  • 分散システム設計指針の策定と社内外への技術啓蒙
    • メッセージキューの信頼性向上: Workerクラッシュ時のデータ消失を防ぐため、可視性タイムアウト(Visibility Timeout)の導入や、Luaスクリプト/Redis Stream等を用いたアトミック処理の標準化を推進 (解説記事)
    • クラウドネイティブDB選定: 「Log is the Database」アーキテクチャやコンピュート・ストレージ分離モデルに基づき、スケーリング特性と整合性のトレードオフを評価 (解説記事)
    • 分散システムの時刻と整合性: Spanner(TrueTime)やTiDB(Timestamp Oracle)を例に、ノード間の時刻差異が一貫性に与える影響と解決策を体系化・解説 (解説記事)
  • プリンシパルエンジニアとして、分散システム設計の相談役・レビュー担当として組織横断で支援
    • 複数チーム/プロジェクトの設計ミーティングや定例に継続的に参加し、社内アーキテクチャの全体像と課題を把握
    • リーダー職・VP/役員との1on1を通じて優先課題を整理し、チーム横断の課題解決を推進
    • 必要な場面で相談パスをつなぎ、意思決定と実行のボトルネック解消を支援

2024年9月 - 現在

代表 / 分散システムエンジニア

btj.systems合同会社

分散検索エンジンおよびメタバース基盤のバックエンド開発を担当。

  • ライセンス変更により Elasticsearch が利用不能となった検索 SaaS 向けに、Lucene と Raft を組み合わせた Elasticsearch 互換の分散検索エンジンを設計・構築
  • メタバースプラットフォームにおけるネットワーク同期通信および空間提供に関わるバックエンドサービスの設計・開発

2023年 - 2024年

ソフトウェアエンジニア(分散システム / 配信基盤)

株式会社プレイド(PLAID)

CX プラットフォームを支える大量配信・データ処理基盤の開発を担当。

  • 大量トラフィックを扱う配信システムのリプレースと性能改善
  • 大幅なコスト削減を目的としたSLOの再定義、およびプリエンプティブル インスタンスを安全に運用するための基盤整備
  • パブリッククラウド等の技術論文を調査し、社内の開発チームへ知見をフィードバックする技術アドバイザー的役割を兼務
  • 分散データストアおよびイベント駆動アーキテクチャに関する技術的な相談窓口として、複数チームを横断して支援
  • 運用を意識した疎結合アーキテクチャの設計指針を整理し、ドキュメントとして共有

2021年 - 2023年

ソフトウェアエンジニア(検索基盤 / 大規模データ配信 / 通知基盤)

Supership株式会社

スマートフォンキャリア向けの大規模データ配信、通知管理基盤、および検索基盤の開発・運用を担当。

  • 検索エンジンおよび検索連動型広告システムの開発、およびSparkを用いた大規模集計基盤の構築・運用
  • GPS座標から行政区域を高速判定するエンジンの設計・開発
  • 数千万ユーザー規模のキャリア向け通知管理システムのバックエンド開発と安定稼働の実現
  • 高トラフィック環境下での大量データ配信におけるパフォーマンス最適化とインフラ設計

2018年 - 2021年

ソフトウェアエンジニア(アドテク / アクセス解析)

ソフトウェア開発企業(社名非公開)

SSP/DSP 領域の開発およびスクリプトタグベースのアクセス解析基盤の構築。

  • SSP/DSP システムの開発・運用
  • Googleアナリティクスライクなスクリプトタグベースのアクセス解析ツールの設計・実装

2018年以前

代表 / 開発者

レンタルサーバー事業(学生起業)

中学生時代に起業し、レンタルサーバーサービスの立ち上げと運用を行う。

  • サーバー構築・運用から顧客サポートまでを一貫して実施

学生時代(中学生〜)

主宰 / オーガナイザー

分散システム集会(VRChat上の技術コミュニティ)

VRChat上で分散システムに特化した勉強会コミュニティを運営。

  • Aurora Serverless v2, MemoryDB, AdaptSize など最新の分散システム・データベース論文の輪読・解説を継続
  • 初学者向け〜実務者向けまで、レベル差を吸収するための資料構成と進行設計を担当
  • コミュニティ運営を通じて、業界全体の分散システムリテラシー向上に貢献

2018年 - 現在

在野研究者(分散システム・データベース・分散KVS・分散ストレージ)

在野研究

分散システム、分散ストレージ、および分散KVSに関する理論研究と実装、および論文執筆。

  • Raft を用いた分散ストレージの実装・検証を通じて、強整合性システムの挙動とトレードオフを整理
  • パーソナライズド配信向けの低遅延分散KVSに関する論文執筆・発表(KVSのデータティアリングに関する論文を準備中)
  • 分散システム関連論文の調査と実装を通じた技術検証

2018年 - 現在

個人開発者

個人開発・個人活動

技術的興味に基づくプロダクト開発およびツール作成。

  • 論文インプットを効率化するための自作システム(PDF/HTML等のMarkdown変換、翻訳、VOICEVOXによる音声生成パイプライン)の構築・運用
  • VRChat 関連のツール群(resize.gg, 自動再入室ツール等)の開発・運用
  • 日常の課題を解決するための技術的な試行錯誤とアウトプット

2010年 - 現在
サードパーティー一覧