なむnumb_86
ソフトウェアエンジニア
ソフトウェアエンジニアです。
...
Kube Resource Orchestrator を使って Kubernetes のリソースを抽象化して提供する
Kube Resource Orchestrator ( kro ) は Kubernetes のリソースを管理するためのツールで、複数のリソースをひとつのまとまりとして定義したり、リソースとリソース
...
io_uring の SQPOLL でカーネルスレッドにポーリングさせる
io_uring には SQPOLL という機能があり、これを有効にしておくと、SQ ring に SQE を載せるだけでカーネルがそれを自動的に処理してくれるようになる。 この記事では SQPOLL
...
io_uring を使った I/O 処理の基本的な流れ
io_uring は I/O 処理を行うための Linux の仕組みのひとつで、一度のシステムコール呼び出しで複数の I/O 処理をカーネルに依頼できるのが特徴。 この記事では io_uring の初
...
権限借用(Impersonation)で dbt や AI 利用時の権限設計の幅を広げる
Google Cloud には権限借用( Impersonation )という仕組みがあり、これを使うと、「プリンシパル(ユーザーアカウントやサービスアカウント)が一時的に他のサービスアカウントになり
...
システムコールとステートマシンから見る TCP 通信のライフサイクル
TCP 通信に関する処理は通常、カーネルが行う。TCP 通信を行うための機能がカーネルに実装されており、ユーザー空間のプログラムは各種システムコールを呼び出してカーネルに処理を依頼することで、 TCP
...
Rust の libc や nix クレートで errno を確認する方法
カーネルは、発生したエラーなどの内容を番号で表現しそれを伝える仕組みを持っている。 libcという C のライブラリを通してシステムコールを呼んだ場合、カーネルが返した番号がerrnoという変数にセッ
...
dbt を実行しているプロセスで Python model を処理する方法
dbt では SQL 以外に Python でも model を書くことができるが、 Python コードの処理は dbt が行うわけではない。 Dataproc クラスタで Python model
...
「手段」ではなく「課題」から考え取り組むデータパイプラインの信頼性改善
私は現在 HERP のデータプラットフォームの構築や運用を行っているが、このデータプラットフォームは以前、信頼性や障害検知に大きな問題を抱えていた。 以下の記事で少し触れたように、ニーズを満たすために
...
ファイルディスクリプタのノンブロッキングモードについて
ファイルディスクリプタは様々な「フラグ」を持っており、各フラグが有効かどうかでプログラムの挙動が様々に変化する。 この記事の内容は以下の環境で動作確認を行った。 $ lsb_release -a No
...
『入門 監視』を読んだ
IT システムの監視についての入門書。 www.oreilly.co.jp 「問題が起きていることが分かるようにする」と「問題の原因を調査できるようにする」を明確に分けていることが印象に残った。 そ
...
重要な Pod の優先度を設定することでスケジューリングされやすくする
Kubernetes の Pod にはpriorityという属性があり、その名の通り Pod の優先度を示している。 priorityを高く設定することで、 Node へのスケジューリングが行われやす
...
I/O 多重化で TCP サーバの並行処理能力を改善する
I/O とはデータの入出力のことであり、ネットワークプログラミングの文脈では「ネットワーク経由でのデータの送受信」を指すことが多い。そして、サーバが複数のクライアントの対応を同時に行う場合、複数の I
...
素朴なイベントループを書いて epoll を理解する
epoll は様々な「イベント」の発生を検知できるようにするためのシステムコール。これを使うことで、「リスニングソケットに接続要求が来た」「ソケットにデータが到着した」などのイベントの発生を、カーネル
...
Kubernetes クラスタでホスティングしている Metabase が出力するログを JSON 形式にする
ウェブアプリケーションのモニタリングやオブザーバビリティを実現していくための要素のひとつに、ログがある。 しかしアプリケーション(今回の場合は Metabase)が出力するログが適切に構造化されていな
...
Pod が配置される Node を Taint と Toleration で制御する
Kubernetes には Taint と Toleration という仕組みがあり、これらを使うことで Pod が配置される Node を制御できる。この Node にはこの Pod しか配置を許可
...
『WEB+DB PRESS Vol.55』の「モダンネットワークプログラミング入門」を読んだ
ネットワークプログラミングの基本的な用語や概念、 I/O 戦略の代表的なパターン、について書かれた特集記事。 15 年前の特集記事で、執筆者は古橋貞之氏。 ちなみにこの特集の次のページでは伊藤直
...
短いサイクルで意思決定を繰り返してデータガバナンスを漸進的に改善していく
自分の現在の主業務はデータプラットフォームの構築や運用だが、その文脈でここ数ヶ月取り組んでいたことのひとつに、データガバナンスがある。 データを利活用したい人がより安全かつ便利に利活用できるようにして
...
Google Cloud のデータプロファイル機能で BigQuery のデータを継続的に検査する
Google Cloud の Sensitive Data Protection には「データプロファイル」と呼ばれる機能がある。 データプロファイルは Google Cloud コンソールから操作す
...
『ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道』を読んだ
いわゆる「システムプログラミング」の入門書。 本当に初学者向けの入門書であり、カーネルとは、システムコールとは、というところから説明していく。 ファイルシステム、プロセス、ストリーム、が本書の軸にな
...
データ領域の Platform Engineering と「データ利活用体験」の向上
ソフトウェア開発をよりよいものにしていくための取り組みのひとつとして Platform Engineering という考え方がある。 私は現在データプラットフォームの構築や運用を行っているが、その名の