【イベントレポート】JavaプログラマのためのAWSサーバーレスハンズオン-ServerlessFrameworkで画像処理アプリケーションを構築編-

本記事は、
弊社株式会社スタイルズで開催した**『[JavaプログラマのためのAWSサーバーレスハンズオン-ServerlessFrameworkで画像処理アプリケーションを構築編-](https://cloudshift.doorkeeper.jp/events/68810)』**(2018/1/19)のイベントレポートです。

![20180119_01.png](https://qiita-image-store.s3.amazonaws.com/0/223994/fec4206c-fc76-c7c9-0924-2713cc4cf8e7.png)

スタイルズでは定期的にビジネスセミナーを開催しているのですが、技術イベントは久しぶりの開催となりました。
2018年はもっと技術イベントも主催したいという意味も込めて、2018年の主催イベント一発目は**AWSサーバーレス**のテーマでハンズオンを企画いたしました。

## 当日は定員ぴったりの満席！

Doorkeeperでの受付開始直後に20名の定員となってしまったので、当日にご都合が悪くなられて、来場できない方もいるかな。。。
と心配していたのですが、受付開始時間から、お申込みいただいた皆様にお越しいただき。。。

なんと定員ぴったり20名(＋1名）の方にお越しいただきました！！
（1名の方はキャンセル待ちの状態だったのですが、直接会場にお越しいただきました！感激です）

![20180119_02.png](https://qiita-image-store.s3.amazonaws.com/0/223994/e7bcd878-333c-c9df-763a-9c7d3dd41c31.png)

## Gitの画面を見ながらハンズオン

挨拶、サーバーレスの説明もそこそこに、参加者の皆様をGitにinviteして、Gitの画面を見ながらハンズオンをすすめさせていただきました！

事前にご案内をしていた以下のインストールと**Git**、**Maven**のインストールを確認して、ハンズオンを開始！

- **ServerlessFramework**（>= 1.23.0）のインストール
- **AWS CLI**のインストール

今回のハンズオンでは、**AWS IAM**を個々にご案内させていただきました。

![20180119_03.png](https://qiita-image-store.s3.amazonaws.com/0/223994/1e81aa3c-941e-add9-38cf-53386efeb690.png)

## ハンズオンの概要

- awslabsの[aws-serverless-workshops](https://github.com/awslabs/aws-serverless-workshops)を参考に、サーバーレス画像処理アプリケーションの構築ハンズオン

- アーキテクチャは、**Amazon Rekognition**の顔検出機能を活用し、- **Amazon S3**に格納されているアップロードされた画像のリサイズ、**Amazon DynamoDB**を使用して画像のメタデータをユーザープロファイルに保存する、いくつかの**AWS Lambda**関数で構成。これらのLambda関数のオーケストレーションは、**AWS Step Functions**ステートマシンによって管理。

- 各AWS Lambda関数は**SpringCloud**フレームワークにより実装。各**AWS Lambda**関数及び、**AWS Step Functions**ステートマシンは**Serverless Framework**にてDeploy。

![20180119_04.png](https://qiita-image-store.s3.amazonaws.com/0/223994/5de9ec33-ccf1-4dc7-9296-233033d6c7a4.png)

## 感想と反省・今後に向け

アンケートで分かる範囲ですが、今回ご参加いただいた方は6割強が設計・開発職、4割弱が運用・監視などのインフラ職でした。
AWSサーバーレスというキーワードだと、やはりインフラエンジニアの方への訴求も強いのですね。

また、今回は、**Serverless Framework**の説明や、本構成における個々のサービスがどのような役割をになっているのかを駆け足で説明してしまったところがあったので、
今後は、上中下のような形で、もう少し丁寧に解説するという初級ハンズオン、逆に参加者にご参加いただきながらどんどん開発を進めていく上級ハンズオン（趣味のコミュニティみたいなイメージでGitで開発を進めるとか？）なんかがあっても良いのかな。と個人的には感じています。

## 2018年はデジタルトランスフォーメーションのための開発サービスがテーマ

スタイルズでは、今回のようなサーバーレス、コンテナーによるDevOps、IoTプラットフォームを利用したPoCなど、技術要素をいかにエンタープライズに適用していくのか？というテーマで、
2018年は多数ハンズオンイベントを企画していければと思っています。

インフラはAWSが基本になってくると思いますが、もしAWS×Devのテーマで聞きたいことや現在直面しているテーマなどがございましたら、
ぜひぜひご意見をお待ちしております！！

## 最後に

本ハンズオンの企画にあたり**Step Functions**に関しては以下の記事を参考にさせていただきました。大変勉強になる記事をありがとうございます。

* [Serverless FrameworkでStep Functionsが使えるプラグインをリリースしました](https://qiita.com/horike37/items/74c1cdbcfcd17928b83e)
* [Serverless Step Functions v1.0をリリースしました](https://qiita.com/horike37/items/92c9f7aff08b408233ca)


また、本ハンズオンで講師を担当したスタイルズ社員も**Serverless Framework**に関してQiitaで発信をしています。
ご参考までにご覧ください。

* [Serverless Frameworkならすぐ出来るよね AWSでサーバーレス（API+Lambda[java]を簡単セットアップ）](https://qiita.com/ukitiyan/items/945d84282726d3fe2c2f)
* [Serverless FrameworkをつかってSpring Cloud Function !!](https://qiita.com/YusukeHasegawa/items/b9599834554b6ddb016e)
* [Serverless Frameworkをつかってバーコード画像APIを作ってみた](https://qiita.com/YusukeHasegawa/items/6c02659d6cb9dd092c75)
* [LambdaでEC2をスケジュール起動/停止するServerless Frameworkのテンプレート](https://qiita.com/ukitiyan/items/234a6dda8d6b102feb08)