AWS Elastic Beanstalk入門①
"人は皆デプロイでつまずく"の章はマインドセットの話が長いのでお急ぎの方は"Elastic Beanstalkって何?"の章からご覧ください。
人は皆デプロイでつまずく
Webアプリケーション開発初心者にとって最大の難関とも言えるデプロイ作業
なぜデプロイ作業が難しいのか、一言で言うと
インフラの知識がないから
ではないでしょうか
プログラミング学習を始める際、まずはHTML、CSSなどフロントエンドと呼ばれるところから始め、次にRuby、Pyhtonなどのスクリプト言語の学習に移るかと思います
私も含め多くのプログラミング初学者の目標は自分で開発したWebアプリケーションを公開することだと思います。
スクリプト言語についてある程度学習を終えたら次に待っているのはWebアプリケーションフレームワークの学習です。
ここで多くの人が行き詰まるかと思います。
ProgateでRubyの講座を完璧に習得したはずなのに、paizaでAランクをとったのに、自分はプログラミングに向いてないんじゃないかと頭を悩ませるでしょう。
でも自分の考えたWebアプリケーションを多くの人に使ってほしい!という気持ちを糧になんとかローカル環境で動作するWebアプリケーションを作り上げます。
可読性も処理速度もお構いなしに作り上げたWebアプリケーション。改善点はあげればキリがないけれどとにかく作り上げたんだと言う達成感は筆舌しがたいものでしょう。
これは私の持論ですが、相当セキュリティに気を使わなければいけないようなサービスでない限り、どんなに不格好なコーディングでもそのWebアプリケーションはデプロイして公開するべきです。
リファクタリングなどは公開してからでもやっていけばいいのです。私たちはまだメルカリやTwitterを運営する立場ではなく、学習者なのです。とりあえずユーザーに使ってもらうという実感を得ることが最優先です。
じゃあデプロイしてみるか。と思い立ったところで次に対峙する巨大な壁。それがデプロイです。
企業でさえオンプレ離れが求められているこの時代に個人開発のアプリを自作サーバで公開する人はごく少数でしょう。
おそらく大半の人がAWSを使ってみようと考えるはずです。
EC2インスタンスを起動して、環境構築、git cloneして、ここで多くの人が挫折を味わうでしょう。
セキュリティグループって何?http?https?unicornって何?Capsirano?
私はそもそもMySQLに接続できない問題を一生解決できないでいます。
ここでつまずいているわけには行かない。そう思いインフラ周りの勉強を始めましたが右も左もでいつまで経ってもデプロイできる気がしません。
そこでデプロイの自動化の線を探り始めました。そう、私はインフラエンジニアになりたいんじゃない。Webアプリケーションを公開したいだけなんだ。
DeployBotというものを見つけましたが、こちらはLPのような静的なWebサイトのデプロイ向きでがっつり開発したものに向いているのか微妙な気がしたのでパス(間違っていたら教えてください)。
そこでたどり着いたのが、AWS学習を始めてすぐの頃「訳わからん」と切り捨てたElastic Beanstalkでした。
Elastic Beanstaklって何?
ついに本題です。Elastic Beanstalkとは何か。
ざっくりと言えば
インフラの知識がなくてもWebアプリケーションのデプロイ、管理ができるサービス
です。
Elastic Beanstalkがやってくれること
アプリケーションをアップロードするだけで
- 容量のプロビジョニング
- 負荷分散(ロードバランシング)
- 拡張(スケーリング)
- アプリケーション状態の管理(モニター)
という作業を自動で行ってくれます。
Elastic Beanstalkがサポートする開発言語
Elastic Beanstalkがサポートする加発言後(AWS公式ドキュメントではプラットフォームと呼ばれます)は以下の言語です
Elastic Beanstalkとのやりとり
elastic Beanstalkの操作方法は
があります。
また、一連のAmazon EC2インスタンスのサイズの変更、アプリケーションのモニタリングなど、ほとんどのデプロイタスクをElastic Beanstalkウェブインターフェイス(コンソール)から直接実行できます。
Elastic Beanstalkのワークフロー
- アプリケーションを作成
- アプリケーションバージョンをElastic Beanstalkにアップロード
- アプリケーションに関する情報を提供
- Elastic Beanstalkが自動的に環境を起動
- コードの実行に必要なAWSリソースの作成、構成
- 環境を管理し、新しいバージョンをデプロイ
赤字部分はElastic Beanstalkが勝手にやってくれます。
公式ドキュメントにあるワークフローの図式も載せておきます。
サンプルアプリケーションを作ってみよう!
AWS公式ドキュメントにはサンプルアプリケーション作成を通してElastic Beanstalkの使い方を学習できるサービスがあります。
まずはこちらでElastic Beanstalkを体験してみましょう!
ドメインを取得しよう!
自作WebアプリケーションをデプロイできたらドメインとIPアドレスを紐づけてみましょう!
アクセス増にも期待できますし、なによりそれっぽさが出てワクワクできます!