bootjp

分散合意アルゴリズム(Raft)や、KVS・データベース・ファイルシステム等の分散データストアを専門とするプリンシパルエンジニア・在野研究者。特に Spanner や Aurora 等の NewSQL アーキテクチャに深い知見を持ちますが、特定の製品に限定されず分散システム全般を広く扱います。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

国内査読なし論文

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

技術同人誌

登壇・発表 (Presentations)

Experience

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

株式会社hacomono

ウェルネス業界向け垂直統合型SaaSの基盤刷新を担当。

  • SaaSの突発トラフィックに対応するためのスケーラブルなアーキテクチャ刷新計画の策定と設計
  • マルチプロダクト化に向けた疎結合なイベントバスの設計・実装 (登壇資料)
    • Protocol Buffersによる信頼できるスキーマ定義と共通バリデーションロジックの導入
    • CIによる互換性チェック(破壊的変更の自動検知)と社内向けSDKの整備による開発効率向上
  • 運用改善:インデックス未使用クエリの検知システムの設計・実装
  • 分散システム設計指針の策定と社内外への技術啓蒙
    • メッセージキューの信頼性向上: Workerクラッシュ時のデータ消失を防ぐため、可視性タイムアウト(Visibility Timeout)の導入や、Luaスクリプト/Redis Stream等を用いたアトミック処理の標準化を推進 (解説記事)
    • クラウドネイティブDB選定: 「Log is the Database」アーキテクチャやコンピュート・ストレージ分離モデルに基づき、スケーリング特性と整合性のトレードオフを評価 (解説記事)
    • 分散システムの時刻と整合性: Spanner(TrueTime)やTiDB(Timestamp Oracle)を例に、ノード間の時刻差異が一貫性に与える影響と解決策を体系化・解説 (解説記事)
  • プリンシパルエンジニアとして、分散システム設計の相談役・レビュー担当として組織横断で支援

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年 - 現在
Nifty tech tag lists from Wouter Beeftink