読者です 読者をやめる 読者になる 読者になる

ネオキャリアグループ開発者ブログ

ネオキャリアグループの技術者による開発ブログ

静的WEBサイトならcapistranoとS3で運用作業からもっと解放される

概要

どんなにシンプルなWEBサイトであっても、グローバルIPアドレスを持つサーバーを準備、公開し続ける限り運用、キャンペーン施策をやるなら負荷対策が必要でした。AWSが静的WEBサイトのホスティングをS3で提供したことでこれらから解放されました。この記事では開発サーバーから本番サーバーの代わりとなるS3バケットへのデプロイ方法を記載します。

 

方法

デプロイにはCapistranoを使用し、開発サーバー内にデプロイが完了した(deploy flowが終了した)時点で公開用バケットにAWSコマンドでsyncさせます。

 

具体的には以下を設定します。

・本番サーバーの代わりとなるS3バケットで作成・削除等可能なIAMを設定します。

・開発サーバーで使用するデプロイユーザでaws configureコマンドで上記IAMのAccess KeyとSecret Access Keyをセットしておきます。

・deploy.rbのnamespace :deploy内に以下を追加しておきます。つまりproducionを引数にした時には当該バケットに同期されるようにします。

  after :finished, :rsync_s3 do
    if "#{fetch(:stage)}" != "staging"
      on roles(:web) do
        execute "aws s3 sync #{fetch(:deploy_to)}/current/ s3://バケット名/ --delete"
      end
    end
  end

 

結果

cap production deployコマンドを実行すると、開発サーバー内のdeploy_toでセットしたパス(deploy.rbのdeploy_toで設定)にソースコードが展開され、そしてS3(s3://バケット名/)へ同期がされます。

 

終わりに

AWSは動的サイトもサーバーレス構成を可能とするようになり、ますます運用から解放されてサービス開発に集中できて嬉しいですね。

現在、私は"jinjer労務"というサービスに取り組んでいます。jinjerとは人事領域のデータを横断的にマネジメントできるプラットフォームです。詳しくは以下をご覧ください。

hcm-jinjer.com

Posted by Yoshihiro Noumi