本番環境のデプロイをスムーズにするために注意すべきことがあります。
例えばバックアップや自動展開ツールを使用するなど…。
この記事ではそんな本番環境へのデプロイをスムーズにする方法について解説していきます。
これらに当てはまる方におすすめの記事となっています。この記事を読めば、ソフトウエア開発の際に本番環境のデプロイで苦労することが無くなりますよ。
ちなみに、準備編に関してはこちらの記事で解説をしています。
コードを本番環境に展開する中に何が起こり得るかを100%予測することはできません。本番のデータを失ったら、顧客からの契約が取り消し、訴えられるまで追い込む会社があります。
リスクを防ぐためには、新しいコードバージョンをデプロイする前にすべてをバックアップすることを習慣にしてください。
また、バックアップ中にユーザーがデータを生成しないように、バックアップする前に保持モードに切り替えることを忘れないでください。
維持モードになりたくない場合は、ゼロダウンタイムという方法も選択肢の一つになります。
バックアップが完了したら、バックアップファイルを安全な箇所を保存してください。さらに、火災・サーバーの障害・サーバーの攻撃などの対処法として、定期的なシステムバックアップをすることもお勧めします。
MacOSまたはWindowsでのアプリケーションの開発は一般ですが、運営環境(本番環境)はBSDやLinuxなどの別のOSである可能性があります。カーネルからユーティリティソフトウェアまで、さまざまなものがあります。
本番環境を把握すると、アプリケーションの実行時にデバッグが容易になります。
本番環境を実行するために仮想サーバー(VPS)を使用している場合は、ホスティングソフトウェアがインストールされていると簡単ですが、ソフトウェアバージョンの選択、互換性などはややこしい問題になってしまいます。
数年前、本番環境へのアプリケーションのデプロイは複雑でした。
環境は仮想化(仮想化)またはコンテナー化(コンテナー化)されていないため、ソフトウェアバージョンとの非互換性がある可能性が非常に高くなります。
アプリケーションをデプロイする前に、それらの使用方法と操作方法を把握しなければなりません。 AWSのプラットフォームで運用するための証明書を持っているのはそのためです。
ステムを1台のサーバーのみで実行することは、すべての卵を一つのカゴに入れるようなものです。何かのきっかけで急にサーバーが障害が発生してしまうとシステム全体が利用できなくなってしまいますね。この現象は「単一障害点」と呼びます。
この問題を解決するために、サーバー負荷分散技術を利用します。代表的ものとしては、ロードバランサー、キープアライブ、クラスタリング、レプリケーションなど。
システムの各部分は個別にスケーリングされます。たとえば、AWSを使用する場合、RDSと呼ばれるMySQLを実行するための別のサービスを購入できます。
このサービスを使用すると、MySQLを別のサーバーで実行でき、定期的なバックアップサポートできます。さらに、世界中のCDNを使用でき、アプリケーションシステム(PHP、Nodejs、Nginx … )と独立的にスケールアップできます。
同様のサービスを購入してインストールすることはできますが、MySQLをできるだけ迅速にスケーリングする場合は少し難しくなります。
「開発環境と実環境は同期すべきだ」という説を多くの人が信じていますが、これは必ずしも正しいとは限りません。
開発・テスト・および本番環境は常に異なるので、 考慮しないままで同期すると問題が発生する恐れがあるからです。
たとえば、Dockerを使用してシステムをデプロイする場合、イメージに多数のツールとライブラリがインストールされていることがわかります。 本番環境で実行する場合、これらは実際には必要ありません。スペースを浪費し、それらをビルドしようとすると、デプロイプロセスでエラーが発生してしまいます。
PHPでは、ライブラリとクラスをソースコードにインストールして、ソースコードをパックします。ベンダーディレクトリもソースコードに従ってパッケージ化されていることを確認してください。本番環境にコードが展開されたら、それ以上何もインストールしません。
これは、エラーの原因となる間違ったバージョンの更新を回避するのに役立ちます。また、展開するたびにライブラリを再インストールする必要がないため、展開を迅速化するのに役立ちます。
サーバーに外部インターネット接続がない場合にも役立ちます。 CI / CDを使用している場合は、AntやPhingなどのビルドツールを使用して、パッケージをしてみてください。より高速になります。
コンテナー技術を使用することで、コードをイメージに直接パックし、それをレジストリーに転送することができます(ソースコードを保護するために非公開にする必要があることに注意してください)。
バージョニングもサポートしているため、アプリケーションバージョンにデプロイする必要があるイメージを選択できます。
たとえば、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ソリューションへの簡単見積もりの依頼はこちら
2025年8月時点におけるドル/円(USD/JPY)の為替レートは、およそ ¥146.9です。 円安傾向は続いており、過去数十年のトレンドとも重なりつつ、依然として投資・政策動向から注目を浴びています。 この記事ではそんな円安に着目してオフショア開発に与える影響を見ていこうと思います。 オフショア開発を始めたい方 社内のIT人材が不足している方 開発効率を上げたい方 これらに当てはまる方におすすめの記事となっています。これを読めばオフショア開発に円安がどう影響するのかがわかるのはもちろん、いつ始めるべきかまで丸わかりですよ。 (more…)
近年、生成AI(Generative AI)はビジネスの在り方を大きく変革する技術として急速に普及しています。 文章、画像、音声、コードなど、多様なコンテンツを自動生成できるこの技術は、従来の業務効率化だけでなく、新たな価値創出や顧客体験の革新にも直結します。 特にエンタープライズ(大企業)においては、膨大なデータ資産や高度なセキュリティ要件、複雑な業務プロセスを背景に、生成AIの導入が戦略的な投資対象として注目されています。 この記事ではそんなエンタープライズ向け生成AIについて具体的な活用事例や導入ステップなど徹底解説していきます。 (more…)
近年、生成AI(Generative AI)は文章生成、画像生成、音声合成、プログラムコードの自動生成など、幅広い分野で実用化が進んでいます。 業務効率化や新しい価値創造の手段として注目され、さまざまな業種で導入が加速しています。 しかし、生成AIサービスを導入するにあたり、どのような形態で利用するかは企業の戦略や要件によって異なります。 この記事では、主な導入形態としてSaaS型の生成AIサービス、オンプレミス型生成AIサービス、API/PaaS活用型生成AIサービスに着目し、それぞれの特徴・メリット・デメリット・選び方のポイントを整理します。 生成AIサービスを導入したい方 生成AIサービスのタイプを知りたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば生成AIサービスについてどんな特徴があるのかがわかるのはもちろん、適切な選び方まで丸わかりですよ。 (more…)
2025年、生成AIはビジネスと社会の在り方を大きく変えつつあります。 大規模言語モデル(LLM)、マルチモーダルAI、RAG、AIエージェントといった技術革新が進み、企業の業務効率化から新しい価値創造まで、その活用範囲は急速に広がっています。 この記事ではそんな生成AI市場について、今後の展望や業務への活用について動向などを見ていきます。 生成AIを活用したい企業の方 業務を効率化したい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば生成AI市場について現状と今後の展望が丸わかりですよ。 (more…)
近年、AI技術の進化とともに、業務効率化やサービス向上を目的とした「AIエージェント」の導入が急速に進んでいます。 弊社でも、この流れを受けてAIエージェントの導入を進め、多くの現場で業務の質とスピードの両立を実現することができました。 この記事では、実際に弊社が取り組んだAIエージェントの活用事例を紹介しながら、AI導入によるメリットとその可能性についてご紹介いたします。 AIエージェントが気になる方 AIエージェントの事例が知りたい方 社内の人材不足にお悩みの方 これらに当てはまる方におすすめの記事となっています。これを読めばAIエージェントの成功事例が丸わかりですよ。 (more…)
近年、業務効率化や顧客対応の高度化を目的として、企業や自治体、教育機関など多くの組織で「AIエージェント」の導入が進んでいます。 AIエージェントとは、人工知能を活用して自動的に応答や処理を行うシステムの総称で、チャットボットやバーチャルアシスタント、RPA(Robotic Process Automation)などが含まれます。 しかしながら、AIエージェントの導入には多くの期待が寄せられる一方で、現場ではさまざまな課題に直面するケースも少なくありません。 この記事では、AIエージェント導入によくある課題とその解決方法について、具体的に解説していきます。 AIエージェントに興味がある方 AIエージェントの導入に不安がある方 社内の人材不足にお悩みの方 これらに当てはまる方におすすめの記事となっています。これを読めばAIエージェントの特徴がわかるのはもちろん、うまく活用するための方法もわかりますよ。 (more…)