AWS Startup ブログ

【週刊 Ask An Expert #03】AWS Loft Tokyo で受けた質問まとめ #AWSLoft

はじめまして、Startup Solutions Architect のザビオです。
来週からGWですが、皆様何して過ごしますか?あいにく AWS Loft Tokyo は 4/27 – 5/6 はクローズ なのでお気をつけください!
先週に引き続き Ask An Expert の一週間をまとめてみました。

Ask An Expert ?

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

この「週刊 Ask An Expert」では、我々 AWS のエンジニアが Ask An Expert ではどのような質問を受け、どんな感じで対応しているのか、 “非常にざっくりと” ご紹介しお届けしていきます。
※ 似たご質問をまとめたり、ざっくりまとめにくいご質問を省いたりしているため、実際のご質問件数、内容とは異なる部分があります。

週刊 Ask An Expert #3 – 2019/04/22〜04/26

Q. Amazon API Gateway + AWS Lambda で処理が 29 秒を超えたときタイムアウトする問題をどうしたらいいか?

非同期 API にできないか検討する(kick する API と結果を確認する API を分ける)。 または WebSocket API で、処理が終わったらサーバ側から通知させる。
そもそも30秒timeoutを超えるものを気にするのであれば、Lambdaではなく Amazon EC2/Amazon ECS などの利用をご検討いただくようご案内をしました。

Q. 必要な EC2 インスタンス数の見積もりがほしい

アプリケーションの処理内容やトラフィック量によって変わるので、一概にはご案内しにくい。
必要なときに必要な分だけインスタンスを増減させるのが AWS の考え方なので、性能測定していただいて必要なインスタンスを選んでください。

Q. SMS とプッシュ通知を送れるサービスはないか。

Amazon Pinpointをご紹介しました。

Q. 節約のため、EC2 インスタンスを夜間停止したい。

Amazon CloudWatch Events + Lambda(AWS SDK) を使用しての停止をご案内しました。

Q. Amazon Aurora Serverlessのユースケースを教えてほしい。

開発及びテスト用のデータベース用途。制限事項があるので使用する際にはドキュメントを参照ください。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.use-cases

Q. Amazon RDS for MySQL の SELECT が遅い。CPU 使用率は低い。

クエリを EXPLAIN してみてください。例えば、テーブルスキャンになっていて I/O がボトルネックになっている可能性はないか、など。

Q. EC2 上に構築した PHP MyAdmin から RDS の MySQL に接続出来ない

対象インスタンスに SSH 後、nc コマンドが失敗したので Security Group を確認。
RDS への接続が許可されていなかったため、対象サーバーからの接続を許可し、疎通を確認。
PHP MyAdmin から再接続したが、継続して接続できない状況だった為、接続先設定情報が誤っていないか、PHP MyAdmin のログに詳細な記載がないか確認を依頼しました。

Q. Ruby on Rails で構築された REST API アプリが動いている EC2 がある。今まで問題なく動いていたが、EC2 のリタイア対応後動かなくなった(リタイア対応は別エンジニアが実施しており詳細不明)

確認をした所、まず Elastic Load Balancing から対象の EC2 のヘルスチェクパスが通っておらず、unhealhy となっていた。
再現性を確認するために、対象インスタンスに SSH でログインし、ヘルスチェックと同じ curl コマンドを実行したが 404 が返却された。
まずはELBからのヘルスチェックをパスするように設定を行う必要がある。
また、インスタンスを調査した所、nginx は起動しているものの、puma が動いていなさそうだったのでこちらが起動するように確認をお願いしました。

Q. Amazon Elastic Container Service for Kubernetes (Amazon EKS) と Amazon Elastic Container Service (Amazon ECS) どちらがいいのか

Kubernetes の知見がある、これから学習していきたい、他の環境の利用も想定されるなどの場合などは EKS は一つの選択肢となる。
一方、Kubernetes にこだわりが無い、Dockerのマネージドサービスを利用したい場合には ECS が一つの選択肢となります。

Q. ECS の更新は RollingUpdate と Blue/Green デプロイのどちらが良いのか

RollingUpdate はデプロイが早く出来て、追加のリソースは不要だが、本番適用前ののテストが出来ない。
Blue/Green デプロイは追加のリソースが必要だが、テストリスナーを設定することで本番適用前のテストが可能。
どちらがマッチするかはお客様の要件に合わせて検討ください

Q. 以前 AWS Elastic Beanstalk へのリクエストのスパイクがあったが、Amazon EC2 Auto Scaling のスケールが間に合わず、リクエストがさばけなかった

事前に分かっているスパイクであれば、事前にインスタンス数を増やしておく
そうでない場合、ある程度余裕のある最低台数に設定しておく方法がある
Webサービスなどの、参照が多いようなワークロードにおいては、CloudFrontも効果がある。
また、想定されるリクエスト数がある場合、jmeter などを使ってリクエストがスパイクした時に想定どおりにスケールするか確認して頂くよう依頼しました。
(以下の、システム負荷下げたいが参考になるかと思います。)

Q.アプリから特定のログの集約、分析を考えているなお、Amazon QuickSight から参照するときには RDS に入ったデータと組み合わせて分析したい

S3 を起点に考えると良さそうです
アプリからのデータは S3 のバケットに配置する(Amazon Kinesis Data Firehose を使う、AWS SDK を使うなどなど)
上記への Put をトリガーとして別途 Lambda を起動し、RDS のデータを所得し、処理を行ってから別 S3 バケットに配置し、QuickSight から参照するなどが考えられそうです
(以下の、ログをちゃんと扱いたいが参考になるかと思います。)

Q. AWS AppSyncを使って、chatサービスを作っている。
アプリが開かれていない場合にpush notificationを飛ばしたい

AppSyncの裏のデータストアはAmazon DynamoDBだったので、更新履歴をDynamoDB Streamsでhookして特定の参加者に個別でpushするようlambdaで実装する案を提示しました。

Q. AWS Batch での処理が OOM で落ちる。Instance Type などどうすれば?DynamoDB に更新するのも Batch でやっているが問題ないか?

Job Definition の memory を上げる、Instance Type は Optimal にするか、 メモリ最適化のInstance Typeを使うと良いと思います。
Batch から DynamoDB に書いてもいいけど、もっと柔軟にしたいのであればAWS Step Functionsの利用検討も案内しました。

週刊 Ask An Expert まとめ、第3回目はここまで

いかがでしょうか。似たご質問をまとめたり、ざっくりまとめにくいご質問を省いたりしているためそっくりこのままやり取りが行われているわけではありませんが、様々なご相談をいただいていることをお伝えできれば嬉しいです。自分も相談したいな?と思って頂けましたら、ぜひ Ask An Expert カウンターまでおこし頂ければ幸いです。

先日行われたイベントにはなりますが、
4/25(木)にて「月刊 Ask An Expert!AWS Loft でエキスパートが受けた質問まとめ #01」
を開催しました。

イベントではAsk An Expertでいただく質問に対して解説を加えながら、且つ会場からのご質問なども受けながら知見を共有していきたいと考えています。

今後、毎月 AWS Loft での質問まとめイベント “月刊 Ask An Expert” を開催していく予定ですので、ぜひご参加ください。
開催詳細が決まり次第ご紹介いたします。

このブログの著者

中武 優樹(Yuki Nakatake)
Blockchain,Database,Zabbix が好きなスタートアップ ソリューションアーキテクト。