システム開発

本番環境(プロダクション環境)へのデプロイをスムーズにする方法  (パート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

【2026年最新】IFS CloudとSAPを徹底比較|製造業に強いのはどっち?選定のポイントを解説

製造業を取り巻く環境は、ここ数年で大きく変化しています。原材料価格の高騰、サプライチェーンの不安定化、人手不足の深刻化、さらにはDXの加速など、企業にはこれまで以上に迅速かつ柔軟な意思決定が求められています。 こうした中で注目されているのが、企業の基幹業務を統合・最適化するERP(基幹業務システム)の再構築です。 その中で、多くの製造業が比較検討しているのが「IFS Cloud」と「SAP」です。いずれもグローバルで高い評価を受けているERPでありながら、その強みや設計思想は大きく異なります。 そのため、「どちらを選ぶべきか分からない」「自社に合うのはどちらなのか判断できない」といった悩みを抱える企業も少なくありません。 この記事では、そんなIFS CloudとSAPを「製造業」という視点から徹底比較し、それぞれの特徴や強み、導入時のポイントを分かりやすく解説します。 製造業の方 IFS CloudとSAPに興味がある方 グローバルERPの導入を検討している方 これらに当てはまる方におすすめの記事となっています。これを読めばIFS CloudとSAPの違いがわかるだけでなく、「どのような企業にどちらが適しているのか」がわかりますよ。 (more…)

1 week ago

【2026年最新】IFS CloudとDynamics 365の違いとは?機能・強みを比較解説

企業の基幹システムとして導入が進むクラウドERPの中でも、IFS CloudとMicrosoft Dynamics 365は世界的に高い評価を受けている代表的なソリューションです。 しかし、両者は同じERPでありながら設計思想や強みが大きく異なります。 この記事では、2026年時点の最新情報をもとに、IFS CloudとDynamics 365の違いを「機能」「強み」「向いている企業」という観点から徹底的に比較解説します。 IFS CloudやDynamics 365の導入を検討している方 社内のIT人材が不足している方 クラウドERPに興味がある方 これらに当てはまる方におすすめの記事となっています。これを読めばIFS CloudとMicrosoft…

2 weeks ago

【2026年版】製造業向けAI搭載グローバルERP:注目の次世代ソリューション6選

製造業におけるERPは、単なる基幹システムから「意思決定の中枢」へと進化しています。 特に2026年現在、AIの統合はもはやオプションではなく、競争力を左右する重要な要素となっています。 AIを搭載したERPは、従来の「可視化」から一歩進み、「予測」「最適化」「自動化」を実現し、企業の意思決定スピードと精度を飛躍的に向上させています。 この記事では、製造業向けに特化したAI搭載グローバルERPの中から、特に注目すべき6つのソリューションを徹底解説します。 AI搭載グローバルERPに興味がある方 製造業の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば最新版のAI搭載グローバルERPがわかるのはもちろん、製造業におけるERPの選び方まで丸わかりですよ。 (more…)

2 weeks ago

【2026年最新】製造業向けグローバルERPシステムおすすめ10選

製造業を取り巻く環境は、グローバル競争の激化、サプライチェーンの複雑化、そしてデジタル化の加速により大きく変化しています。 その中でERP(統合基幹業務システム)は、単なる業務管理ツールではなく、経営の意思決定を支える中核システムへと進化しています。 特に2026年においては、「クラウド化」「AI活用」「グローバル対応」「生産現場との連携」が重要な選定ポイントとなっています。 ERPは企業の成長戦略そのものに直結するため、自社の規模・業種・将来展望に適したシステム選びが不可欠です。 この記事では、製造業向けの代表的なグローバルERPを10製品厳選し、それぞれの特徴を解説します。 グローバルERPシステムが気になる方 製造業の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば主要なグローバルERPシステムが丸わかりですよ。 IFS ERP(IFS Cloud) IFS Cloudは、製造業に加えて設備管理やサービス業務まで一体的に管理できる統合ERPです。 特に「アセット集約型製造業」や「プロジェクト型製造」に強みを持っています。…

3 weeks ago

SQA(ソフトウェア品質保証)とは? 顧客満足度を高める品質維持の役割と重要性

ソフトウェア開発において品質の確保は単なる技術的課題ではなく、企業の信頼性や顧客満足度に直結する重要な要素です。 その中核を担うのがSQA(Software Quality Assurance:ソフトウェア品質保証)です。 SQAとは、開発プロセス全体を通じて品質を計画的に作り込み、維持・向上させるための活動を指します。 この記事ではそんなSQA(ソフトウェア品質保証)について、その概要や役割などを紹介していきます。 SQA(ソフトウェア品質保証)が気になる方 品質管理に興味がある方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばSQA(ソフトウェア品質保証)の特徴がわかるだけでなく、その重要性が丸わかりですよ。 SQA(ソフトウェア品質保証)とは SQA(ソフトウェア品質保証)とは、ソフトウェア開発において品質を計画的かつ継続的に確保するための活動全般を指します。 単に完成した製品の不具合を検出するテスト工程だけでなく、開発プロセス全体に関与し、品質を作り込む仕組みを整えることが重要な役割です。 具体的には、開発標準の策定や遵守状況の確認、レビューや監査の実施、品質指標の設定と分析、リスクの早期発見と対策などが含まれます。 これにより、開発の初期段階から問題の発生を未然に防ぎ、手戻りやコスト増大を抑えることが可能になります。…

3 weeks ago

IFS CloudにおけるMigration Jobsの実践

概要 IFS Cloud におけるMigration Job(マイグレーションジョーブ)は、カットオーバーフェーズにおける最重要ボトルネックである。本稿では、実プロジェクトから抽出した知見をもとに、ステージングアーキテクチャ・トランザクション管理・冪等性設計・大容量データ処理・自動アラートの5領域にわたる実践的設計手法とトラブルシューティング戦略を体系的に解説する。適切に設計されたマイグレーションは単なるデータ移送を超え、監査可能性と再現性を備えた運用基盤となる。  (more…)

3 weeks ago