最近の仕事では、コンテナ化を推進しています. あるサービスをコンテナ化するにあたって、参考にされるのはThe Twelve-Factor Appですが、原文でも邦訳でも各項目の解釈しづらいです. そこでもう少し抽象度を下げたチェックリストを書きました.

Containerization checklist

作成したチェックリストは以下になりますが、Gistでも公開しているのでそちらを参照するのが良いと思います.

Codebase

Dependencies

システム側にインストールされるパッケージのことを、便宜上Site packagesと呼ぶ. また、システム側にインストールされないGemなどのパッケージのことを、便宜上Vendoringと呼ぶ.

Config

Config

  • データベースなどのバックエンドサービスへの接続情報
  • AWSやTwitterなどの外部サービスの認証情報
  • ホスト名や環境ごとに異なる値

のようなものを指す.

Backing services

Backing servicesは、アプリケーションがネットワーク越しに利用する全てのサービスやアプリケーションを指す.

Build, Release, Run

Processes

Port binding

Concurrency

Disposability

Dev/prod parity

Logs

Admin processes

Ruby on Railsならrails db:migrateAdmin processesに該当する.

さいごに

The Twelve-Factor Appをベースにチェックリストを作りましたが、本番環境で動作させるためにはまだまだ足りないです. また今回は抽象度を少し下げましたが、各サービス固有のドメインについてのチェックリストまでには触れていません. 仕事で必要になる度にアウトプットをある程度まとめていくために