一瞬で起動しろ
アプリでもサーバーでもDBでも一瞬で起動しないものは良くない
なぜかと言うと起動処理に時間がかかるのは、起動処理の中に複雑な依存性が入っているか、その実行が遅いせいである
ロードが長いゲームは最悪だし、一瞬で起動しないDBは他のコンテナを待たせて迷惑を掛ける
HTTPサーバーは突き詰めると起動処理にはTCPのlistenしかしないので、1秒以内に起動するのが当たり前である
分散システムの場合こういう起動処理がとても複雑で起動が遅い
ElasticsearchやCouchDBのコンテナはシングルノードであってもまずもって1秒以内には起動しない
MySQLの起動も遅い。よく分からん処理をたくさんしている
docker-composeなどでAPIサーバとDBを一緒に起動した場合、間違いなくDBよりも先にAPIサーバーが起動してしまいエラーになったりする こういうのを避けるためにDocker環境では依存するサービスを待つというプラクティスが必要になってくるのだが、これもすべてのサーバーが1秒以内に起動すればこういうことは気にしなくて良くなる
DB系のサーバーの起動が遅いのはその処理内容もそうだが、起動自体が稀で再起動が必要な場合もする側がフェイルオーバーさせるだろという楽観的な考えからであるように思う
CIやコンテナの時代になってDBやサービスも一日に何回も違う環境で起動させられることが当たり前になった今起動の速さと安定性は必須機能であるような気がする
個人的に凄いと思ったのはRedisコンテナは本当に一瞬で起動してエラーも全然吐かないということ その設計と機能のシンプルさ所以だろうと思ったのであった