Developers.IO 2018に参加してきました
Developers.IO 2018 とは
Developers.IO は、クラスメソッド株式会社が主催するイベントです。
Developers.IO 2018 のテーマは「AWS」でした。
- 立ち見が発生してしまったこと
- カンファレンス用の Wifi がなかったこと
- 懇親会の食べ物がすぐになくなってしまったこと
は少し残念でしたが、AWS といえばクラスメソッドさん、クラスメソッドさんといえば AWS ということもあり、どのセッションもとても勉強させていただきました。
印象に残ったセッション
セッションの概要と感想をまとめました。
次世代モバイル向けクラウドサービス AWS AppSync を使って店舗スタッフと顧客の体験を最大化する方法
REST の次のパラダイムとして注目されている GraphQL をベースとした AWS マネージドサービス AppSync の紹介と、AppSync を自社サービスのチャット機能に採用したという話でした。
AppSync を利用したスキーマファースト開発でスマホアプリの開発効率が向上したとのこと。
特に印象に残ったのは AppSync を利用したモバイルエンジニアの感想で、
- GraphQL の前提知識が必要だが、手軽に利用できたのが良かった
- リクエストが 1 つで済むので、多くの場合で実装がシンプルになる
- クライアントが自動生成されるので、アプリの実装は少なくて済む
- アプリ側で必要なプロパティだけを指定して取得できるので効率的
- 特にクロスプラットフォームで UI が異なる場合などに適している
といったことが列挙されていました。
PyCon JP 2018 でも AppSync を紹介するトークがありましたが、スマホアプリ開発に携わっている身としていち早く試してみたいサービスです。
気になる点としては、サポートされている SDK が iOS、Android、JavaScript である点と(Python ない)、
Q . AWS AppSync ではどのようなアプリケーション開発言語がサポートされていますか?
A . AWS AppSync SDK では iOS、Android、JavaScript がサポートされています。JavaScript のサポート範囲には、React や Angular などのウェブフレームワーク、および React Native や Ionic といったテクノロジーが含まれます。また、AppSync GraphQL エンドポイントへの接続にオープンソースクライアントを使用して、一般的な HTTP ライブラリやシンプルな CURL コマンドなど、その他のプラットフォームも利用できます。
Aurora などの RDBMS を利用する場合、Lambda を利用する必要があり、
- 最大処理時間 5 分問題
- 複数回起動問題
- コールドスタート問題
などの Lambda の制約が付きまとう点です。
Q . AWS AppSync で複雑なクエリを実行するにはどうすればよいですか?
A . AWS AppSync で利用できるデータソースでは、GraphQL を使用することで、Amazon DynamoDB、Amazon Elasticsearch Service、AWS Lambda によって提供される機能を最大限活用できます。インデックス作成や条件チェックといった機能とマッピングテンプレートによって、DynamoDB から包括的な結果が返されます。あいまい検索、位置情報検索などの Amazon Elasticsearch Service のユースケースもアプリケーションで利用できます。さらに、Lambda を使用した連続的なリクエストやバッチリクエストによって、Amazon Aurora などの他のソースからもデータを返すことができます。
クラスメソッドさんがチャット機能で利用したように適切なユースケースで利用すると効果を発揮しそうです。
5 つのユースケースから理解する AWS のデータベースサービスの勘所
データベースサービスの使い分け
ユースケース | データベースサービス |
---|---|
一般 Web システム | Aurora, ElastiCache |
サーバーレス | DynamoDB |
データ分析 | Redshift, Athena, Aurora Parallel Query |
IoT | IoT Analytics, Redshift, Athena |
レコメンデーション | Neptune |
Aurora
- 複雑なクエリが必要な場合
- 同時多数アクセスがありうる場合(コネクションプールを活用する)
ElastiCache
- 高速に読み書きが求められる場合
DynamoDB
- 複雑なクエリが必要な場合
- 同時接続数が安定しており初回起動時間が長くても問題がない場合
Redshift
データ分析で大容量データ(TB〜PB)を扱う必要があり、明確に分析対象が決まっている場合(PostgreSQL 互換インターフェースをもつ)
Athena
データ分析で大容量データ(TB〜PB)を扱う必要があり、明確に分析対象が決まっていない場合(Presto を使用して S3 ファイルへ並列にアクセスする)
IoT Analytics
多数のデバイスからの接続があり、デバイスのデータを継続的に登録する必要がある場合
Neptune
既存の行動データを元に推奨するアイテムを抽出したい場合
様々なユースケースでデータベースサービスを適切に使い分けるということを学んだセッションでした。
多くの場合は RDBMS で要件を満たすことができるかもしれないが、使い慣れたデータベースを選択するのはアンチパターンであり、RDBMS では最適ではないかもしれないことを念頭に置くことが大切ということ学びました。
聞いたセッション
コンテナジャーニー〜AWS における段階式コンテナ運用〜
- CI/CD の構築に CodePipline, CodeCommit, CodeBuild を使っている以外はほとんど同じ構成で自信にさせていただきました。
基礎から応用までじっくり学ぶ「AWS でのネットワークの作り方」
- ランチセッションだったのであまりメモれませんでしたが、ネットワークに疎い自分でもわかりやすい内容でした。
クラスメソッドにおける WebAPI エンジニアリングの基本的な考え方と標準定義
- 会社として標準定義があるのはさすがクラスメソッドさんという印象で、REST をファイルシステムメタファと捉えるのは新鮮でした。
- REST は一定の原則こそあれどかなり自由度が高く、定義するのはかなり大変だと思うので、REST フレームワークにのっかちゃうという選択肢もアリかなと感じました。
AWS のセキュリティ設定がどうなっているか抜け漏れなくちゃんと確認する方法
-
insightwatchというクラスメソッド提供の無料セキュリティチェックサービスの紹介でした。
ご利用中のAWSアカウントを無料でチェックし、セキュリティのガイドラインに沿った運用なのか、数分で確認いただけます
ということでどこまで無料でできるかわかりませんが、便利そうです。
DevOps:変化の激しい環境でビジネス競争力を向上させる具体的な方法
- コント調の発表がユニークでとても面白かったです。
- バリューストリームマッピングワークショップ参加してみたいです。
今からでも遅くない 基礎から学ぶサーバーレス開発 -キホンの『キ』-
- サーバーレスが注目されるまでの経緯をオンプレの時代から丁寧に解説されており、とてもわかりやすかったです。
- ローカル環境構築のし辛さやアプリケーションフレームワークの不在といったサーバーレス開発のつらみの話が興味深かったです。
Discussion