静的ウェブサイトの手動デプロイとSaaSデプロイの手順および利点と欠点の比較

## なぜウェブサイトのデプロイが必要なのか？

ウェブサイトのデプロイは、開発環境から本番環境へサイトを移行し、一般に公開するために行います。デプロイプロセスはサーバーの設定やコンテンツ配信ネットワーク（CDN）の最適化を行い、サイトの読み込み速度や応答時間を向上させ、ユーザー体験を高めることができます。

自動化されたデプロイプロセスは継続的インテグレーションと継続的デリバリー（CI/CD）を実現し、開発および運用の効率を向上させ、新機能やバグ修正を迅速にリリースできます。合理的なデプロイとアーキテクチャ設計により、サイトのスケーリングが容易になり、ユーザーの増加やビジネスの成長に対応できます。また、デプロイにより、コンテンツ管理システム（CMS）やその他のバックエンドサービスが正常に動作し、サイトコンテンツのメンテナンスと更新が簡単になります。

## 手動でウェブサイトをデプロイする手順：

ウェブサイトのデプロイは、開発環境から本番環境へウェブサイトを移行し、ユーザーがアクセスできるようにするプロセスです。一般的な手順は以下の通りです：

1. **コードの準備**：すべてのコードがテストされ、リリースの準備が完了していることを確認します。
2. **サーバーの設定**：必要なソフトウェアをインストールし、セキュリティ対策を設定するなど、サーバーをサイトのニーズに合わせて設定します。
3. **ファイル転送**：FTP、SFTP、またはバージョン管理ツール（Gitなど）を使用してウェブサイトのファイルをサーバーにアップロードします。
4. **データベースの設定**：ウェブサイトがデータベースを使用する場合、データベースを準備し、データをインポートします。
5. **ドメインの設定**：ドメインをサーバーのIPアドレスに指します。
6. **テストと検証**：本番環境でウェブサイトをテストし、すべてが正常に動作することを確認します。

全体の手順は以下の通りです：

![manu deploy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895563/c3c80b7a-cf16-fe1d-aecb-87847a21c35b.png)


もちろん、これらの手順はここでは詳しく説明しません。多くの詳細なチュートリアルがオンラインで見つかります。これらのチュートリアルに従うとき、多くの初心者は異なる技術フレームワークやサーバーバージョンの違いにより、操作がスムーズに進まないことがあります。

すべてのステップを自分で行うと、作業量が大幅に増加し、作業の難易度も数段上がります。さらに、これらのタスクはしばしばあなたの主要な仕事範囲を超えるものであり、ウェブサイトのデプロイ作業量が増えるだけでなく、ネットワークセキュリティなどの問題も考慮する必要があります。

この記事の主な目的は、第三者ホスティングプラットフォームの使用について検討することです。これは現代の技術において効果的な解決策の一つです。現在では、PaaSやSaaSプラットフォームが数多く存在し、これらを使用することで迅速かつ簡単に、包括的な機能を実現し、実際の運用環境で使用できます。

もちろん、ここで主に対象としているのは静的なウェブサイトです。操作ロジックが非常に複雑なウェブサイトについては、自身でデプロイの設計を行う必要があります。

## SaaSを利用したデプロイソリューションの接続

第三者プラットフォームを使用してデプロイを行う場合、費用が増えるのではないかと心配する人もいるかもしれません。しかし、実際にはGitHub PagesやEdgeone Pagesなど多くの無料プランが存在します。自分でサーバーを購入してデプロイする場合もサーバーのレンタルが必要であり、費用が高くなる可能性があります。今回、より包括的なソリューションを紹介します。このソリューションには、SSL証明書の取得が容易で、より高速なアクセス速度を提供するなどの利点が含まれます。

現在、静的なウェブサイトのデプロイはほとんどの場合、第三者プラットフォームを利用してワンクリックで完了します。サーバーを操作したり、コードを追加したりする必要はありません。この方法は、専門家にも非専門家にも非常に使いやすいです。まるであなたの運営する店舗に管理人（兼用保安）がいて、すべての煩雑な作業を代わりに処理してくれるようなものです。

特に複数人での協力が必要な場合、協力の成果をリアルタイムで確認するためには、誰かがコードをプッシュするたびにウェブサイトを再デプロイする必要があります。これにより、最新の協力結果を表示できます。しかし、デプロイプラットフォームを通じてコードブランチの更新を監視し、新しいプッシュが到着したときに自動的にデプロイを行うことで、協力のプレビューがより便利で迅速になります。

例として、Tencentの新しいEdgeone Pagesを使用した場合、プラットフォームデプロイの手順は以下の通りです：

1.  **ユーザー登録**：プラットフォームアカウントを作成します。
2.  **GitHub認証**：GitHub認証を行い、認証が完了するとリポジトリの内容を取得します。
3.  **コンパイルおよびデプロイ設定**：コンパイルコマンドやコンパイル出力を設定します。プラットフォームはGitHubリポジトリを取得し、設定に従って処理します（プラットフォームがドメインを割り当てるか、カスタムドメインを使用します）。
4.  **カスタムドメインとSSL認証（オプション）**：開発者はプラットフォーム上でSSL証明書を生成するか、プラットフォームからカスタムドメインを申請し、サーバーにバインドします。
5.  **追加機能の接続（上級オプション）**：エッジアクセラレーション、分析と監視、DDoS防御、WAFなど。

自動デプロイ設定のフローチャートは以下の通りです：

![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3895563/5fd78821-6fda-79c3-9881-f38850863a02.png)


第三者のソリューションは数多くありますが、ここでは[EdgeOne Pages](https://edgeone.ai/products/pages?source=qiita)を例に挙げて、具体的なソリューションの詳細を紹介します。（以下で取り上げるすべての問題はEdgeone Pagesで既に解決されています）

### **1. 無料プランを提供しているか？**

まず、無料プランを提供しており、そのプラン内で機能を制限なく利用できるかを考慮する必要があります。これにより、初期のスタートアップ時に資金を効率的に管理でき、サーバーのデプロイに制限されることがありません。

多くのスタートアップが初期には収益を上げるのが難しく、サーバーのデプロイが大部分の支出を占める可能性があります。無料プランを提供することで、困難な初期段階を迅速に乗り切ることができます。

誰も結果が見えないうちに多額の費用を支出することは望まないでしょう。

### **2. デプロイの複雑さ**

次に、第三者の接続の複雑さを考慮する必要があります。理想的には、第三者プラットフォームはワンクリックデプロイが可能で、プロジェクト内部で設定やコードの変更を行う必要がありません。できればGitリポジトリに直接接続し、デプロイボタンをクリックしてステップバイステップのガイドに従ってデプロイを完了することが望ましいです。これにより、最速でサイトをオンラインにすることができます。

### **3. 自動でSSL証明書を提供し、カスタムドメインを追加できるか？**

デプロイ機関がSSL証明書を提供しない場合（例えば、GitHub Pages）、他の人があなたのサイトを閲覧する際にサービスが遮断されたり、セキュリティポリシーでブロックされたりする可能性があります。

自分で証明書を申請するには、資料を準備し、定期的に証明書を更新する必要があります。これは作業量を増加させます。

ウェブサイトのドメインは、あなたの店舗の看板のようなものです。多くのデプロイ機関はカスタムドメイン機能を提供していないか、他の機関でドメインを申請してからデプロイ機関で使用する必要があります。例えば、Vercelのようなプラットフォームです。

### **4. 自動ビルドとデプロイをサポートしているか？**

また、自動ビルドとデプロイも非常に重要です。自動デプロイにより、オンライン環境を迅速に更新できます。

コードの変更をリポジトリにコミットすると、プラットフォームが自動的にコードをビルドし、オンライン環境にデプロイします。これにより、プロジェクトの改善に集中でき、デプロイによる遅延が発生しません。

遅延を減らすだけでなく、自動デプロイにより手動操作が減少し、操作ミスの可能性が低くなり、オンラインでの問題発生リスクが低減します。

### **5. ウェブサイトアップグレードソリューションが内蔵されているか？**

プラットフォームは、ウェブサイトのパフォーマンスを向上させ、遅延を減少させ、データアクセス速度を向上させるためのさまざまなアップグレード機能をサポートする必要があります。これにより、アプリケーションがスムーズかつ効率的に動作し、最適なユーザー体験を提供できます。

ウェブサイトのトラフィックが徐々に増加する際、デプロイ機関がエッジアクセラレーション、CDN、静的リソースの最適化などのアップグレード機能を提供していない場合、サイトの体験が劣化し、ロード時間が延長し、ユーザーの離脱を招く可能性があります。また、**グローバル展開**の面でも困難に直面するでしょう。

トラフィックが多くなると、サービスを移行するのは多くの困難を伴います。例えば、オンライン環境への影響、テストと検証の増加、データのバックアップ、DNSの変更など、これらはすべてユーザーの離脱を引き起こす可能性があります。

もちろん、ウェブサイトが成長するのは後の話ですが、初期の疎漏が成功の道を難しくしないようにしましょう。

ここで[EdgeOne](https://edgeone.ai/products/pages?source=qiita)の小さな広告を掲載します。上記のすべての内容は、EdgeOneでサポートされています。無料プラン、SSL、ドメイン、エッジアクセラレーション、自動ビルド、グローバルデプロイなどの機能を提供しています。

ウェブサイトのデプロイプロセスは[Edgeone Pagesのデプロイプロセス](https://dev.to/mpoiiii/ru-he-shi-yong-edgeone-pages-mian-fei-kuai-su-bu-shu-angularreactvue-wang-zhan-52lo)を参考にできます。第三者の接続プロセスも大まかに似ています。

## まとめ

ここでは主に第三者プラットフォームを使用してウェブサイトをデプロイする方法について紹介しました。以下の理由で手動デプロイの詳細な説明は省略しました：

1. 手動デプロイは技術選択に応じて多くの方法があり、すべてを書ききれません。多くの人がチュートリアルに従っても途中でつまずきます。
2. 手動デプロイもサーバーを使用する必要があり、サーバーの費用もかかります。結果として、ホスティングプラットフォームの方が費用が少なくなる場合があります。
3. 手動デプロイは初心者には適していません。これはサーバー管理やコンピュータネットワークの知識を必要とし、初心者や非専門家には理解が難しいことが多いです。
4. 最後に、デプロイにはSSL、ネットワークセキュリティ、ドメイン申請、自動ビルドスクリプトの作成などを考慮する必要があります。サイトが個人ブログや履歴書の展示などのシンプルなコンテンツ表示型の場合、大げさな準備は不要です。

現在、オンラインには多くのデプロイチュートリアルがあり、サーバーの新規作成から始まりますが、これらのチュートリアルは本当に実運用環境に適しているのでしょうか？大部分のチュートリアルにはCDNデプロイが含まれていますが、実際にCDNデプロイを行った人はどれくらいいるのでしょうか？実際のところ、現代のアーキテクチャにおけるコンテンツ配信はエッジノード戦略に基づいてオンデマンドで取得されるものであり、チュートリアルで説明されているようなシンプルな全量プッシュコンテンツではありません。

したがって、現在の成熟したPaaS、SaaSプラットフォームを使用することは怠けることではなく、あなたが自分の仕事に集中できるようにするための方法です。特に[無料のサービス](https://edgeone.ai/products/pages)はさらに魅力的です。