【AWS EC2+RDS】SDVXDBのランキング機能について

SDVXDBのランキング機能を実装した時のメモを書きます。

これはなに

一言でいうとゲーム(SDVX)の公式サイトのランキングに辿りつきづらいからアクセスしやすくしたよという機能です。

…これだけ見ると「辿り着きづらくてもランキングをブックマークすればいいのでは」と思われるかもしれませんが、なんとランキングのリンクのURLが毎日頻繁に変わるという謎仕様で、以前から(ごく)一部の層が不便していました。

需要は比較的ニッチですが、その一部の層には痒いところに手が届く機能であるのと、エンジニア観点だとAWS活用練習のいい機会だと感じたので実装してみました。

技術選定理由

EC2

当初はECS(Fargate)でやろうとしたが、コンテナ周辺の設定でエラーが発生しどうしても解決出来なかったため、実装優先でEC2に変更。

下記動画のように最近は仮想環境の利用よりコンテナ環境の利用にトレンドが移っており、コンテナで出来るならコンテナで作業した方が良かったのだろうが、AWSもインフラも初心者ということもあり、今回はEC2を選択した(後述する作業の観点でもDockerは非現実的だったので結果的にはそれで良かった)

↑タイトルはセンセーショナルですが、内容は参考になる動画です

さらにLambdaでランキング更新機能を作ろうとしたが、途中でGUIを用いないと実装が非常に煩わしくなってしまう場面が存在したので、GUIが使用できるEC2に変更(security managerのフリートマネージャという機能を使ってGUI操作を行っていました)

※ちなみに、Lambda+RDSはアンチパターンとして見られている模様(意図しない多重アクセスが発生してしまう)。途中にproxyという踏み台サーバーを経由してRDSにアクセスする、というのが現在のベストプラクティスな模様。

RDS

AWSのデータベースにはRDS以外にもDynamoDBAuroraがありますが、今回はRDSを選択しました。

理由としては、まずRDBを選択したかったのでRDSかAuroraとなり、更にAuroraよりRDSの方が一般的な印象(根拠が論理的でないですが)なので初学者としてはこちらを触った方がいい、という判断を経てRDSとなりました。

構成図

構成としては以下の通りです。

 

つまづいたところ

RDS

セキュリティグループ周り。特に「同一セキュリティグループ内」ではなく「対象となるセキュリティグループのインバウンドルールに、許可対象のIPアドレスを追加する」という点がつまずいた点だった。(EC2+RDSの場合はワンクリックで出来るので躓かないかもしれない。Lambda+RDSの場合は注意)

VPC周りがまだ理解できていない。ローカルPCやEC2からRDSへアクセスする時に何度かアクセス遮断され、この周辺設定がボトルネックになってしまった感じがある。

よかったところ

AWSを活用するのは初めてだったが、使い方の感触が掴めたので良かった。以前からAWSに対して抱いていた苦手意識が少し薄れた。

自分はインフラエンジニアではないのだが、実務でAWSを使うことがあれば料金やセキュリティ等はいっそう気を遣わないといけないなと思った(正直な所、そうした部分は性格的に苦手ではあるのだが)。

今回触ったAWSサービス群は、仕事のみならずプライベートでも活用機会が多そうなので、手に馴染ませていきたい。

 

プロダクトの観点からすると、そもそもKONAMIの公式サイトが毎日URLが変わる謎仕様を修正してくれればこれは実装の必要がない機能なんですけどね…(小声)