Infrastructure As Codeでモジュール化が難しいのはなぜなのか

IaC

Infrastructure As Codeにおいて、コードのモジュール化により再利用性を高めることが難しいと言われている。それはなぜなのかを考察する。 Infrastructure as Codeで痛い目あった人ってだいたいやりすぎてる気がする(偏見)。過度な抽象化とか共通化、公開さ…

TCP接続を集約表示するlstfにプロセス情報を表示するオプションを追加

lstfとは、Linuxサーバ上でホスト間コネクションを集約表示するツール lstf をつくった - ゆううきメモ で紹介しているように、netstatやssコマンドで大量のネットワーク接続情報が表示されるときに、オペレーターが目視できないという課題に対して、接続を…

ftraceとperf probeの環境構築

Linuxカーネル内の関数のコールグラフを表示したり、ソースコードの行指定をして変数の値を出力したりするといったようなトレーシングをするために、トレーサーを利用する。 Linuxカーネルのトレーサーには、ftraceやperf、eBPFなどがある。Choosing a Linux…

LinuxでTCP/UDPコネクション状態にプロセス情報を紐付ける方法

Linuxでは、/proc/net/*やNetlinkソケットを通じて、TCP/UDPのコネクション情報を取得できる。 しかし、ここで取得したコネクション情報は、コネクションを保有するプロセスに関する情報(pidなど)を含んでいない。 ssコマンドの--extendedオプションは、inod…

ネットワークアプリケーションの依存関係の自動抽出と可視化に関する論文

"Macroscope: End-Point Approach to Networked Application Dependency Discovery" という論文を読んだ内容をここでまとめておく。 Popa, L and Chun, B-G and Stoica, I and Chandrashekar, J and Taft, N, “Macroscope: End-point approach to networked …

Mackerelアンバサダーになりました

Mackerelの「大使」となり、無料で新機能や有料機能が利用可能なMackerelアンバサダーになりました。 これまでのMackerelへの個人的貢献として、次のようなOSS、ブログ、口頭発表がありました。 OSS mkrとmackerel-client-go、mackerel-agent Chef cookbook…

エッジコンピューティング調査 - アプリケーション

エッジコンピューティング調査 - 動機と分類 - ゆううきメモでは、下記のサーベイ論文を基にエッジコンピューティングの動機と、Fog Computing、Cloudlet、Mobile Edge Computing、Micro DataCenterの4分類についてメモした。 エッジコンピューティングが想…

エッジコンピューティング調査 - 動機と分類

研究所でデータセンターのあり方を見直して、新しいコンピューティングのあり方を提案していくぞという話をしており、先行技術としてエッジコンピューティングについて調査している。 次のサーベイ論文が、2018年ということもあり、最近のエッジコンピューテ…

2017年ストレングスファインダー

自分のストレングスファインダーの結果を参照し、行動を振り返ったり選択するケースが増えてきた。2017年5月の時点の結果。 上位 戦略性 最上志向 親密性 内省 着想 戦略性をもつ人は、色々なものが乱雑に置かれた状態から、最終目的に到達する最前の道を発…

TCP接続を集約表示するlstfでNetlinkにより実行速度が1.6倍になった

Linuxサーバ上でホスト間コネクションを集約表示するツール lstf をつくった - ゆううきメモ にて紹介したlstfのホスト上のTCPコネクション情報の取得処理において、/proc/net/tcpを読みだす代わりに、Netlinkソケットを利用することで、実行速度が1.6倍にな…

Redisベンチマーク: EC2 C4 vs オンプレミス Xen 4.4

1年半前ぐらいに社内でベンチマークしていた結果を公開しておく。オンプレミスからAWSへ移行するときの参考にした (Webサービスをデータセンター移行するときに必要となる技術要素 - ゆううきブログ] 環境 Linux kernel 3.16, Debian 8 Redis バージョン: 2.…

読書メモ: 「Designing Data-Intensive Applications」Chapter 1. Reliable, Scalable, and Maintainable Applications

感想 Chapter1は、本書のサブタイトルにもなっている、データシステム全体の非機能要件に関する用語(Reliability, Scalability, Maintainability)の定義をしている。 もうわかってるよととばしたくなるけれど、人に説明するときのリファレンス元として重宝す…

「喜嶋先生の静かな世界」

4年前に買ったのと同じ本棚が届いて、散らかった本を本棚に並べていると、以前になくしたと思っていた、「喜嶋先生の静かな世界」を発見して再読していた。 主人公は、研究室配属された大学生で、恩師である喜嶋先生との研究に没頭した生活が描かれている。…

GoバイナリのGitHubリリース: gobump + ghch + goxz + ghr

Go

最近は、GoバイナリのGitHubリリースにgobump、ghch、goxz、ghrを利用している。これらのツールを組み合わせることで、repairableな形でリリース作業を自動化できる。 GoバイナリのGitHubリリースに一般的に必要な一連のプロセスを分解すると、下記のように…

Linuxサーバ上でホスト間コネクションを集約表示するツール lstf をつくった

概要 netstatやssコマンドにより、あるホストと他のホストとのコネクションを一覧表示できる。しかし、Webシステムの場合、クライアントが並行接続するため、 同一ホストから複数のポートを介してコネクションを確立しているケースが多い。コネクション数が…

LinuxサーバでネットワークI/Oで刺さっている接続先を発見する

Linuxサーバの障害対応で社内で伝統的に使われているテクニック。I/Oで完全にブロックしているポイントを特定するノウハウ。 問題対応のため、怪しいプロセスをstraceしてみる read(2)やwrite(2)でブロックしていることを発見する read(2)やwrite(2)、connec…

DNS権威サーバの引っ越し手順メモ (BINDドキュメント)

DNS

だいぶ昔に同僚にBINDドキュメントを読むのがよいと言われたときに調べたことを社内wikiで発掘した。この手順では、NSレコードセットに新旧の権威サーバが含まれた中間状態を作ることになっていて、丁寧。実際は、JPRSのガイド に沿っていればだいたいうまく…

tcpdumpでMySQLサーバに流れてくるクエリをみる

社内のMySQLマスターのtcpdumpの様子。マスタ切り替えした後に切り替え先でクエリが流れているかをみる。単に3306ポートのパケットを流すだけでもよいが、接続確立に失敗しているがパケットは流れてくるという状況もあるので、SQL文が流れているかまでみるの…

論文 TKDE'17, Time Series Management Systems: A Survey

Cyber Physical Systems*1の文脈における時系列データベース(TSDB)のサーベイ論文。論文中では、TSDBをTime Series Management System(TSMS)と表現されている。 Stream Processing*2とApproximate Query Processing(AQP) *3 TKDEは、SIGMODやVLDBといったト…

論文 BTW'17, Survey and Comparison of Open Source Time Series Databases

[1]: B. Mitschang et al. 2017. Survey and Comparison of Open Source Time Series Databases. In BTW. slide どんなものか 全てのオープンソース時系列データベース(以下TSDB)の完全なリストと、人気のあるTSDBの機能リストを作成することが目的。 機械的…

論文 Middleware'17, Data-Driven Serverless Functions for Object Storage

[1]: Josep Sampé, Marc Sánchez-Artigas, Pedro García-López, Gerard París. 2017. Data-Driven Serverless Functions for Object Storage. In Middleware. [2]: Josep Sampé. zion. https://github.com/JosepSampe/zion 論文のPDFは http://2017.middlewa…

ウェブシステム内の待ち行列をMackerelで可視化してみる

この記事は、Mackerel Advent Calendar 2017の19日目の記事です。 前日は fullsat_ さんによる Lambdaを使ってMackerelのアラートをRedmineのチケットにする でした。 ウェブシステムの障害発生時に、どのコンポーネントの処理が滞っているかをざっくり知り…

詳解システムパフォーマンス 8章ファイルシステム メモ

今回も章末の練習問題をみながら、みんなで議論をしていた。 アプリケーションの I/O パフォーマンスを解析するときには、ファイルシステムのパフォーマ ンスの方がディスクパフォーマンスよりも大きな問題になる。ファイルシステムは、アプリ…

詳解システムパフォーマンス 7章「メモリ」メモ

しばらく輪読を休んでたけど、再開した。第7章「メモリ」。 章末の練習問題を見ながら、みんなで議論していた。 メモリのページとはなにか OSとCPUがメモリを管理する単位 仮想メモリとは何か 無限のメモリの抽象 メインメモリとスワップ領域を抽象化してい…

書籍「Mackerel サーバ監視[実践]入門」執筆成功

執筆成功と言いつつ、自分は元となった連載記事をいくつか書いただけで、書籍化にあたってはプロフィールを書く以外のことは何もしていません。気づいたら、書籍を初執筆していたことになりました。 書籍「Mackerel サーバ監視[実践]入門」を執筆しました …

Go言語をほぼ毎日書いている話 (序)

はてなの京都オフィスで開催された そうだ Go、京都。 - connpass にて、「Go言語をほぼ毎日書いている話(序)」というふわっとした話をしました。いわゆる Write Code Every Dayという活動ですね。 タイトルに(序)と付けているのは、書き始めてまだ5ヶ月程度…

mkr + peco + tmux + ssh

Mackerel Meetup #10 Tokyo のLT枠で「mkr + peco + tmux + ssh」というタイトルで話をしました。当日の発表スライドを以下に貼っておきます。 speakerdeck.com 話の内容は、tmux + ssh + Mackerel API を組み合わせたとにかくモダンなサーバオペレーション …

詳解システム・パフォーマンス 3章「オペレーティングシステム」輪読メモ

詳解システム・パフォーマンス 第2章「メソドロジ」メモ - ゆううきメモ の続き。今回は第3章「オペレーティングシステム」 システムパフォーマンス分析では、オペレーティングシステムとそのカーネルについての理解は必要不可欠だ。システムコー…

書籍「Designing Data-Intensive Applications」下読み

全体として何に関する本か ストレージとデータ処理技術に関する基礎概念について、原理と実践の両方の観点を通して、読者がdata-intensive applicationsを構築するための技術選択の意思決定を助ける本である。 この分野は、NoSQL、ビッグデータ、スケーラビ…

MySQLの同期レプリケーションで複数の更新クエリを1トランザクション内で発行すると速くなるケース

っていう話をいちりんちゃんこと id:ichirin2501 に聞いた。 MySQLで準同期レプリケーションまたは同期レプリケーションを使って、マスター・スレーブ構成で運用している場合、マスターはコミット後、スレーブが更新イベントを受け取ってログに書き込むまで…