NBM2

natural born minority

本番にDockerでアプリリリースした話〜ただし止む終えない事情において〜

本番にDockerでアプリリリースした話〜ただし止む終えない事情において〜

骨子

  • 特殊状況下にあって「Dockerで本番リリース」することで楽が出来たはなし
  • オフラインや「サーバが遠いところがある」場合、スタンドアロンでデプロイするのの「モデルケース」として

制約として「伝え聞いていた」もの

  • サーバは「このアプリケーション用に新しく買う」らしい
    • 利用者のLan内に置くらしい
  • サーバの管理は「自分たち」ではない
  • サーバは「インターネットに接続できない」
    • ただし「搬入前のセットアップ」はネットが在る状態でする
      • そのときに「自分たちで入れたいミドルを入れといて!」依頼は出来る
    • 「作業する人」や「アプリ利用する人」は「自分のPCからインターネットは見える」らしい
  • 「アプリをインストール(アップデート)」するのは、自分たち(POやデベロッパー)では出来ない
    • その人は決まっていて「Linuxなどに明るくない人」と伝え聞いている

うーん、やばそう

(開発畑として)狙いたかったこと

  • 言語やミドルのアップデートを「Dev側のコントロール下」にしたい
    • Java,Postgres,もそう
  • 環境構成ごと「出来る限りテスト可能」にしたい
    • 環境差異があっても「この中では動くだろう」というサンドボックスの作りと、それを手元でテストできるように
  • 「リリースバイナリをどっかに固めて置いて置く」で「数個のコマンドが書いてある手順書」で作業してもらうと、最新デプロイが出来る
  • 仕組みを「ヘビーにする」といくらでもできるので「最低限」をねらう
    • 手作業が「シンプルにする方法」なら自動にこだわらない

やったこと

  • Dockerイメージをzipで固めて持ってって、docker-composeで起動するようにした
  • Github(Private)の「releases」から落として展開、

TODO 構成図とか設計とか

思ったこと

  • 大したことないし「本番投入」といっても「一個のアプリをくるんで入れた」だけ
    • オーケストレーションやったり無停止リリースとかは狙ってないので「Dockerの利点」は限定的である
  • が、「SIerで社内システムを作ってる時」に良く直面した話よね…
    • 「あの時これがあれば…」というシチュエーション多い
    • ひょっとすると「社内システム」「業務システム」などに効果が絶大なんじゃ?
  • 「オフライン」「スタンドアローン」「なんか奥まったとこにあるもんに入れる」のモデルケースとして良いかも
    • Dockerの「再現性(環境差異のなさ)」は「安心」をくれる

オチ

  • 前日に「インターネットにつなごうぜ!そのほうがいいよ!」みたいになる
    • 前日にリリースプロセスを「curlおサーバ内から叩いて…」みたいに応急処置

それがわかってれば、もうちょっと違う設計にしたのに…

blog comments powered by Disqus