我选择将Heroku迁移到AWS的原因和方法

总结

我們在Heroku上運營了一年多,現在決定在年底轉移到AWS上。在回顧這一年後,我將寫下關於Heroku和AWS的優點和缺點,以及我們決定轉移到AWS時將採取的運營方式。

我决定将应用程序从Heroku迁移到AWS的原因。

有三个主要的部分。

    • プロセスの実行に制限があったり、リソースに制限があるのが辛い。

私達が取り組んでいるのが、画像を多く取り扱うサービスだということもあります。特にサムネイル作成については苦渋を飲まされました。以下の記事に知見を纏めています。

RailsとHeroku、AWSでAwesomeな画像アップロードからのサムネイル作成
RailsとHeroku、AWSで画像アップロードからのサムネイル作成(実践編)

ただこの知見はHeroku特有のものも多く、AWSであれば容易に解決できた部分もあります。それが今回移行する理由の一つです。

リージョンによる遅延

1つめのようにどうにかこうにか対策できる部分もあるのですが、リージョンの問題(HerokuはUSとEUにしかリージョンが無い)ことです。Tokyoリージョンが使えないのは、多くのリクエスト、大きい転送量が上下ともに発生する画像系のサービスでは大きな損失です。(ベンチを取ると分かりやすかったです)

無料範囲で済まなくなると、結構お高く付く

逆而令我高兴的事有以下两个方面。

    • 気軽に開発できる

1 dynoまで無料

ぽんぽんステージング環境を立てて確認できる(最近はforkコマンドが出来て非常に楽になりました)のは高速開発にはとても便利です

pushするだけでデプロイ

何も考えずpushするだけでデプロイできるのは、環境構築のコストが抑えられて非常に便利です
また最近はGitHub-Syncという機能が出来て、指定したGitHubのmasterに入るだけでデプロイを走らせられるようになりました

アドオンがたくさんある

MongoもMemcacheもNew Relicもボタン一つ、コンソール1コマンドですぐに使うことが出来て非常に楽です

何も考えなくて良い

デプロイもそうですが運用もほぼ何も考えずに、負荷が増えたらdynoを増やしたり、DBもスケールアップしたり、金を詰めば何も考えずとも動かし続けられます

在AWS中您要使用哪个服务?

我打算将服务从Heroku迁移到AWS,但在选择使用哪个服务进行运营方面有些犹豫。最终的结论是,由于在Heroku上仅运营了一些小型服务,所以用EC2来进行耐心地操作已经足够了。

另外,服务的构成如下所述,包括EC2和客户端访问的S3,以及客户端和S3之间的CloudFront。

客户 <-> 负载均衡器 <-> EC2 <-> RDS

以下是我們考慮過但最終決定不使用的服務。

    • Elastic Beanstalk

外見は一番Herokuっぽいのですが、インスタンス単位で立ち上がるのでお金がたくさんかかったり、立ち上がるのに非常に時間がかかります
ダウンタイム無しのローリングアップデートをしようとしたけれど、設定の調整が面倒

AWSの挙動を確かめながら設定するのが非常に面倒でした

DevOps

レシピを追加するのに時間がかかる
元々のレシピの挙動を確認しながら修正を加えるのが面倒

CloudFormation

そもそも必要なかった

最终结果

我正在努力自行搭建环境,并使用EC2和Chef进行配置,然后使用Capistrano进行部署。

bannerAds