0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ホスティングとデプロイどっちがどっちだ?

Posted at

IT業界、特にインフラの世界に足を踏み入れると、カタカナや横文字の専門用語が飛び交いますよね。「ホスティング」に「デプロイ」…。なんとなく意味はわかるけど、いざ説明するとなると自信がない、という方も多いのではないでしょうか?


ホスティングってなんだ? 🏠

まず「ホスティング (Hosting)」から説明します。これは、あなたが作成したウェブサイトやアプリケーションが、インターネットの世界で公開され、誰でもアクセスできるようにするための「インフラ(基盤)を準備・提供する」サービスのことです。

あなたが最高のレストラン(アプリ)のレシピを考えたとしましょう。でも、そのレストランを開く場所がなければ、お客さんは誰も料理を味わえません。ホスティングは、まさにその「場所(サーバー)」や「土地(インフラ)」を提供するサービスです!

具体的なホスティングサービス

ホスティングにはいくつかの種類があり、それぞれ特徴が異なります。

  • レンタルサーバー:

    • : エックスサーバー, さくらインターネット
    • 特徴: 1台のサーバーを複数のユーザーで共有する形式。設定が簡単で安価なため、個人ブログや小規模なサイトに向いています。まさに「シェアハウス」のようなイメージです。
  • VPS (Virtual Private Server):

    • : ConoHa VPS, さくらのVPS
    • 特徴: 共有サーバーながら、ユーザーごとに仮想的な専用領域が確保されています。OSの選択やソフトウェアのインストールなど、レンタルサーバーより自由度が高いのが魅力です。「分譲マンション」の各部屋といったところでしょうか。
  • クラウドサービス (IaaS / PaaS):

    • :
      • IaaS: Amazon Web Services (AWS), Google Cloud (GCP), Microsoft Azure
      • PaaS: Heroku, Google App Engine
    • 特徴: 必要な時に必要な分だけサーバーリソース(CPU, メモリなど)を借りられる、最も柔軟でスケーラブルなサービスです。IaaSは土地や建材(仮想サーバー、ストレージなど)を自由に組み合わせて家を建てるイメージ。PaaSは、骨組みやインフラは全て用意されていて、内装(コード)に集中できるイメージです。

コードでインフラを準備する (IaC)

最近では、Infrastructure as Code (IaC) という考え方が主流です。これは、サーバーの構築や設定といったインフラの準備作業を、手作業ではなくコードで自動的に行う手法です。

例えば、Terraform というツールを使うと、AWS上にウェブサーバー(EC2インスタンス)を立てる作業を以下のようなコードで定義できます。

terraform.tf
# AWSプロバイダーを指定
provider "aws" {
  region = "ap-northeast-1" # 東京リージョン
}

# 構築するEC2インスタンス(Webサーバー)を定義
resource "aws_instance" "web_server" {
  ami           = "ami-0c55b159cbfafe1f0" # Amazon Linux 2のイメージ
  instance_type = "t2.micro"             # インスタンスのスペック

  tags = {
    Name = "MyWebAppServer"
  }
}

このコードを実行するだけで、AWS上にサーバーという「おうち」が自動的に建ちます。これが現代のホスティング環境の準備です。


じゃあデプロイってなんだ? 🚀

次に「デプロイ (Deploy)」。これは、開発したアプリケーションやウェブサイトのファイル一式を、ホスティングで用意したサーバー(おうち)に配置し、実際にユーザーがアクセスして利用できる状態にする一連の作業を指します。引っ越しと模様替えをイメージすると分かりやすいでしょう。

せっかく立派な家(ホスティング環境)があっても、中身が空っぽでは意味がありません。デプロイは、その家を「住める状態」にするためのアクションです!

具体的なデプロイ作業

デプロイには、単純なファイル転送から高度な自動化まで、様々な方法があります。

  1. ソースコードの配置: 開発したプログラムのコードをサーバーにコピーします。(git pullやFTP/SFTPでのアップロード)
  2. 依存関係のインストール: アプリケーションが動作するために必要なライブラリやパッケージをインストールします。(npm install, composer install, pip installなど)
  3. ビルド: 必要に応じて、コードを実行可能な形式に変換(コンパイル)したり、ファイルを圧縮・結合したりします。(npm run build, tscなど)
  4. 設定ファイルの配置: データベースの接続情報など、環境固有の設定を反映させます。
  5. アプリケーションの再起動: 古いプロセスを停止し、新しいコードでアプリケーションを起動し直します。(pm2 restart, systemctl restart nginxなど)

CI/CDツールでデプロイを自動化する 🔧

これらの作業を手動で毎回行うのは大変ですし、ミスも起こりやすくなります。そこで登場するのが CI/CD (継続的インテグレーション/継続的デリバリー) ツールです。

GitHub Actions を使うと、「特定のブランチ(例: main)に新しいコードがプッシュされたら、自動的にテストを実行し、サーバーにデプロイする」といった一連の流れを自動化できます。

以下は、GitHub Actionsを使ってサーバーにSSH接続し、デプロイ作業を自動で行う設定ファイルの簡単な例です。

.github/workflows/deploy.yml
name: Deploy to Server

# mainブランチにプッシュされたら実行
on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    # 1. ソースコードをチェックアウト
    - name: Checkout Source Code
      uses: actions/checkout@v3

    # 2. SSHでサーバーに接続し、デプロイコマンドを実行
    - name: Deploy to Server
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.SSH_HOST }}          # サーバーのIPアドレス
        username: ${{ secrets.SSH_USERNAME }} # サーバーのユーザー名
        key: ${{ secrets.SSH_PRIVATE_KEY }}   # SSH接続用の秘密鍵
        script: |
          cd /var/www/my-app
          git pull origin main
          npm install --production
          npm run build
          pm2 reload app

この設定をしておけば、開発者はコードを書いてGitHubにプッシュするだけで、あとは自動的にアプリケーションが更新されます。これが現代的なデプロイの姿です。


ホスティングが「アプリケーションが動くための場所や基盤を確保すること」であるのに対し、デプロイは「その場所にアプリケーションを設置し、利用可能な状態にすること」です。

この2つは切っても切れない関係にあります。

  1. ホスティング: まず、AWSやVPSなどでサーバーという「家」を建てる。
  2. デプロイ: 次に、その「家」にGitHub Actionsなどを使ってアプリケーションという「家具」を運び入れ、生活できる状態に整える。

この流れを理解することが重要です。家がなければ、引っ越し(デプロイ)はできませんからね。

インフラエンジニアは頑丈で快適な「家(ホスティング環境)」を建てる大工さんのような役割を、そして開発者はその家に機能的な「家具(アプリケーション)」を運び込み、いつでも使えるように整える引っ越し&セットアップのプロ、というわけです。

この記事で、二つの言葉の役割分担がクリアになっていれば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?