システム運用アンチパターン ―エンジニアがDevOpsで解決する組織・自動化・コミュニケーション

タイトルからしてこれは読まなくてはと発売前から思っていたのですが、色々と積読があり読み終わるまでに少し時間がかかってしまいました。オライリーから出ていますが原著はManningの「Operations Anti-Patterns, DevOps Solutions」のようです。

各章のタイトルがかなりキャッチーな感じだったのでもっと現場感のあるホラー系の内容を予想していたのですが、実際はそこまででもなく、内容はかなり真っ当なDevOps本でした。序盤はモニタリングやテスト、デプロイ、オンコールといった比較的現場レベルの課題、後半に進むにつれて情報共有、組織の文化といった話題にも及んでいきます。

個人的には「見ても状況が良いのか悪いのかわからないダッシュボード」というのがフフッとなってしまったのですが、これはDevOpsが浸透して開発メンバーが自分たちで運用していると逆に気付きにくいところかもしれないなあと思ったりしました。

書かれている内容は基本に忠実な感じなので、これからDevOpsを導入しようとしている場合にはよい参考書になるのではないかと思いますし、すでにDevOpsを実践している場合でも振り返りの意味で改めて読んでみると新たな気付きや更なる改善点が見つかるのではないかと思います。

ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ

原著も含めオンラインのレビューなどを見ているとなかなか評判の良い本書ですが、個人的には読んでいてちょっと感想に困るなぁ…という感じの内容でした。

というのもタイトルだけ見て勝手に勘違いしていたのですが、この本は「ソフトウェアアーキテクチャ」の本というよりは「ソフトウェアアーキテクト」の本なんですね。書籍の説明文にもちゃんと以下のように書かれていました。

ソフトウェアアーキテクチャとは、ソフトウェアシステムの成功に欠かせない重要な土台です。そのためソフトウェア開発者には、効果的なアーキテクチャを実現するスキルが求められます。本書は、そうした効果的なアーキテクチャを設計、構築、維持するアーキテクトになるために必要なスキルや知識を、現代的な視点から整理して包括的に解説する書籍です。 ソフトウェアアーキテクチャの定義から、アーキテクトの役割、モジュールや結合、アーキテクチャスタイルといったアーキテクチャ設計の基礎、チームやステークホルダーと効果的にコラボレーションしていくために必要なソフトスキルまで、さまざまなトピックについて実践的な例とともに説明します。

そんなわけでちょっと思ってたのと違ったというか…。

とはいえ、第I部のソフトウェアアーキテクチャの考え方、第II部のアーキテクチャカタログは経験に頼りがちなソフトウェアアーキテクチャ選定の際に体系的な指針を与えてくれるきっかけになるのではないかと思います。アーキテクチャカタログはパターン自体というよりはそれぞれのパターンの評価軸が参考になる感じかなと。第III部のソフトスキルなどの部分も実際のところ必要だよね…という感じではあるのですが、個人的にはもう少しソフトウェアアーキテクチャ自体を突き詰めた内容が読みたかったかなと思いました。

TrinoにおけるPostgreSQLのVARCHAR/CHAR型に対する範囲検索のプッシュダウンについて

TrinoはJDBC経由で様々なデータベースに接続できるのですが、PostgreSQLコネクタで以前はサポートされていたVARCHAR/CHAR型のカラムに対する範囲検索(<、<=、>、>=)のプッシュダウンがTrino 353以降廃止されていました。これはTrinoとPostgreSQLのCOLLATIONの違いが原因で、カラムの値によっては検索結果が期待したものにならないケースがあるためです。

github.com

そこで、以下のように明示的にCOLLATIONを指定してプッシュダウンする修正をTrino 365で取り込んでもらいました。

github.com

しかし、このプッシュダウンはオプションとなっており、Trinoのデフォルト設定では無効になっています。有効にするにはTrinoに以下の設定を追加する必要があります。

postgresql.experimental.enable-string-pushdown-with-collate=true

というのもPostgreSQL側でインデックスが張られていてもPostgreSQL側のCOLLATIONでインデックスが作成されているとプッシュダウンした場合にそのインデックスを利用することができないからという理由のようです(Trinoが指定するCOLLATIONでインデックスを作っておく必要がある)。個人的にはどっちにしろフルスキャンするんだからPostgreSQL→Trino間の転送量が減る分インデックスが使えなくてもプッシュダウンした方がマシなのではという気がしないでもないですが…。

実際にこのプッシュダウンが嬉しいケースは限られるかなと思いますが、もしTrinoからレコード数の多いPostgreSQLのテーブルのVARCHAR/CHAR型のカラムに対して範囲検索をしたいという場合はこのオプションの有効にすると速くなるのではないかと思います。前述のようにTrino用にインデックスを作っておくとより効果的です。

なお、最近のTrinoではJDBCコネクタでのプッシュダウンの強化(LIKE検索など)なども進められているようなので、PostgreSQLなどTrinoからJDBCコネクタ経由で接続可能なデータベースの検索パフォーマンスのさらなる向上が期待できそうです。

Trino/Prestoをdockerで動かしてみる

もう少しTrino/Prestoネタもブログに書いていこうかなというのと、普段テスト用途で古いバージョンのTrino/Prestoを手元で動かす際にdockerを使うことが多いので自分用のメモを兼ねて。

TrinoはDockerHubで公式のdockerイメージが公開されているので簡単にdockerで動かすことができます。イメージの使い方については以下にドキュメントがあります。

github.com

デフォルト設定で実行するだけならこんな感じ。

docker run --rm -p 8080:8080 --name trino trinodb/trino:371

起動後、以下のようにしてCLIクライアントで接続可能。もちろんlocalhostの8080ポートでWeb UIにもアクセスできますし、JDBCドライバなどで接続することも可能です。

docker exec -it trino trino

設定ファイルは /etc/trino ディレクトリに格納されているのでローカルで設定ファイルを用意しておきこのディレクトリにマウントすることで任意の設定で動作させることができます。

docker run --rm -p 8080:8080 -v <ローカルディレクトリ>:/etc/trino --name trino trinodb/trino:371

以下のディレクトリにデフォルトの設定ファイル群があるのでこれをベースに設定を弄ったりカタログを追加したりするとよいと思います。

なお、Trinoへのリブランディングされた350以前のPresto時代のdockerイメージについてはDockerHubから削除されてしまっているのですが、GitHub Container Registryにイメージがバックアップされています。互換性のチェックのために過去のバージョンを使いたいケースも多いので助かります。

docker run --rm -p 8080:8080 -v <ローカルディレクトリ>:/etc/presto --name presto ghcr.io/trinodb/presto:350

設定ファイルを配置するディレクトリは /etc/presto または /usr/lib/presto/default/etc になっています(後者が優先されます)。

docker run --rm -p 8080:8080 -v <ローカルディレクトリ>:/etc/presto --name presto ghcr.io/trinodb/presto:350

Fire TV Stickを買ってみた

最近買い物ブログが続きますが…。

以前からDAZNをPCやiPadで視聴していたりAmazon Primeにも加入していたのですが、業務用PCと私用PCで外部ディスプレイやキーボードの接続を切り替えるのが結構億劫だなぁと感じていたところ、Fire TV Stickがビックカメラで1000円引きで売ってたのとポイントもいくらか溜まっていたので物は試しと買ってみました(1000円引きセールはすでに終了しているようです)。

最初の設定が若干面倒なのと電源を別途取らないといけないので配線がごちゃごちゃしてしまうのが難点ですが、USBで電源供給できるTVであればTVだけで完結しそうですが、それでもごちゃごちゃしてしまう感が否めないし、ネット動画対応のTVだとハードウェアの陳腐化で製品寿命が短そうで悩ましいところ。USB-Cで接続できるTVとセットトップデバイスがあるといいのかも?

しかしPCでストリーミング見るときはPCを立ち上げたりディスプレイの接続を切り替えたりなどある程度準備が必要なので若干心理的障壁というか億劫になるところがあったのですが、リモコン操作だけで見られるのはやはり楽ですね。Amazon Prime Videoのコンテンツも豊富ですし、アプリを入れると海外ニュースを流しておけたりするのもいい感じです。これは確かに普通のテレビ番組は見なくなりそう…。

Sharkのハンディクリーナーを買ってみた

少し前の話なのですが、有効期限切れで失効しそうな家電量販店のポイントが結構あったので以前から欲しいと思っていたハンディクリーナーを買ってみました。

購入したのはSharkのEVOPOWERシリーズの最新モデルで、ハンディクリーナーの割に吸引力が強いというのと、このカラーのみフローリング用の延長ノズルが付属しておりハンディクリーナーとしてだけではなくコードレスの掃除機のような感じでも使えるというのが決め手でした。

実際に使ってみると延長ノズルは思ってたよりもチープでしたがなんとか使えるかなという感じ。一台で床から細かい部分の掃除までこなせますし、なにより思い立った時に気軽に掃除できるので、作業に煮詰まった時など気分転換に掃除するようになりました(掃除に現実逃避していると言えなくもない)。

使わないアタッチメントは充電台にセットしておけますし、普通のコードレス掃除機と比べて場所も取りません。延長ノズルだけは充電台にセットできないので充電中の置き場に困りますが…。軽量なハンディクリーナーということでバッテリーの持続時間も不安でしたが自宅を一通り掃除するには十分でした。

吸引力の強力なブーストモードは長時間使っていると発熱のせいか勝手に電源が落ちてしまうのがやや残念なところですが、不満な点はそのくらいで良い買い物でした。

Post Corona: From Crisis to Opportunity

ベストセラーになったThe FourのScott Gallowayさんによる続編的な書籍で最近日本語訳も出ていたのですが書店で原著を発見したのでそちらを読んでみました。

今作はより社会的な問題にフォーカスしており、後半かなりのページを割いて教育や政治の重要性について強く訴えています。もしかしてScott Gallowayさんは政治家を目指しているのではと思ってしまいました。

原著が発売されたのは2020年11月なので、現在までの間に世間の情勢も結構変わっているところもあり、The Fourと同様、今読むと答え合わせ的な部分もあるのですが、Netflixの苦戦を予想していたりさすがだなーと感じる部分もありました。ただ、本書で述べてされているようにパンデミックが社会が変わるチャンスになりそうかというと、どうもそうはならなそうな気配もありますが、果たしてこの先世の中どうなるでしょうか…。

ちなみにThe Fourのペーパーバックが字がめっちゃ小さくて読むのが辛かったのですが、今回は(読んだのはUK版ですが)普通サイズだったので助かりました。