目次
大友(@yomon8)です。
最近、どういうサービスを作るか曖昧な状況からプロジェクトに入ることが多くなりました。
何ができるのか、何がしたいのかを手探りで探していくなかで、プロトタイピングは一つの武器になります。そこで本記事ではAWSソリューション(AWS Solutions)をご紹介します。
なお、プロトタイピングという用語自体は従来からありますが、DevOpsへの取り組みの主要トピックの一つであり、下記の観点からも有用な内容となっています。
参考:DevOpsの定義
- プロトタイピング的な開発
- デプロイの自動化
- OSSの利用による安くてエコな開発
- 運用環境
- Agile
- サービスを矢継ぎ早に出すための方法論
- ビジネス側要件の変更要求に柔軟に対応
- 運用ボトルネックの解消
- ビジネス貢献のためのサービスライフサイクル効率化の一手段
出典:http://jasst.jp/symposium/jasst13tokyo/pdf/C6.pdf
AWS ソリューションとは
AWSソリューションのサイトは以下になります。
https://aws.amazon.com/jp/solutions/
こちらにも書かれている通りAWSソリューションとは「一般的な問題を解決し、より速く構築する支援となるように設計された検証済みのテクニカルリファレンス実装」です。
頻出課題に対する、アーキテクチャリファレンスです。ただのリファレンスと違うところは一部のソリューションにはCloudFormationのテンプレートが付属していることです。
これがどういうことかと言うと、以下のページのように、左にある複数のAWSサービスが連携したアーキテクチャを、「AWSコンソールでソリューションを起動する」をクリックするだけで、自身のアカウントに展開できるということです。
AWSソリューションをいくつかご紹介
最近、実際に利用したAWSソリューションをいくつかご紹介します。
Video on Demand on AWS
つい先日、自社で利用する動画のストリーム配信の仕組みの構築を頼まれました。
自社向けなので、時間かけないで作る必要があったのですが、動画配信の仕組み作ったこと無いなと途方にくれました。そこで、探したら見つかったのがこの「Video on Demand on AWS」です。
https://aws.amazon.com/jp/solutions/video-on-demand-on-aws/
以下のような構成で動画変換、ストリーム配信の仕組みをデプロイすることが可能です。
使い方の流れとしては、
① S3にmp4等の動画ファイルをアップロードする
② ファイルのアップロードイベントにより処理が開始する
③ この際に登録したメンバーに、処理開始のメールが飛びます(素晴らしい)
④ 上記アーキテクチャの通り動画の変換処理が流れます
⑤ 処理完了後にメールが届きます。そこには動画ストリーム配信に必要な各種CloudFrontのURLが載っています(素晴らしい)
この通り、かなり使い物になるものが完成します。
AWSのリファレンスアーキテクチャであるだけあり、サーバーレスで構築されているので、維持費も最小限です。変換前のファイルのGlacierへのアーカイブ機能などもあり、1クリックで作成したとは思えないできです。
また、CloudFormationのテンプレートが展開されているのが、AWSソリューションの良いところでもあります。
この機能においては、世界中への配信は不要だったので PriceClassを変更したり、自社のドメインを使いたかったのでACMの証明書と連携して、Aliasを設定したりといった微調整をして使っています。
IoT Device Simulator
IoT関連のプロトタイピングで難しいことの一つが、大量のデバイスから投入されるデータだと思います。
この、「IoT Device Simulator」は、その名の通りIoT Deviceをシミュレートしてくれます。
https://aws.amazon.com/jp/solutions/iot-device-simulator/
アーキテクチャは以下の通りで、管理画面がユーザの主なアクセスポイントです。CloudFormationデプロイ後にURLが載ったメールが来ます。
管理画面の操作はデバイスの登録と管理が主なものになります。デバイスは数十でも数百でも登録可能です。設定はDyanamoDBに保存されており、LambdaとFargateが、その設定を浸かってDeviceをシミュレートします。
デバイスのシミュレートにより生成されたデータはAWS IoTに渡されるので、後は好きに後続のパイプラインに流すことができます。
管理画面はAngularで作られたSPAです。しっかり作られています。
設定できるのは、データの属性が変更可能なカスタムデバイスのシミュレータと、プリセットの自動車のシミュレータです。
以下の画面は自動車のシミュレータの管理画面です。自動車のシミュレータはプリセットだけあって管理画面も力が入っています。リアルタイム(を模した)での走行位置や、速度や燃料などが取得できます。
以下のようにAWS IoTにデータが流れてきます。(使ったことある方しかわからない画面ですみません)
このIoT Device Simulatorも少しだけカスタマイズして使っています。
Fargateがかなり大きいサイズですが、相当数のデバイスを投入しない限りは、もっと小さなサイズで十分動きます。ちなみに、この辺りを調整すると小さくできます。
https://github.com/awslabs/iot-device-simulator/blob/master/deployment/iot-device-simulator.yaml#L1369-L1392(公開終了)
Data Lake on AWS
このAWSソリューションは、少し前まではAWS Data Lake Solutionと名前がついていたのですが、今は名前が変わったようです。
https://aws.amazon.com/solutions/data-lake-solution/
詳細は前に自分のブログに書きましたので、リンクだけ貼っておきます。
AWSのData Lakeと言えばLake Formationのリリースが待たれますが、ここにある機能をどこまで実装してくれるか楽しみです。
AWSには沢山のサービスがありますが、AWSがどんな意図でサービスを展開しているのか、その一端が垣間見えるところもAWSソリューションの面白いところです。
まとめ
著者が最近利用したAWSソリューションをいくつかご紹介いたしました。
要件をまとめる時に、文字や資料の絵だけではイメージが中々固まらない場合があります。そういった際に力を発揮するのがプロトタイプです。プロトタイプ環境を作り、皆で見ながら話をするだけで、一気に進捗があるのを今まで何度も経験してきました。
ただ、このタイミングで時間をかけられるケースは少なく、いつも切羽詰った状態な気がします。そんな時にクリック一つで完成度の高い環境をデプロイできて、その中身もオープンでカスタマイズ自由である、AWSソリューションはプロトタイピングの大きな武器になっています。
手を動かして構築するだけで勉強になることも多いので、興味がありましたら是非、使ってみてください。