AWS Startup ブログ

【週刊 Ask An Expert #19】AWS で動画配信プラットフォームを作るには?先週の #AWSLoft で受けた質問10選

こんにちは、スタートアップソリューションアーキテクトの針原 (Twitter: @_hariby) です。このブログ記事では週刊 Ask An Expert 第19回目をお届けします。「参考になった」「いい内容だ」と思っていただけたら、ぜひハッシュタグ #AWSLoft を付けてシェアしてください。もちろん、改善点・ご要望もお待ちしております。

Ask An Expert ?

皆さん AWS Loft Tokyo はご存知でしょうか?
目黒セントラルスクエア17Fにある、AWS を利用中のスタートアップとデベロッパーのためのコワーキングおよびイベントスペースです。その一角に AWS のエキスパート – Solutions Architect (SA) や Cloud Support Engineer (CSE) – といった中の人に技術的な質問ができる、Ask An Expert カウンターがあります。そこでは毎月、来場者の方から100件以上にものぼるご相談をお受けしています。

ある日の Ask An Expert – SAの永山です。(いい写真だけどお客さんが写り込んでいたので円の外側だけぼかそうと OpenCV の GaussianBlur() で頑張りました。)

この連載「週刊 Ask An Expert」では、多くのご相談を中から我々スタートアップソリューションアーキテクトが 独断で面白かった質問を 10 個選び、ざっくりとご紹介していきます。他の AWS Loft 利用者がどんな質問をしているのか、自分が知らなかった新しいトピックはないか、Ask An Expert ってどんなところなのか、一緒に見ていきましょう。

週刊 Ask An Expert #19 (2019/08/19 – 08/23)

この週の対応者は SA: 桶谷・中武・濵・小田桐と CSE: 古野でした。

Q1: Amazon EC2 にアプリだけでなく MySQL をインストールして使う方法があると思うが、Amazon RDS を使う理由は?

A1: Amazon RDS をお使い頂くことでリレーショナルデータベースの管理負荷を減らすことができます。Amazon RDS は、お客様からリクエストされたインフラストラクチャ容量のプロビジョニングからデータベースソフトウェアのインストールまで、リレーショナルデータベースのセットアップに必要な作業を行います。データベースが起動および実行されると、バックアップの実行やパッチ適用などの一般的な管理タスクが自動化されます。オプションのマルチ AZ 配置により、Amazon RDS では、別のアベイラビリティーゾーンへの同期的データレプリケーションと、自動フェイルオーバーが管理されます。

Q2: Amazon EC2 や Amazon Aurora/RDS は開発時のコスト削減のために一時的に停止可能?

A2: Amazon Aurora/RDS 及び Amazon EC2 は停止が可能です。Amazon Aurora/RDS の停止は7日の制約などもあるのでドキュメント「Amazon Aurora DB クラスターの停止と開始」および「一時的に Amazon RDS DB インスタンスを停止する」を参照ください。

なお、開発時のみデータベースを起動し不要な時間にシャットダウンするという用途であれば、Amazon Aurora Serverless も選択肢としてご検討下さい。Aurora Serverless は、MySQL 5.6 互換の Amazon Aurora および PostgreSQL 10.7 互換の Amazon Aurora でご利用いただけます。

Q3: Amazon EC2 のインスタンスタイプを変更するには?

A3: 停止 → インスタンスタイプ変更、という手順で可能です。インスタンスの状態が「stopped」になっていることを確認して、「アクション > インスタンスの設定 > インスタンスタイプの変更」から新しいインスタンスタイプを選ぶことができます。詳細はドキュメント「インスタンスタイプを変更する」を参照してください。

Q4: HTTP サーバーがあるがスパイクに耐えられない。どうすればいい?

A4: Auto Scaling の設定がまだとのことで、まずは Auto Scaling の設定をお願いしました。ドキュメント「Amazon EC2 Auto Scaling の使用開始」に手順がございます。また、イベントなど事前にお客様にて検知可能なスパイクは事象発生の少し前に予めインスタンスを増やすなどが対策として有効である点をお伝えしました。

「[AWS Start-up ゼミ / DevDay 編] よくある課題を一気に解説! 御社の技術レベルがアップする 2018 秋期講習」の p.49 – (システム負荷下げたい) も参考資料としてご覧ください。

Q5: Auto Scaling グループを使うとログが消えてしまうがアプリケーションのログはどうすればいい?

A5: CloudWatch エージェントを入れて、Amazon CloudWatch Logs にストリーミングする方法があります。また、Amazon CloudWatch Logs の保持期限を短くしつつ、必要に応じて Amazon CloudWatch Logs → Amazon Kinesis Data Firehose → Amazon S3 のサブスクリプションの設定をして、永続化する方法も考えられます。上記以外ですと Kinesis エージェントを入れて Amazon Kinesis Data Firehose → Amazon S3 という保持方法も考えられると思います。

Amazon S3 へのログ収集に関しては「[AWS Start-up ゼミ] よくある課題を一気に解説! 御社の技術レベルがアップする 2019 春期講習 補講&おかわり編」p.38 – (ログをちゃんと扱いたい) にまとめてあります。

Q6: 認証基盤として何かよいサービスはないか

A6: Amazon Cognito ユーザープールがマッチしそうだったのでご案内しました。なお、既存認証サーバーから移行方法として大きく分けて以下の2種類の方法があり、それぞれについて説明させて頂きました。
ユーザー移行 Lambda トリガーを使用したユーザープールへのユーザーのインポート
CSV ファイルからユーザープールへのユーザーのインポート
1 の場合、コードの記載が必要だが、ユーザーが既存のパスワードを引き続き使用でき、ユーザープールへの移行後にパスワードをリセットする必要はない。2 の場合、シンプルだがユーザーはパスワードの再設定が必要。詳細はドキュメント「ユーザープールへのユーザーのインポート」をご覧下さい。

これらの情報は「[AWS Start-up ゼミ] よくある課題を一気に解説! 御社の技術レベルがアップする 2019 春期講習 補講&おかわり編」p.23 – (認証基盤ちゃんとしたい) にもまとまっています。

Q7: AWS Certificate Manager で発行した証明書って自動更新されない?

A7: 条件に合致すれば自動的に更新されます。自動更新していない場合、何らかの条件にマッチしていない可能性があります。「ACM 証明書の自動更新が失敗するのはなぜですか ?」をご確認下さい。

Q8: Heroku でアプリケーションを開発しており、動画配信を行っている。Amazon CloudFront を使うのは効果ありそう?

A8: はい、動画ファイルを CloudFront でキャッシュすることでより効率的に配信出来る可能性があります。動画配信 (オンデマンド・ライブストリーミング) のアーキテクチャに関しては「Amazon CloudFront メディアストリーミングチュートリアル」や「AWS Black Belt Online Seminar 2018 動画配信 on AWS」なども参考にして下さい。

Q9: Application Load Balancer (ALB) / Network Load Balancer (NLB) / Classic Load Balancer (CLB) の違いは?

A9: 比較表は FAQ にあります。基本的には今であれば L7 であれば ALB、L4 であれば NLB を選択頂く事が多いかと思います。

Q10: AWS Elastic Beasntalk の利用を考えているがどうか。

A10: お客様は PHP/Java のアプリケーションを構築中でした。よく使う構成 (ALB, Auto Scaling) などの設定が容易であり、ミドルウェアの更新なども簡単であり、デプロイ機能も有しているので検討頂いて良いのではないかという点をお話させて頂きました。

Q: その他アップデートは?

そういえば最近、Amazon SageMaker で Managed Spot Training というものが使えるようになりました。これはトレーニングジョブを実行する際にスポットインスタンスを使って料金を大幅に削減するための機能です。使い方はこれまで SageMaker を触ったことのある方には簡単です。SageMaker Python SDK (>= v1.37.2 にする必要があります) の Estimator に train_use_spot_instances, train_max_wait, checkpoint_s3_uri, checkpoint_local_path を追加してトレーニングジョブを走らせると、

(途中省略)

このように最後にトレーニングにかかった時間 (Training seconds: 160)、実際に支払ったぶんの時間 (Billable seconds: 53)、どれくらい節約できたか (この例の場合 Managed Spot Training savings: 66.9%) が表示されます。なお、スポットインスタンスを使った際はジョブが中断されることもありますので、checkpoint を保存しそこから再開できるようトレーニングスクリプトを書いておく必要があります。詳細はブログドキュメントも合わせてご覧下さい。


週刊 Ask An Expert まとめ、今回はここまで

最後までお読み頂きありがとうございます。冒頭に書いたように、執筆者の独断により興味深かった質問 10 個を選び、且つざっくりとまとめて記載しているため、実際にはより具体的な質問をより多く頂いていますが、様々なご相談があることが伝わっていれば嬉しいです。まだ Ask An Expert カウンターをご利用になったことがない方も、AWS Loft Tokyo をご利用の際はぜひお気軽にご質問ください。

※Ask An Expert が混雑してお待ちいただく場合、またはエキスパートが不在の場合がございます。何卒ご容赦ください。

このブログの著者

針原 佳貴 (Yoshitaka Haribarra)
AWS の機械学習サービス Amazon SageMaker と、音楽・バンドが好きなスタートアップソリューションアーキテクトです。