本番にDockerでアプリリリースした話〜ただし止む終えない事情において〜
本番にDockerでアプリリリースした話〜ただし止む終えない事情において〜
骨子
- 特殊状況下にあって「Dockerで本番リリース」することで楽が出来たはなし
- オフラインや「サーバが遠いところがある」場合、スタンドアロンでデプロイするのの「モデルケース」として
制約として「伝え聞いていた」もの
- サーバは「このアプリケーション用に新しく買う」らしい
- サーバの管理は「自分たち」ではない
- サーバは「インターネットに接続できない」
- ただし「搬入前のセットアップ」はネットが在る状態でする
- そのときに「自分たちで入れたいミドルを入れといて!」依頼は出来る
- 「作業する人」や「アプリ利用する人」は「自分のPCからインターネットは見える」らしい
- 「アプリをインストール(アップデート)」するのは、自分たち(POやデベロッパー)では出来ない
- その人は決まっていて「Linuxなどに明るくない人」と伝え聞いている
うーん、やばそう
(開発畑として)狙いたかったこと
- 言語やミドルのアップデートを「Dev側のコントロール下」にしたい
- 環境構成ごと「出来る限りテスト可能」にしたい
- 環境差異があっても「この中では動くだろう」というサンドボックスの作りと、それを手元でテストできるように
- 「リリースバイナリをどっかに固めて置いて置く」で「数個のコマンドが書いてある手順書」で作業してもらうと、最新デプロイが出来る
- 仕組みを「ヘビーにする」といくらでもできるので「最低限」をねらう
- 手作業が「シンプルにする方法」なら自動にこだわらない
やったこと
- Dockerイメージをzipで固めて持ってって、docker-composeで起動するようにした
- Github(Private)の「releases」から落として展開、
TODO 構成図とか設計とか
思ったこと
- 大したことないし「本番投入」といっても「一個のアプリをくるんで入れた」だけ
- オーケストレーションやったり無停止リリースとかは狙ってないので「Dockerの利点」は限定的である
- が、「SIerで社内システムを作ってる時」に良く直面した話よね…
- 「あの時これがあれば…」というシチュエーション多い
- ひょっとすると「社内システム」「業務システム」などに効果が絶大なんじゃ?
- 「オフライン」「スタンドアローン」「なんか奥まったとこにあるもんに入れる」のモデルケースとして良いかも
- Dockerの「再現性(環境差異のなさ)」は「安心」をくれる
オチ
- 前日に「インターネットにつなごうぜ!そのほうがいいよ!」みたいになる
- 前日にリリースプロセスを「curlおサーバ内から叩いて…」みたいに応急処置
それがわかってれば、もうちょっと違う設計にしたのに…
blog comments powered by