[AWS公式トレーニング]Planning and Designing Databases on AWSを受けてきました。
AWS公式トレーニング
AWS公式トレーニングはAWSから認定を受けたインストラクター(講師のような役割)が提供するトレーニングコースです。 AWSから認定を受けたトレーナーが、AWSから提供された教材をもとにコースを提供するので一定以上の品質が保証されています。
詳しくは以下のページが参考になるかと思います
Planning and Designing Databases on AWS(PDDA)
今回はクラスメソッドからAWS公式トレーニングコースとしてPlanning and Designing Databases on AWSが新しく提供される予定とのことなので、先立って受講してきました。
今回の講師は51shivaさんでした。
トレーニング内容としては以下の通りです。 トレーニングの名前からも分かるようにDBに関する内容です。 モジュールというチャプターで区切られており、全部で14チャプターありました。
- モジュール0: Cource Introduction
- モジュール1: Database Concepts and General Guideliness
- モジュール2: Database Planning and Design
- モジュール3: Databases on Amazon EC2
- モジュール4: Purpose-Build Databases
- モジュール5: Databases on Amazon RDS
- モジュール6: Databases in Amazon Aurora
- モジュール7: Amazon DocumentDB (MongoDB 互換のデータベース)
- モジュール8: Amazon DynamoDB Tables
- モジュール9: Databases in Amazon Neptune
- モジュール10: Databases in Amazon Quantum Ledger Database (Amazon QLDB)
- モジュール11: Databases in Amazon ElastiCache
- モジュール12: Data Warehousing in Amazon Redshift
- モジュール13: Cource Review
期間は3日間で時間は9:30-17:30(内昼休憩1時間)でした。 スケジュールについてはその時次第ではありますが、参考までに以下のような日程で進みました。
- 1日目: モジュール0 ~ モジュール6(途中まで)
- 2日目: モジュール6(途中から) ~ モジュール9
- 3日目: モジュール9 ~ モジュール13
大体、モジュール1つが1時間 ~ 2時間程度で終わります。 適宜休憩があったので1日7時間と長めでしたが全体を通して集中して取り組むことができました。
また、リモートで受講できるので今回は自宅から受けました。
基本的には講義形式ですが、いくつかのモジュールでは用意されたAWS環境を使って自分で演習をこなすようなラボと言われるものもありました。 自分で手を動かすとより理解が深まったと思います。
個人的な感想としてははAWSのDBを使用したサービスの設計前、リファクタリングの前などに受講しておくと適切なDBの選択ができるようになるかと思います。
以下は講義中のイメージ画像です。 原則として講義中のスクリーンショットは禁止なので、こちらは特別に許可をもらって、コーチの方が補足資料として用意した部分になります。 後述のNeptuneのモジュールのデモです。
全体を通しての感想
資料自体はAWSから提供されていて十分な内容だったのですが、ところどころでトレーナーが独自に補足説明や実際のサービスを使ったデモなどを入れていてくれたので、より深く理解することができたかと思います。 このあたりはトレーナーによりけりだと思うので参考程度にとらえておいてもらえると嬉しいです。
各モジュールの感想
モジュール0: Cource Introduction
ここではコースの概要や諸注意などが説明されます。 モジュール自体も短く、サッと終わりました。
モジュール1: Database Concepts and General Guideliness
ここでは以下のようなことが説明されます。
- AWSといったクラウドコンピューティングについてのメリット
- DBの特性など
- CAP定理やPIE定理
- ACIDとBASEの違い
- など
クラウドのDBに関する知識の再整理といったところでしょうか。
モジュール2: Database Planning and Design
ここではどういった要件がDBを選択する上で大切になってくるのかが説明されます。 例えば以下のような感じです。
- データストレージ
- レイテンシやスループット
- 可用性
- など
DBにおいて考慮すべき要件などはある程度知っていたのですが、あたらためて説明を受けることで体系化されたと感じました。
モジュール3: Databases on Amazon EC2
このあたりから実際のAWSサービスの説明になっていきます。 このモジュールではEC2をDBのホスト先として使う場合を扱っています。
EC2の説明などやEC2にDBをホストしたほうが良い場合などの説明がありました。
モジュール4: Purpose-Build Databases
このモジュールではオンプレミスからAWSへの移行の戦略が説明されました。 実際の事例も踏まえてAWSのDBサービスの利用などを知ることができ興味部かかったです。
また、この後に扱う各DBの簡単な説明やSQLとNoSQLの違いの説明などもありました。
モジュール5: Databases on Amazon RDS(ハンズオンあり)
ここではAWSのマネージドDBサービスであるRDSの説明がありました。 インフラ寄りの話が多かった印象です。
内容としては以下のような感じです。
- 可用性を確保するためにはどういった構成にすればよいか
- EC2でホストする場合との比較
- RDSで使用可能なDBエンジン
- 監視・運用
- など
また、チャプターでは初めてハンズオンがあり実際にRDSを触ることができました。 手順などもしっかり整備されているので初めてRDSを触る人でも問題なくこなせると思います。
モジュール6: Databases in Amazon Aurora(ハンズオンあり)
ここではAWSに最適化されたDBサービスであるAmazon Auroraについての説明がありました。 RDSとの比較やAuroraがどういった仕組みになっているのかを知ることができました。
Auroraのメリットを改めて整理するいい機会になったと思います。 また、内部の仕組みまである程度詳しく解説してくれるので大変勉強になりました。
このモジュールのハンズオンでは実際にAuroraを使用してクエリを投げたりしました。並列クエリの比較などを行い、早くなっていることを改めて確認できました。
モジュール7: Amazon DocumentDB (MongoDB 互換のデータベース)(ハンズオンあり)
ここではMongoDB互換のドキュメント用DBであるDocumentDBについての説明がありました。 Auororaと同様にMongoDBの裏側も知ることができて楽しかったです。 単にMongoDBをホスティングしているだけでは無いということもここで初めて知りました。
DocumentDBは馴染みの薄いサービスでしたが、しっかりと理解することができたと思います。 途中途中でトレーナーが補足で説明してくれたのでより理解が深まったと思います。
ここでもハンズオンがあり実際にDocumentDBを触ることができます。
モジュール8: Amazon DynamoDB Tables(ハンズオンあり)
ここではAWSが開発したKVSのDynamoDBについての説明がありました。 DynamoDBは触れた事があるサービスで事前に色々知っていたのですが、テーブル設計の注意点やキーの選択など網羅的に説明があったと思います。
DynamoDBは単なるKVSと異なりインデックス周りで色々テクニックがあるのですがそのあたりも説明があってさすがだなと思いました。
ここでもハンズオンがあり実際にDynamoDBを触ることができます。 テーブルの作成やDynamoDBに対するクエリなど初歩的ではありますが、実際にDynamoDBを触る上で理解を助けるような内容だったと思います。
モジュール9: Databases in Amazon Neptune
ここではグラフデータベースであるNeptuneについての説明がありました。 グラフDBは存在自体は知っていたのですがここで初めて勉強することになりました。
数学のグラフ理論と密接な関係にあるDBなので、その用語なども出てきましたがわかりやすい説明がありました。
また、どういったユースケースでNeptuneがパフォーマンスを発揮できるのかなども説明があり使い分けの判断に役立ちそうだと思いました。
トレーナーが実際にNeptuneを触っている様子を共有してくれてイメージがつかみやすかったです。
モジュール10: Databases in Amazon Quantum Ledger Database (Amazon QLDB)
ここではAWSが開発した台帳データベースであるAmazon QLDBの説明がありました。 印象としては分散していないブロックチェーンのようなDBなのかなといった印象です。
ただ、ブロックチェーンとの対比などからQLDBのメリットもわかりやすく説明されていました。 また、QLDBの特性がどういったケースで有効になるのかなどの説明もあり、ビジネス上の課題によっては有用なサービスだという印象を受けました。
トレーナーが実際にQLDBを触っている様子を共有してくれてイメージがつかみやすかったです。 実際にデータがどんな感じで登録されていくのかなどのフローがよくわかりました。
モジュール11: Databases in Amazon ElastiCache
このモジュールではマネージド型のインメモリDBであるAmazon ElastiCacheについての説明がありました。
ElastiCacheにはMemcachedとRedisの2つがあるのですが、両方とも同じくらいのボリュームで説明がありました。 また、MemcachedとRedisの使い分けやインメモリデータベースとしてのユースケース・使用上の注意点などの説明もありました。
トレーナーが実際にMemcached, Redisを触っている様子を共有してくれてイメージがつかみやすかったです。 実際にどんな感じで使用するのかが分かると実装上も役立つと思いました。
モジュール12: Data Warehousing in Amazon Redshift(ハンズオンあり)
このモジュールではデータウェアハウスサービスであるAmazon Redshiftの説明がありました。 いわゆるビックデータと呼ばれるような、巨大なデータをいかに取り扱うかといった課題に対する解決策の一つです。 RedshiftではSQLを使用して分析することができます。
RedshiftはPosgreSQLやMySQLなどと若干異なり、少し癖があるのですがそのあたりの説明もしっかりとされてました。
また、このモジュールではハンズオンがあり実際にRedshiftを触ることができました。 S3からのデータのインポートやエクスポートなども試すことができて興味深かったです。 DB系のサービス触るときに毎回思うことなのですが、データセットを用意するのが結構面倒だったりします。 トレーニングのハンズオンではそのあたりも用意されてるので手間がかからず良かったと思います。
モジュール13: Cource Review
ここではAWSに対するフィードバックの案内などがありました。 ボリュームもほぼなくサッと終わりました。
終わりに
受講する前は1日7時間x3日と聞いてこれはヘビーだなと思っていましたが、全体を通して有意義なトレーニングになったと思います。知っているモジュールでもあらたな学びがあり、知らないところについても講義を通して理解を深められました。
実際に使うとなると各DBサービスについてもっと勉強していく必要はあるかと思いますが、その取っ掛かりとして有意義なコースだったと思います。
講義を終えた今、シーンごとにどのDBを使えば良いかという判断ができるようになったと思います。