本番環境のデプロイをスムーズにするために注意すべきことがあります。
例えばバックアップや自動展開ツールを使用するなど…。
この記事ではそんな本番環境へのデプロイをスムーズにする方法について解説していきます。
これらに当てはまる方におすすめの記事となっています。この記事を読めば、ソフトウエア開発の際に本番環境のデプロイで苦労することが無くなりますよ。
ちなみに、準備編に関してはこちらの記事で解説をしています。
コードを本番環境に展開する中に何が起こり得るかを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ソリューションへの簡単見積もりの依頼はこちら
近年、製造業はかつてないほどの環境変化に直面しています。 需要変動の激化、多品種少量生産への対応、グローバルサプライチェーンの複雑化、人手不足、原材料価格の高騰など、経営・現場の両面で不確実性が増大しているのです。 このような状況下において、多くの企業が課題として挙げるのが生産管理の属人化・分断化です。 販売計画と生産計画が連動していない 在庫情報がリアルタイムに把握できない 工程進捗が見えず、計画変更が後手に回る システムは導入しているが、Excelや紙運用が残っている これらの問題は、部分最適なシステム導入や、部門ごとに分断された業務プロセスによって引き起こされることが多いです。 こうした背景の中で注目されているのが、IFS(Industrial and Financial Systems)を活用した統合型生産管理の自動化。 この記事では、IFSの特長を踏まえながら、製造業における生産管理自動化の方式と、それを支えるプロセスモデルについて詳しく解説していきます。 IFSとは何か:製造業に強いERPの特長 IFSとは、製造業・エンジニアリング業・アフターサービス分野を主軸として発展してきたERPパッケージです。…
近年、製造業、エンジニアリング業、エネルギー、サービス業を中心に、ERPパッケージ「IFS」の導入・活用が急速に進んでいます。 IFSは、EAM(設備資産管理)、FSM(フィールドサービス管理)、製造、サプライチェーン、プロジェクト管理など、現場業務に強いERPとして評価されており、グローバル展開を前提とした柔軟なアーキテクチャを特徴としています。 一方で、IFS導入プロジェクトやその後の保守・改修フェーズにおいて、以下のような課題を抱える企業も少なくありません。 IFS技術者の慢性的な人材不足 国内開発コストの高騰 アジャイル開発への対応力不足 グローバル展開に伴う24時間体制の必要性 継続的な改善(Continuous Improvement)を支える体制構築の難しさ これらの課題を解決する選択肢として、近年注目を集めているのが「IFSオフショアサービス」です。 特にベトナムを拠点としたオフショア開発体制は、「高品質」「高効率」「コスト競争力」「アジャイル適性」を兼ね備えた最適解として、多くのグローバル企業から支持されているのです。 この記事では、そんなIFSオフショアサービスの価値を整理するとともに、なぜベトナムが最適なのか、どのように高品質なアジャイル体制を確保できるのかを、実務視点で詳しく解説していきたいと思います。 IFSオフショアサービスとは何か IFSオフショアサービスとは、IFSに関する設計、開発、カスタマイズ、テスト、保守・運用といった一連の業務を、海外拠点(オフショア)にて提供するサービス形態を指します。 対象となる業務領域は非常に幅広く、IFS導入時におけるアドオン開発をはじめ、IFS…
IFS ERPは、製造業・エンジニアリング業・サービス業・エネルギー業界など、アセット集約型・プロジェクト型ビジネスに強みを持つERPとして高く評価されています。 一方で、「IFS導入は難易度が高い」「プロジェクトが長期化しやすい」といった声が聞かれるのも事実です。 しかし、その原因はIFS ERPそのものにあるわけではありません。多くのケースで問題となるのは、導入プロジェクトにおける“進め方”や“管理の仕組み”です。 特に、要件定義から設計・開発・テスト・本番移行に至るまでの各工程で、プロセスの品質をどのように担保するかが成否を大きく左右します。 そこで重要となるのが「プロセス品質保証(Process Quality Assurance)」です。 この記事では、IFS導入を成功に導くために不可欠なプロセス品質保証の考え方と、その具体的な手法について詳しく解説します。 IFS導入を検討している方 製造業・エンジニアリング業・サービス業・エネルギー業界の方 これらに当てはまる方におすすめの記事となっています。これを読めばIFS導入の具体的な方法が丸わかりですよ。 (more…)
「DXを進めること」が当たり前となった一方で、期待した成果が出ていないと感じている企業は少なくありません。 ITツールを導入しても業務は属人化したまま、部門間の連携も不十分で、生産性向上につながらないケースが多く見られます。 本来DXとは、単なるデジタル化ではなく、業務プロセスを見直し、データを経営価値へと変える取り組みです。そのためには、全社の業務を横断的に支える基盤が欠かせません。 IFS ERPは、業務プロセス中心の設計と高い柔軟性により、業務プロセス自動化と可視化を実現し、生産性最大化を支援します。 この記事では、DX推進の課題を整理しながら、IFS ERPが果たす役割とその価値を解説していきます。 (more…)
近年、製造業・建設業・エンジニアリング企業では、複雑化する生産プロセスや高度化する顧客要求に対応するため、ERP(Enterprise Resource Planning)の導入が急速に進んでいます。 ERPとは、企業のさまざまな情報や業務を一元的に管理するための基幹システムの総称であり、経営資源を最適に活用しながら生産性を向上させ、企業競争力を高めるための中心的なツールです。 その中でも、IFS ERPは国際的に高い評価を受けており、特に製造業・設備保守業(EAM)・プロジェクト型産業に強みを持つERPとして知られています。 モジュール構成の柔軟性、ユーザーインターフェイスの使いやすさ、そしてクラウド・オンプレミスの双方に対応できる拡張性を兼ね備え、多様な企業に適応できる点が大きな特徴です。 この記事では、画像資料として提示された「IFS導入サービス」「工場調査プロセス」「GAP分析」「開発プロセス」「アジャイル開発体制」などの情報をもとに、IFS ERPの全体像、導入ステップ、具体的なメリットを総合的に解説します。 IFS導入を検討している企業の方 ERPシステムの比較・理解を進めたい方 製造業の方 これらに当てはまる方におすすめの記事になっております。これを読めばIFS導入について具体的な方法がわかりますよ。 (more…)
ソフトウェア開発において、品質の確保はプロジェクト成功の最重要テーマの一つです。 市場のニーズは高度化し、リリースサイクルは短期化し、開発チームの構成は複雑化しています。このような状況の中で注目されているのが TQA(Technical Quality Assurance:技術品質保証) です。 TQAは従来のQAと異なり、単にテスト工程で不具合を検出するだけではなく、開発工程全体の技術的な品質を可視化し改善するという役割を担います。 この記事では、TQAとは何か、その役割から導入メリットまで詳しく解説します。 TQAが気になる方 TQAの開発プロセスが気になる方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばTQAとは何かがわかるのはもちろん、導入メリットもわかりますよ。 (more…)