Yak shaving day

今日はひたすらyak shavingしていた日だった。最近開発を始めたプロジェクトが本番環境がDocker 化する予定で、開発環境も本番環境と差異をなくすためにDocker化している。開発環境のDocker imageが何でも入りのモノリシックになってしまったため、Buildするのに多大な時間がかかるようになってきた。そこでDocker repositoryを自前で持ってBuild済imageをcacheし、それを使うことでBuild時間を短縮しようと考えた。

docker registry立てるだけなら簡単で、docker run一発で動く。まずはlocalで立ち上げて、それに対してpull / pushできることを確認し、そこまでは順調だった。

さて、共用サーバーにログインして、localでやった手順を流して同じように環境構築して、クライアントからアクセスするとうまくいかない。logを読むと、client側のdocker deamonはデフォルトでHTTPS通信するので、registry側もHTTPS通信するように設定する必要があるようだ。client側でHTTP通信させるようにすることもできるがそれだと、開発者全員にその設定強いることになるので、サーバーに側を正しく変更したいと判断。共用サーバーは社内だけで使ってるので、ホスト名はないのでオレオレCAを作成することに。オレオレCAなのでcertificate signed by unknown authority error。まぁそうだわなとcrtをclientに入れて…結局開発者に設定強いてしまい、振り出しに。

結構こういうの頻繁にあるのですが、どのように解決するのがいいのでしょうか?一日が終わって振り返ると、そもそも自前でDocker registry持つ必要があったのか?から始まって、色々と考えるわけです。

Yak shavingしている時は自分がループのハマっていることに気づきにくいことがあって、目の前の問題さえ解決すれば全て解決すると思いがちで、実際はその問題を解決すると次の問題が現れることはよくあります。私自身もその状態にはまらないために色々と指標があるのですがムキになると忘れがちになります。自戒ため、問題に直面した時の自分の指標をまとめておきます。

  • 解決する前に本当に今解決すべき問題なのか考える
  • 試行する前に、まずは何が問題で解決する手段はどのようなものがあるのか紙の紙の上もしくは、エディタに書く。頭の中で考えない。
  • 15分自分で考えて、思考してわからないときは人に聞く。ポモドーロテクニックや作業開始時刻を記録することでムキになってダラダラと試行しないように。

参考

イシューからはじめよ―知的生産の「シンプルな本質」

イシューからはじめよ―知的生産の「シンプルな本質」

ゼロ秒思考  頭がよくなる世界一シンプルなトレーニング

ゼロ秒思考 頭がよくなる世界一シンプルなトレーニング

umenon.com