CRAIDでブリッジエンジニアをしている入社2年目のAriです。
普段ともに仕事しているセブ在住エンジニアのLawrence Beloさんが投稿した記事を翻訳、加筆したので、当記事で紹介します。
英語を勉強されている方は、ぜひ当記事を日本語で理解した上で、英語記事を読んで頂くと英語の勉強にもなるのでおすすめです。
翻訳元記事(オフショア子会社Full Speed Technologiesの技術ブログ)
最新のプロジェクトに取り組み始めて以来、Typescript、React、Nextjs、そしてAWS を使用するようになりました。
私はこれまでAWS サービスに触れたことがあまりありませんでしたが、最近のWeb開発の進展や業界の進化に触れることで、目から鱗が落ちる思いでした。
この投稿では、私がこれまでに学んだことを共有していきます。
AWS Aurora
Auroraとは?
Amazon Aurora は、MySQL および PostgreSQL との完全な互換性を備えたクラウド用に構築されたリレーショナルデータベース管理システム (RDBMS) です。Auroraは、10分の1のコストで商用グレードのデータベースのパフォーマンスと可用性を提供します。
現在、Aurora は PostgreSql と MySQL のみをサポートしています。
Aurora はクラウド向けに構築されており、標準の RDS プラットフォームの一種です。
Aurora を使用する場合、少なくとも CRUD ワークフローに関しては、Aurora と MySQL との違いはほとんどありません。
私にとって、主な違いはサービスの内部動作にあります。
この主な違いについては以下で説明します。
バックエンドの最適化
MySQL を使用していると、主にビッグデータを扱う場合に、いくつかのハードルに直面することがよくあり、これらの経験により、最適化について学ぶことになりました。
一部の機能は私が実装するのが適切であると判断しましたが、自動的に実装されるべきだったと感じています。
AWS RDS
Amazon Relational Database Service (Amazon RDS) は、クラウドでのデータベースのセットアップ、運用、拡張を簡単にするマネージドサービスのコレクションです。MySQL と互換性のある Amazon Aurora、PostgreSQL と互換性のある Amazon Aurora、MySQL、MariaDB、PostgreSQL、Oracle、SQL Server の 7 つの一般的なエンジンから選択し、AWS Outposts 上の Amazon RDS を使用してオンプレミスにデプロイします。
RDS を使用すると、数回クリックするだけでデータベースプラットフォームを安全かつ最適化された方法で導入できます。また、RDS を導入すると、自動バックアップとパッチ適用機能によりプラットフォームのメンテナンスも自動化できます。
しかし、これらの特徴以外にAuroraが他のデータベースより優れている主な理由があります。
Aurora は RDS を拡張しており、メンテナンスの自動化だけでなく、ストレージサブシステムの最適化も可能にします。
最適化されたストレージサブシステムは、RDS で使用される EBS の代わりに NVMe SSD ドライブを使用して設計されており、パフォーマンスが大幅に向上します。
利点は次のとおりです。
- データのコピーを6 つ作成し、複数の場所に分散して AWS S3に継続的にバックアップ
- 複数のリージョンにデータを複製することで、高速なローカルパフォーマンスと災害時の復旧性の両立。
- アプリケーションの成長に応じた自動スケーリング
自動メンテナンスとパッチ適用
AWS RDS を使用すると、リアルタイムでデータを監視できます。
これらのデータはコンソールで表示できるだけでなく、監視する特定のデータを管理し、要件に応じてダッシュボードをカスタマイズすることもできます。
モニタリングは、拡張モニタリングまたはCloudWatchを通じて実行できます。
RDS は、拡張モニタリングからのメトリクスを Amazon CloudWatch Logs アカウントに配信します。CloudWatch Logs から CloudWatch でメトリクスフィルターを作成し、CloudWatch ダッシュボードにグラフを表示できます。
また、選択したモニタリングシステムで CloudWatch Logs からの拡張モニタリング JSON 出力を使用できます。
詳細については、Amazon RDS FAQ の「拡張モニタリング」を参照してください。
Auroraの操作
これまで説明したように、CRUD API の開発に従来の DB(MySQL) を使用する場合と Aurora を使用する場合の平均的なワークフローには、ほとんど違いがありません。
ただし、Aurora を使用しているうちに、MySQL と比較するのは少し不公平であるという結論に達しました。Aurora にはより最適化されたストレージサブシステムがありますが、MySQL の代わりに Aurora を使用する主な魅力は、自動監視とパッチ適用だと思います。
自動監視とパッチ適用はAWSが提供するサービスであり、Aurora+MySQLを使うか、MySQLのみを使うかを決定する際にマイナスの点として見るべきではありません。
アプリケーションのスケーリングを考慮するといった特定の状況ではこれらの機能は確実にあった方がよく場合によっては必須になります。
ただし、最適化は MySQL でも可能です。AWS コンソールを使用して接続を監視し、SQL パフォーマンスを表示することは、API の最適化のデバッグという点で非常に役立ちます。
AWS SES
SESとは?
AWS SES は、アプリが独自に指定したメールまたはドメインを使用してメールを送受信できるようにする AWS のサービスです。
たとえば、特別オファーなどのマーケティング電子メール、注文確認などの取引電子メール、ニュースレターなどのその他の種類のメッセージも送信することができます。Amazon SES を使用してメールを受信する場合、メール自動応答、メール配信停止システム、受信メールからカスタマー サポートチケットを生成するアプリケーションなどのソフトウェア ソリューションを開発できます。
開発中、AWS SES はサンドボックスモードになっており、検証された ID からのみメールを送受信できます。
検証されたアイデンティティ
検証済みのIDは、メールを送信するためにAWS コンソール経由で AWS SES に登録したメールまたはドメインです。
SESのメリットとは?
従来、大規模な電子メールソリューションの構築は複雑で、多額の費用がかかります。
電子メールサーバー、ネットワーク構成、および IP アドレスの評判を維持する際の課題に対処します。これらの AWS サービスの主な魅力であることが多いように、これらの問題はプラットフォームによって適切に処理され、ボタンをクリックするだけで重要な構成を適切に設定できるようになります。
SESを使用した感想
SES での作業は全体的に非常に簡単でした。
typescript API をダウンロードし、aws cli をセットアップし、本人確認 (私の場合はメール) を確認するだけで、かなり早く開始することができました。



