システム開発

本番環境(プロダクション環境)へのデプロイをスムーズにする方法  (パート2)

本番環境のデプロイをスムーズにするために注意すべきことがあります。

例えばバックアップや自動展開ツールを使用するなど…。

この記事ではそんな本番環境へのデプロイをスムーズにする方法について解説していきます。

  • PHPを使って構築をしたい方
  • Webサイト構築の具体的な手法が知りたい方

これらに当てはまる方におすすめの記事となっています。この記事を読めば、ソフトウエア開発の際に本番環境のデプロイで苦労することが無くなりますよ。

ちなみに、準備編に関してはこちらの記事で解説をしています。

展開する前にバックアップすることを心がけましょう

コードを本番環境に展開する中に何が起こり得るかを100%予測することはできません。本番のデータを失ったら、顧客からの契約が取り消し、訴えられるまで追い込む会社があります。

リスクを防ぐためには、新しいコードバージョンをデプロイする前にすべてをバックアップすることを習慣にしてください。

また、バックアップ中にユーザーがデータを生成しないように、バックアップする前に保持モードに切り替えることを忘れないでください。

維持モードになりたくない場合は、ゼロダウンタイムという方法も選択肢の一つになります。

バックアップが完了したら、バックアップファイルを安全な箇所を保存してください。さらに、火災・サーバーの障害・サーバーの攻撃などの対処法として、定期的なシステムバックアップをすることもお勧めします。

しっかり調べてから、環境を準備する

展開される環境を把握しましょう

MacOSまたはWindowsでのアプリケーションの開発は一般ですが、運営環境(本番環境)はBSDやLinuxなどの別のOSである可能性があります。カーネルからユーティリティソフトウェアまで、さまざまなものがあります。

本番環境を把握すると、アプリケーションの実行時にデバッグが容易になります。

本番環境を実行するために仮想サーバー(VPS)を使用している場合は、ホスティングソフトウェアがインストールされていると簡単ですが、ソフトウェアバージョンの選択、互換性などはややこしい問題になってしまいます。

数年前、本番環境へのアプリケーションのデプロイは複雑でした。

環境は仮想化(仮想化)またはコンテナー化(コンテナー化)されていないため、ソフトウェアバージョンとの非互換性がある可能性が非常に高くなります。

アプリケーションをデプロイする前に、それらの使用方法と操作方法を把握しなければなりません。 AWSのプラットフォームで運用するための証明書を持っているのはそのためです。

すべての卵を一つのカゴに入れるな

ステムを1台のサーバーのみで実行することは、すべての卵を一つのカゴに入れるようなものです。何かのきっかけで急にサーバーが障害が発生してしまうとシステム全体が利用できなくなってしまいますね。この現象は「単一障害点」と呼びます。

この問題を解決するために、サーバー負荷分散技術を利用します。代表的ものとしては、ロードバランサー、キープアライブ、クラスタリング、レプリケーションなど。

システムの各部分は個別にスケーリングされます。たとえば、AWSを使用する場合、RDSと呼ばれるMySQLを実行するための別のサービスを購入できます。

このサービスを使用すると、MySQLを別のサーバーで実行でき、定期的なバックアップサポートできます。さらに、世界中のCDNを使用でき、アプリケーションシステム(PHP、Nodejs、Nginx … )と独立的にスケールアップできます。

同様のサービスを購入してインストールすることはできますが、MySQLをできるだけ迅速にスケーリングする場合は少し難しくなります。

開発環境と本番環境の同期をしないで

「開発環境と実環境は同期すべきだ」という説を多くの人が信じていますが、これは必ずしも正しいとは限りません。

開発・テスト・および本番環境は常に異なるので、 考慮しないままで同期すると問題が発生する恐れがあるからです。

たとえば、Dockerを使用してシステムをデプロイする場合、イメージに多数のツールとライブラリがインストールされていることがわかります。 本番環境で実行する場合、これらは実際には必要ありません。スペースを浪費し、それらをビルドしようとすると、デプロイプロセスでエラーが発生してしまいます。

ソースコードをパッケージ化する。 (ビルドアーティファクト)

PHPでは、ライブラリとクラスをソースコードにインストールして、ソースコードをパックします。ベンダーディレクトリもソースコードに従ってパッケージ化されていることを確認してください。本番環境にコードが展開されたら、それ以上何もインストールしません。

これは、エラーの原因となる間違ったバージョンの更新を回避するのに役立ちます。また、展開するたびにライブラリを再インストールする必要がないため、展開を迅速化するのに役立ちます。

サーバーに外部インターネット接続がない場合にも役立ちます。 CI / CDを使用している場合は、AntやPhingなどのビルドツールを使用して、パッケージをしてみてください。より高速になります。

パッケージ化されたソースコードをストレージツールに転送します。(Ship/transform artifact)

コンテナー技術を使用することで、コードをイメージに直接パックし、それをレジストリーに転送することができます(ソースコードを保護するために非公開にする必要があることに注意してください)。

バージョニングもサポートしているため、アプリケーションバージョンにデプロイする必要があるイメージを選択できます。

たとえば、WordPressはコンテナ化されたPHPソースコードです。「docker pull wordpress」を使用して最新バージョンのWordPressをダウンロードし、ややこしいインストールを行わなくてもすぐに実行できます。

小さく軽量なイメージを使用して、本番環境で実行しましょう。 たとえば、ubuntuの代わりに、Alpine linuxを使用するなど。 これにより、画像のサイズが数百MBから数十MBに縮小されます。 これは、迅速に展開するのにも役立ちます。

本番イメージでは、ソースコードの実行できるための必要なアプリケーションのみをインストールしてください。なぜかというと、各アプリケーションのインストール ことでイメージサイズが大きくなるためです。たとえば、PHPを実行する場合、php-fpmをインストールするだけで十分だ。composer・wget・aptなどのインストールは必要ありません。

パッケージ化されたソースコードを実行します。 (アーティファクトを実行)

それでは、パッケージ化されたソースコードを実行してみましょう。実装コマンド:

docker pull <イメージ名>

docker run <イメージ名>

分散環境におけるコンテナーの運用管理の場合はDocker Swarm、Kubernetesなどのコンテナーマネージャーツールをお勧めです。

システムの制限を把握しましょう

システムの制限ことが気にしない人はほとんどいないと思います。おそらく大規模なシステムで作業したことがないためか、そうしたとしても、「サーバーはCoderよりも安い」とよく言われるためです。

ただし、システムの制限を理解することは、システムのスケーリングを考慮するまでに、新しい機能を展開するときにサーバーの負荷容量を事前に計算するのに役立ちます。

たとえば、PHPプロセスは最大25MBのサーバーRAMを使用して作成されました。各リクエストは200msで行われるため、1秒で1つのプロセスが5つのリクエストを同時に処理できます。サーバーの2GB RAM = 2048MBの場合、システムはオペレーティングシステムと他のソフトウェアに512MBを使用すると想定としたら、残り1536MBが最大62のプロセスを作成できます。

したがって、平均して、5×62 = 310リクエスト/秒を処​​理できます。この数に驚かれる方も多いと思います。それはあなたが想像しているよりも少し少ないと思うでしょう。

上記の例から、下記の二つことを心がけましょう

  • リクエストの処理速度が速い場合、処理されるリクエストの数は多くなります。
  • いくつかの簡単な計算を通じてシステムの限界を知ることで、本番環境に展開する前にアプリケーションのパフォーマンスを測定できます。

注意:PHPが占有するプロセス数とメモリを設定できるので、最適なパフォーマンスを達成するには、リソースの不足や冗長を回避するために事前に計算してください。

上記の例には、ただRAMパラメータのみの計算方法です。CPU、ネットワーク、ディスクI / Oなど、他にも多くのパラメーターも慎重かつ詳細に計算する必要があります。

自動展開ツールを使用しましょう

自動展開ツールを選択するときは、次のような条件を考慮する必要があります。

  • ビルドツールとビルドプロセスをサポートできるか。
  • 自動化と手動展開をサポートできるか。
  • ロールバック戦略をサポートできるか。

PHPには、GitlabCI、Jenskin、Deployerなど、使用できます。

展開するときにチーム全員が待機することを確保する

システムを展開するときに誰かのコードのせいでエラーが発生場合、この人が現場にいないと危険です。プロジェクトを把握し、展開中および展開後に発生する問題を対応できる人がいることを確認してください。

まとめ

この記事では、本番環境(プロダクション環境)へのデプロイをスムーズにする方法として、4つの注意するべきことを紹介していきました。

  • 展開する前にバックアップをする
  • しっかり調べてから、環境を準備する
  • 自動展開ツールを使用しましょう
  • 展開するときにチーム全員が待機することを確保する

これらに気をつけてデプロイを行っていきましょう。


PHPの開発を外注してみるのはいかがでしょうか。 dehaソリューションズではオフショア開発によって低コストで迅速な開発をサポートしています。

PHP開発に関して詳しくお話を聞きたい方、無料お見積りをしたい方はこちらからご気軽にお問い合わせください。

▼ dehaソリューションへの簡単見積もりの依頼はこちら

Van Nguyen

Recent Posts

システム開発のライフサイクルとは?主要な開発フェーズと代表なモデルを解説

ビジネスや社会のあらゆる場面でシステムが欠かせない現代において、システム開発を効率的かつ確実に進めるための枠組みとして「システム開発ライフサイクル(SDLC:System Development Life Cycle)」が存在します。 SDLCは、システムを企画・開発・運用・保守するまでの一連の流れを定義したもので、開発プロジェクトを成功させるための道しるべといえます。 この記事では、システム開発ライフサイクルの基本的な考え方と、主要な開発フェーズ、さらに代表的な開発モデルについて解説します。 システム開発を発注・管理する立場の方 IT人材が不足している方 システム開発ライフサイクルの具体的内容が知りたい方 これらに当てはまる方におすすめの記事となっています。これを読めばシステム開発を効率的に進める方法が丸わかりですよ。 (more…)

5 days ago

システム保守の費用相場は?費用を抑えるポイントも徹底解説

システム開発が完了した後、安定して稼働させるためには「システム保守」が欠かせません。 しかし実際に見積もりを取ると、費用が高いと感じる企業も多いのではないでしょうか。 この記事では、システム保守の費用相場を解説するとともに、コストを抑えるための具体的な方法を徹底的に紹介します。 これから保守契約を検討する方 すでに保守契約しているが見直したい方 システム保守の費用について知りたい方 これらに当てはまる方におすすめの記事となっています。これを読めばシステム保守にいくらかかるのかや、費用を抑えるためのポイントも丸わかりですよ。 (more…)

6 days ago

AI総合ソリューションで業務を革新。DEHAが届ける確かな信頼と価値

2017年の起業から今まで、DEHA SOLUTIONSが歩んできた9年間は、お客様と社員の皆様からのご支援とご協力なくしては語ることができません。心より感謝申し上げます。  私たちはこの間、ベトナムを開発拠点とするシステム開発企業として、日本国内のIT市場向け様々な課題に真摯に向き合ってまいりました。2019年に発表された経済産業省によるIT人材需給に関する調査によると、2030年の日本国内におけるIT人材は最大で約79万人が不足すると予測されています。この深刻な状況の中、多くのSIer企業様や中小・大企業様の開発パートナーとしては、高品質で開発及びソリューションを安定的に提供することで、日本のIT業界の成長を支える一翼を担っています。  >>関連記事:日本経済産業省によると2030年には最大で約79万人のIT人材が不足  近年、ビジネス環境は急速に変化し、DXの波が隅々にまで浸透することに加え、AI技術も全産業を席巻しています。DEHAマガジンでも度々記事を取り上げてきたように、現在AIは単なるトレンドではなく、未来の社会を形作る基盤となりつつあります。  そんな大きな時代の変化を捉え、私たちDEHA SOLUTIONSはこれまでの9年間で培ってきた豊富なナウハウで、AI分野に注力を決意しました。単なる技術ベンダに留まらずに、お客様にとって最も信頼性があるAI総合ソリューション開発パートナーとしては、共に課題解決及びビジネス発展にしていくことを目指してまいります。  (more…)

1 week ago

開発リソース不足を解決する5つ方法を徹底比較

開発の現場では「人が足りない」「スキルが合わない」「今すぐ増強したい」が日常茶飯事です。 そこでこの記事では、①オフショア開発 ②ニアショア開発 ③フリーランス・業務委託 ④SES ⑤社内のリソース強化(社員育成・ノーコード/ローコード・AI活用)の5つ手段を、スピード/コスト/品質確保/管理負荷/機密性/拡張性で徹底比較し、選び方の指針まで一気通貫で整理します。 開発を効率化させたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば開発リソースを確保するためのそれぞれの手段について、特徴がわかりますよ。 (more…)

2 weeks ago

【2025年版】ベトナムオフショア開発の人月単価相場

近年、IT人材不足が深刻化する日本市場では、オフショア開発の活用がますます一般的になっています。 なかでも、ベトナムは高い技術力とコスト競争力を兼ね備えた国として、依然として人気を維持しています。 この記事では、2025年最新のベトナムオフショア開発における人月単価相場を役割別に解説し、最新動向までを詳しくご紹介します。 ベトナムオフショアに興味がある方 開発コストを抑えたいとお考えの方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばベトナムオフショアの具体的なコストがわかりますよ。 (more…)

3 weeks ago

【2025年】円安がいつまで続く?オフショア開発に与える影響

2025年8月時点におけるドル/円(USD/JPY)の為替レートは、およそ ¥146.9です。 円安傾向は続いており、過去数十年のトレンドとも重なりつつ、依然として投資・政策動向から注目を浴びています。 この記事ではそんな円安に着目してオフショア開発に与える影響を見ていこうと思います。 オフショア開発を始めたい方 社内のIT人材が不足している方 開発効率を上げたい方 これらに当てはまる方におすすめの記事となっています。これを読めばオフショア開発に円安がどう影響するのかがわかるのはもちろん、いつ始めるべきかまで丸わかりですよ。 (more…)

4 weeks ago