第2部 本番環境への移行
本番環境に入れる必要が出るまでは、全てが楽しい遊びだ。
サイトの最初のバージョンをデプロイする時が来た。 準備が整うまで待っていると、結局遅すぎるという話だ。
サイトはユーザビリティがあるか? 何もないよりはマシか? リストは作成できるか? はい、はい、はい。
いや、まだログインはできない。 いや、タスクを完了済みにはできない。 でも、そんな機能は本当に必要か? 別に必要ない——そしてユーザが実際にサイトを手にした時、何をしようとしているか確信を持つことは決してできない。 ユーザはタスクリストに使いたいと思っているかもしれないが、 実は「フライフィッシングの名所トップ10」リストを作るのに使いたいのかもしれない。 そんなリストに「完了マーク」機能なんて必要ない。 公開してみなければわからない。
これから数章かけて、実際にサイトを 稼働中のウェブサーバにデプロイしていく。
この部分は飛ばしたくなるかもしれない——難しい内容が多く、 自分が求めていたものとは違うと思うかもしれない。 だが、ぜひ挑戦してみることを強く勧める。 本書で最も満足している章の一つであり、 多くの読者が「最後までやり抜いて良かった」と 私に連絡をくれる部分だ。
サーバへのデプロイを経験したことがないなら、 この作業は未知の世界を解き明かすことになる。 自分のサイトが実際のインターネット上で稼働しているのを目にする感覚は、 何にも代えがたいものだ。 「DevOps」みたいな流行りの言葉で名前付けすれば、 その価値を納得できるかもしれない。
デプロイの危険地帯
本番ウェブサーバへのサイトデプロイは厄介な話題だ。 「俺のマシンでは動くんだけど!」という嘆きの声がよく聞こえる。
デプロイにおける危険領域には以下のようなものがある:
- ネットワーク
-
自分のマシンから離れると、ネットワークの問題が発生する: DNSがドメインをサーバの正しいIPアドレスにルーティングしていることを確認し、 サーバが外部からのトラフィックをリッスンするように設定されていることを確認し、 正しいポートを使用していることを確認し、 途中のファイアウォールがトラフィックを通すように設定されていることを確認する必要がある。
- 依存関係
-
ソフトウェアが依存するパッケージ (Python、Djangoなど)がサーバにインストールされ 正しいバージョンであることも確認する必要がある。
- データベース
-
権限やパスに関する問題が発生する可能性があり、 デプロイ間のデータ保持には注意が必要だ。
- 静的ファイル(CSS、JavaScript、画像など)
-
Webサーバは通常、これらを提供するために特別な設定が必要だ。
- セキュリティと設定
-
パブリックインターネットに公開したら、 セキュリティへの配慮がさらに重要になる。 ローカル開発では非常に便利な設定(Djangoデバッグページなど)も、 本番環境では危険だ(トレースバックでソースコードが露出するため)。
- 再現性とローカル開発環境と本番環境の差異
-
以上の全てが、ローカル開発環境と本番環境における動作の違いを生む。 我々は「自分のマシンで動作する」状態を、可能な限り本番環境で再現したい(逆も同様だ)。そうすることで「自分のマシンで動作する」が「本番環境でも動作する」を意味すると、最大限信頼性を持てるようになる。
この問題への一つのアプローチは、サーバを用意し、 全てを手動で設定・インストールし、 動作するまでいじくり回し、 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access