Healthchecks.io は、今や自己管理型のオブジェクトストレージを採用しています。

2026/04/17 23:29

Healthchecks.io は、今や自己管理型のオブジェクトストレージを採用しています。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

2026年3月に、Healthchecks.io は ping リクエストの本体 (>100kB) のオブジェクトストレージを、パブリッククラウドから Versity S3 Gateway と Btrfs を使用するオンプレミス環境へ成功裏に移行しました。この決定は、高額なコスト、AWS における CLOUD Act 準拠リスク、OVHcloud や UpCloud など他のプロバイダーにおけるパフォーマンス問題により導かれました。1 人のみのチームに対し運用複雑性が過剰であるため、Minio、SeaweedFS、Garage というオープンソース代替案を却下し、独立したメタデータデータベースなしにローカルの NVMe ドライブ上で動作する Versity S3 Gateway を選択しました。新しいアーキテクチャでは 1,400 万のオブジェクトを 119GB で管理しており、Btrfs(ext4 の代わりに選定され、イノード枯渇を防ぐため)経由で 1 秒あたり最大 150 回のアップロードをサポートしています。セキュリティと隔離性を確保するため、システムはプライベート IP でリスニングし、アプリサーバー同士は Wireguard トンネルを使用して通信します。データの耐久性は、2 時間おきにオフサイトバックアップサーバーへの rsync 同期によって維持され、暗号化されたフルバックアップを 30 日間保持します。このセットアップは、同時多発的なドライブ故障時にも最悪で 2 時間のデータ損失に耐えるように設計されています。移行により専用サーバーのレンタルに伴う運用コストが増加し、ウェブサーバーのボトルネックを防ぐことでレイテンシが大幅に改善されましたが、不安定な外部ベンダーへの依存関係を排除することで、重要な信頼性上の懸念事項を解決しました。

  • 欠けている要素(あれば):なし
  • 推論/飛躍(あれば):なし
  • 改善された要約(必要であれば、そうでなければ上記と同じものを繰り返す):上記参照。

本文

Healthchecks.io の_ping_エンドポイントは、HTTP ヘッダー(HEAD)、GET および POST リクエスト方式を受け付けます。HTTP POST を使用する際、クライアントはリクエストボディに任意のペイロードを含めることができます。Healthchecks.io はリクエストボディのうち最初の 100 キロバイト分を保存します。リクエストボディが極めて小さい場合は、そのデータを PostgreSQL データベースに格納し、それ以外の場合は S3 互換のオブジェクトストレージに格納します。最近、マネージド型のオブジェクトストレージから自己管理型(セルフホスト)環境への移行を行ってみました。

マネージドタイプの選択肢について

2022 年、ping リクエストボディのオフロード処理としてオブジェクトストレージへの導入を検討した際、どのプロバイダーを選べばよいかを評価していました。

  • AWS S3: レクエストごとの課金制であるため、Healthchecks.io の利用パターン(高頻度な PutObject 操作、十分なサイズ以上の_ping_ リクエストごとに一回の操作など)では割高になると考えられました。また、AWS がクラウド・アクト法に準拠しているため、データを AWS に渡す前に暗号化する必要があり、その点でも複雑さが増します。
  • OVHcloud: 当初はこの選択肢を選びました。レクエストごとの手数料は課金されず、OVHcloud は欧州企業であり、パフォーマンスも良好に思えました。しかし残念ながら、時間の経過とともにパフォーマンスと信頼性の問題が相次いで顕在化し、使用経験が悪化するにつれて代替案の探索を始めました。
  • UpCloud: 2024 年に UpCloud へ移行しました。OVHcloud と同様、レクエストごとの手数料は課金されず、欧州企業です。サービスの品質に明確な改善が見られました:S3 操作が速くなり、サーバーエラーやタイムアウトの発生頻度も減りました。しかし残念ながら、時間経過とともに UpCloud のオブジェクトストレージのパフォーマンスも低下する傾向があり、すべての操作が遅延してしまい、タイムアウト制限に達することがありました。特に S3 DeleteObjects 操作は次第に遅くなるばかりでした。そのため、再度代替案を探し求めました。その際にも、自己管理型(セルフホスト)システムの検討を含めていました。

要件

現在(2026 年 4 月)のデータ使用状況は以下の通りです:

  • オブジェクト数:1,400 万件、容量:119 GB
  • オブジェクトのサイズは 100 バイトから 100,000 バイト(約 100 KB)までばらつきがあります。平均サイズは 8 KB です。
  • 平均で秒間に 30 回のアップロード操作があり、通常のスパイク時には 150 回/秒まで増えることがあります。
  • アップロードされたオブジェクトと削除されたオブジェクトの入れ替え(チェーン)が絶え間なく発生しています。

候補となるオブジェクトストレージシステムは、この使用負荷をサポートし、将来の成長を見込んで十分な余地を持っている必要があります。ありがたいことに、まだすべてを単一システムに容易に収められる規模であり、フルバックアップのような操作も比較的高速に行えます。数テラバイトという要件が必要になると、話は複雑になります。

  • 可用性と耐久性: Healthchecks.io の利用ケースにおいて、オブジェクトストレージはプライマリストアである PostgreSQL データベースほどミドルミッションクリティカルではありません。データベースがダウンすると、サービス全体が停止し、モニタリングアラートも出力されなくなります。一方、オブジェクトストレージがダウンしても、システム自体は機能したままですが、ユーザーがウェブインターフェースまたは API を通じて_ping_ボディを検証できなくなるだけです。一部の_ping_ボディを恒久的に失うのは望ましくありませんが、PostgreSQL データベースに入力されるデータの喪失と比較すれば致命的ではありません。
  • 遅延: 短いほど良いです。Healthchecks.io のコードには、HTTP リクエスト/レスポンスサイクル中に S3 操作を実行する箇所があります。個別の S3 操作で数秒かかってしまうと、ウェブサーバープロセスが窒息(チョーク)してしまいます。UpCloud を使用していた際には、遅い S3 操作が大問題に発展することを防ぐために、いくつかの負荷制御(ロードシェディング)ロジックを追加する必要がありました。

自己管理タイプの選択肢について

Minio、SeaweedFS、Garage のいずれかでローカル環境での実験を行いました。これらに対する主な反対理由は運用上の複雑さでした。「始め方」の手順に従えば基本的なクラスターを立ち上げるのは難しくありませんが、実稼働準備のセットアップにおいては最低でも以下のことが必要となります:

  • クラスターノードのセットアップを自動化すること、
  • 更新手順を理解し、テストすること、
  • 故障したクラスターノードを置換する手順を理解し、テストすること、
  • クラスター固有の健全性に関するモニタリングとアラート設定を行うこと。

私が一人のチームであり、すでに自己管理型の Postgres、自己管理型 HAProxy ロードバランサー、自己管理型メールシステムを運用しているため、もう一つ意義のあるシステムの責任を負うのは避けるに越したことはありません。可能な限りシンプルでシンプルなものを選ぶのが望ましいです。

Versity S3 Gateway

Versity S3 Gateway は、ローカルファイルシステムを S3 サーバーに変換します。S3 PutObject 操作はファイルシステム上の通常ファイルを作成し、GetObject 操作は通常ファイルを読み取り、DeleteObject 操作はファイルを削除します。メタデータの格納に別のデータベースを必要としません。バックアップツールを使うことで、いつでもバックアップを取得できます。アップグレード手順も単一のバイナリ置換と systemd サービスの再起動だけで済みます。Go で書かれており、活発に開発が行われています。私が発見して報告したバグについても、わずか数日で修正されました。

Versity S3 Gateway とファイルシステムを裏付けストレージとして用いる際の最大の明らかな留意点は、もちろん可用性と耐久性です。オブジェクトは単一システム上に存在するため、事前に警告なしにどのタイミングでシステムが故障する可能性があります。このシナリオに対して準備しておく必要があります。

セットアップについて

2026 年 3 月、Versity S3 Gateway を採用した自己管理型のオブジェクトストレージ環境への移行を完了しました。

  • S3 API: 専用サーバー上で動作し、プライベート IP アドレスをリスニングします。アプリケーションサーバーは Wireguard トンネルを通じてこれと通信します。
  • ストレージ: オブジェクトはサーバーのローカルドライブ(RAID 1 構成の 2 つの NVMe ドライブ)に格納されます。
  • ファイルシステム: オブジェクトは Btrfs ファイルシステム上に格納されています。Btrfs を使用することで、tiny ファイルを大量に保存する場合でも ext4 の場合のように inode 不足の問題がないという利点があります。
  • 同期: 2 時間に一回、rsync プロセスが追加および削除されたファイルをバックアップサーバーへ同期します。
  • バックアップ: 1 日に一度、バックアップサーバーがフルバックアップを取得し、暗号化してからオフサイト(別所)に保存します。過去 30 日分のフルダイトリ backups を維持しています。

このセットアップによれば、オブジェクトストレージサーバー上の両ドライブが同時に故障した場合でも、まだバックアップされていない_ping_リクエストボディの最大 2 時間は失う可能性があります。これは通常通り、追加の複雑性の代わりに向上させることも可能です。

結果について

自己管理型オブジェクトストレージへの切り替え以降、S3 操作の遅延は改善しました:

  • オブジェクトストレージへアップロードを待機している_ping_ボディのキューが縮小しました。
  • まだ可用性上の問題は発生しておりませんが、新しいシステムは数週間程度しか稼働していません。
  • データサブプロセッサーのリストからエントリーが一つ減っています。

コストの方は増加しました:追加の専用サーバーをレンタルする費用は、マネージド型のオブジェクトストレージサービスで約 100 GB を保存するコストより高くなります。しかし、改善されたパフォーマンスと信頼性を考えればその分だけの投資です。

新しいシステムについては慎重だが楽観的な態度をとっており、全体として古いシステムよりも向上していると考えています。ただし、よりバランスの取れたトレードオフを持つシステムを見つけたら、再度移行することも開かれていることを付け加えておきます。

ご読感ありがとうございました。モニタリングをお楽しみください。 — Pēteris

同じ日のほかのニュース

一覧に戻る →

2026/04/18 0:04

クロード・デザイン

## Japanese Translation: Anthropic は今日、研究プレビュー段階で一般公開された新しい AI ツール「Claude Design」を発表しました。このツールは、進化した Claude Opus 4.7 vision モデルを基盤としており、テキストやドキュメントを瞬時に視覚デザインに変換する機能を備えています。以前では 20 つ以上のプロンプトが必要だった作業フローをわずか 2 ステップへと大幅に簡素化することで、プロトタイプ制作を容易にします。ユーザーはテキストで要件を記述するか、DOCX、PPTX、XLSX ファイルをアップロードし、Claude が最初の視覚版を作成して改善の余地を残します。オンボーディング時に既存のコードベースに直接統合され、チーム向けデザインシステムを自動的に構築するほか、デザインファイルを读取して共有標準を策定します。 本ツールにはカスタムスライダーやインラインコメントなど、精密な微調整制御に加え、組織範囲での共有機能、プライベートリンク、編集アクセス権、グループチャットといった新たなコラボレーション機能も提供されます。デザインは Canva への完全編集可能なファイルとしての直接エクスポートが可能で、あるいは PDF、PPTX、HTML、社内 URL へも代替的にエクスポートできます。バンドルは Claude Code のための直接実装用としても保存されます。これは、現実的なインタラクティブプロトタイプやワイヤーフレームからピッチデッキ、マーケティング素材、3D 要素など先端デザインに至るまでの用途をカバーします。 現在、claude.ai/design で利用可能です。本サービスは現在の研究プレビュー段階ですが、一日中急速に拡大しており、Pro、Max、Team、Enterprise サブスクリプションのすべてで利用可能になっています。特に、Enterprise ユーザーではデフォルトで機能がオフになっているものの、管理者が Organization 設定からこれを有効にすることで、アクセス管理を好みに合わせて行うことができます。この進歩により、コードを書かずに複雑な素材を作成することが可能となり、デザインサイクルが加速するとともに、ワイヤーフレームからプロダクションまでの移行プロセスにおいてクリエイティブワークフローと開発者ツールを統合することで、そのプロセスが合理化されます。

2026/04/18 6:38

FIL-C の簡略化モデル

## Japanese Translation: Fil-C は、既存の不安全な C/C++ コードベースをメモリ安全性を備えた実装に改修することを目的とした革命的ツールであり、手動による書き換えを必要としません。それは、簡略化されたモデルではソースコード、または生産環境版では LLVM IR を自動的に変換することで達成され、各関数内のポインターにメタデータレコード(`AllocationRecord*` 変数)を付与します。これらのレコードは、可視データ、境界アラインメント用の非公開バイト、および長さ情報を追跡し、参照解除やポインター算術といった標準的な操作を自動的に境界チェックを備えた操作へと書き換えることを可能にします。 このシステムは、標準ライブラリ呼び出しを Fil-C 版(例:`filc_malloc`)で置き換えにより配列を明示的に処理し、かつ廃棄された非公開メタデータオブジェクトの解放にはガバージコレータが担当するというハイブリッドアプローチによってメモリライフサイクルを管理します。これは `AllocationRecord` インスタンス自体が直接子配列を解放しないためです。スタック操作によるエラーを防ぎつつ安全性を保証するため、ローカルスコープからアドレスが流出する変数は自動的にヒープ割り当てに昇進されます。 未確認のレガシーコードベースに対する安全な橋渡しとしての位置づけを持つ Fil-C は、 unsafe ポインター交換を関数呼び出しを超えて防止するというユニークなポインター所有性の性質を持ち、積極的な最適化および並行型ガバージコレータを通じて典型的なメモリ安全性ペナルティを軽減します。最終的に、AddressSanitizer による強力なコンパイル時の安全性保証を提供すると同時に、産業界が既存の大規模コードベースを安全にし、Zig などにおける安全なコンパイル時評価を活用することを可能にします。

2026/04/18 3:17

『全ての 12 人の月面歩行者は、火薬のような匂いのする塵から「月じんかぜ」に苦しんだ(2018 年)』

## 日本語訳: 月面の塵は宇宙探査にとって二重の現実をもたらします:それはアストロノーツにとって即座に命を脅かす危険であると同時に、将来的な植民地にとっては貴重な資源でもあります。主な危険性は、その独自の物理的特性に由来します。やわらかい地球の塵とは異なり、月面の粒子は鋭く研摩性のあるケイ酸塩粒であり、太陽放射と大気による侵食の欠如のため静電的に帯電したままです。これらの小さな棘状の粒子(人間の髪の毛の約 50 倍小さいもの)は、地球重力の 1/6 の環境でも数ヶ月間浮遊し、表面より高く漂浮しながら装備に侵入し、さらに人間肺の奥深くまで到達します。史上 12 人の月面を歩いた宇宙飛行士すべて(其中包括アポロ 17 号のハリーソン・シミュット)によって記録されているように、露出は「月の枯草熱」と呼ばれる症状——喉の痛み、涙目、くしゃみ、鼻閉塞(時に数日続くものも含まれる)——および肺細胞や脳細胞に損傷をもたらす可能性のある長期的毒性を引き起こしました。また、この塵は宇宙船内部で独特な火薬のような燃えた臭いを放ちます。 これらのリスクを安全に研究するために、研究者らはドイツで粉砕された丸みを帯びた火山岩シミュラントを使用して、鋭く有毒な月面粒子への曝露なしに機器故障をモデル化しています。カリフォルニア大学の NASA アストロノート・キム・プリスクを含む 12 人の科学者による野心的なプログラムで、月面塵の毒性リスクが推定されています。生物学者のエリン・トランフィールドは、火山岩を粉砕することで鋭い縁を取り除き、より安全なシミュレーションが可能になると指摘しています。科学顧問のアイドアン・カウリーは有望な応用として、月面土壌を加熱して居住用のレンガを生産したり、レゴリットから酸素を抽出して有人ミッションを維持したりすることを挙げています。同時に、ESA アストロノート・アレクサンダー・ゲーストは減重力下での肺の健康を追跡するための「気道モニタリング」実験を行い、将来の持続可能な月面帰還を支えています。並行して、ESA はオランダのエウレカ研究所内で月面資源に関するワークショップを開催し、これらの機会への研究を推進するとともに、この独自の環境がもたらす重大な健康リスクを軽減することを目指しています。