Edit
Amazon Web Services(AWS)について

現在もっとも世界で利用されているクラウドサービス。Microsoftも追撃しているもののサービスの豊富さで一日の長がある。

Edit
Elastic Load Balancer(ELB)ロードバランサー

AWSが提供するLBはELBと呼ばれ、URL指定によるバランシングも行える(ALB:Aplication Load Balancing)。他にもSSLをロードバランサーが対応することで、APPサーバー側の負荷を減らすなどを行う。(その場合サーバー証明書は1つで済む)

Edit
ELBの作成

サービス:EC2を選択後、左側のメニューから「ロードバランサー」を選択する。すると丈夫に、青いボタンで「ロードバランサーの作成」が表示されるので、そのボタンを押す。すると、Application Load Balancerと、Network Load Balancerのボタンが表示される。(厳密にはClassicのボタンも表示されるが意味がないのでここでは割愛)SSL対応をLBで行ったり、URL分岐など高度な事が出来るのは、ALBのみであり、NLBは膨大な単一機能のアクセス用としての為、ここではALBで作成する。

Edit
ステップ 1: ロードバランサーの設定

ここでは、名前を設定するだけで後は初期設定でも問題ないだろう。但しここで出て来るアベイラビリティゾーンというのは、amazonでの用語であり「アベイラビリティゾーンとは、AWSの各リージョン(国や地域)に存在する物理的なデータセンターです。各リージョンには複数のアベイラビリティゾーン(データセンター)が存在しており、それぞれにAmazon EC2などを配置することで、地理冗長化を簡単に行うことができます。また、アベイラビリティゾーンは、お互いに影響を受けないように、地理、電源、ネットワーク的に分離され、高速専用線で相互接続されています。」要するに災害など物理的トラブルの冗長化である。(日本では現在2箇所のみ)あとで、これらゾーンのサブネットは自由に設定変更できるのでここでは2つともサブネットを選んでおく。

Edit
ステップ2:セキュリティ設定の構成

ここでは、SSLの証明書情報を登録する。詳しくはSSLのページを参照。

Edit
ステップ3:セキュリティグループの設定

ここも後から変更できるので、default を選んでおくと良い。

Edit
ステップ4:ルーティングの設定

ここでは、データの送り先のインスタンスのポートやプロトコルなどの設定を行う。通常LBでSSLは解除されるので、80番での利用となる。

Edit
ステップ5:ターゲットの登録

ここではLBが送り出すデータをどのインスタンスに送るか登録する。

Edit
Instance(Appサーバー)

Edit
ルートのパスワード設定

$ sudo su -
$ passwd

Edit
AWS Step Functionsについて

SQSなどを利用したワークフローをグラフィカルなUIを利用して、変更・拡張・縮小・レポートなど管理を簡単に行うための機能。AWS Step Functions

Edit
Amazon Simple Queue Service(SQS)について

SQSは古くからあるメッセージキューイング(MQ)の amazon による実装で、AWSサービスの初期から存在する。キューには標準キューとFIFOキューがあり、順番を守られるFIFOに対して、必ずしも順番を守るとは限らない標準キューがある。共にサーバー間の結合を疎結合にするための技術であり、それによるスケーリングを容易にし膨大なリクエストを上手にこなすための仕組みである。またRedisなどと違いデータがサーバートラブルで処理プロセスが落ちてもメッセージ自体は消えないため、信頼度は高い。(但し100万TPSあたりから有料になる)

Edit
Elastic Beanstalkとは。

AWSで提供される、自動デプロイツールである。

Edit
新しいアプリケーションの作成

ここから Elastic Beanstalkのページに移動し、プラットフォームを選択する。いろいろなプラットフォームを管理できるが、今回はGo言語のアプリをデプロイするので、環境をGoを選び「今すぐ起動」ボタンを押す。

Edit
トラブルシューティング

Edit
aws s3 の問題

Edit
1024バイト問題

s3 では key-value 方式らしきため、キーとなるファイル名が、パス名含めて 1025 バイトの制限があり、階層が深いファイルなどがあると、すぐにバグる。

Edit
限定された文字コード