今日の記事

今日の記事

今日の記事

今日の記事

どうして複雑さを排除できないのか

Do We Worship Complexity?
です。Hacker Newsにピックアップされてました。

tl;dr

最後のtl;drまとめが良い。以降、オレオレ訳。

ソフト開発はとにかく複雑さとの戦いです。複雑さは即座に排除するのが最善でしょう。しかし不幸にも、複雑さが「崇拝」されちゃってるケースがままあります。意識的にも無意識的にも。それが結局、不必要に複雑なシステムになっちゃうわけです。

ちなみに「tl;dr」って意味自体わかってなくて調べたけど、「too long; didn't read」「長すぎて読まなかった」って意味で、要するに、「長すぎて読まない人向けにまとめます」ってことみたい。

全体を通して面白かったところメモ

  • コンウェイの法則と、パーキンソンの法則
  • 「我々の問題はAmazonGoogleより複雑なんだ」という言い訳。ディフェンシブだしプライド高すぎ。
  • 知らないうちに複雑さを「崇拝」しちゃうメカニズムがあるってことを、まず認識することが大事ですよ。

Dockerイメージを小さくするための3つの簡単な方法

3 simple tricks for smaller Docker images – Skills Matter – Medium
の記事です。 オライリーニュースレターで紹介されてました。

面白かった。

まず、ちょっとnodeの勉強になった。npmってこう使うんだ。へーw

で、"multi-stage Docker build" へー。へー。

1. レイヤをまとめると少し小さくできる

まず、マルチステージを使って、複数レイヤを1つにまとめることで、Dockerイメージのサイズを少し小さくできる。

2. distrolessを使って不要なレイヤを省く

GitHub - GoogleContainerTools/distroless: 🥑 Language focused docker images, minus the operating system.
!!!! これはいいじゃん。

へー。ふむふむ。ビルドは node:8 を使って普通にやって、 マルチステージの2つ目で、ベースを
gcr.io/distroless/nodejs
にする、って方法なのか。

上記Googlegithubには、
gcr.io/distroless/nodejs
は'experimental'て書いてるけど、
gcr.io/distroless/base
gcr.io/distroless/java
gcr.io/distroless/cc
はそうじゃないらしいぞ!それはすごい。

OSが全然ないので、sshしてbashとか走らせられないけど、裏を返せば、クラッカーも自由が効かなくて悪さしにくい、ってメリットもあると。
In other words, fewer binaries mean smaller sizes and increased security.
まぁ本番コンテナではデバッグとかあんましないはずだしね、とも。

Alpineでより小さなイメージ

コンテナに入りたければ、んじゃ、Alpineはどうよ、ってことで、Alpineの紹介に続いてます。 Alpineは、より小さいけど、glibcじゃなくてmuslcなので、互換性に問題でるかもよ、と。Alpineでビルドしたものがglibcで走らないとか。

あなたにはどのベースイメージが向いてる?

んで、この記事の結論パート。

  • If you’re running in production and you’re concerned about security, perhaps distroless images are more appropriate.
  • If you’re concerned about size at all costs, then you should switch to Alpine-based images.
  • The vanilla base image is perfect for testing and development.

感想

なるほどなるほど。 いやぁ面白かった。

さて、僕は、実際の仕事で使うチャンスあるかな?

今日の記事