AWSサービスを用いた今後のバッチ処理のお話〜開発本部・TechLunch〜
オンライン診療アプリ「CLINICS」を開発している田中です。
本日は、メドレー開発本部にて隔週で行われている勉強会(TechLunch)で、今後のバッチ処理構成の1つとして活用できそうなAWSサービスの紹介を行ったので、その一部を紹介したいと思います。
背景と勉強会の目的
メドレーでのバッチ処理
メドレーの各プロダクトは環境として主にAWSを使用しており、いわゆる「バッチ処理」(時間起動でのデータ一括処理系)については、スケジューラとして使用しているJenkinsからバッチ用EC2インスタンス上のバッチ処理をキックする、という構成が多いです。
(短時間で完了し、ワークフロー自体シンプルなバッチについては、スケジューラにLambdaを利用する構成も増えてきました)
その他、SQSを用いたキューイング処理、Kinesis/Lambdaを使用したログストリーミング処理など様々な構成で動いています。
勉強会の目的
現状、プロダクトを運用する上でバッチ処理で何か課題があるかと言えば特には無いのですが、下記を目的として勉強会を行いました。
今後各プロダクトを跨ぐ共通基盤システムなどでバッチ処理が必要になった場合など、出来るだけ人の手間を減らしたい場合に備え、選択肢の1つとしてバッチ向けサービス(AWS Batch、Step Functions)の紹介を行いました。
また、広義の意味でのバッチ処理/狭義の意味でのバッチ処理という整理で、一括系処理系、ストリーミング/キューイングなどの(ほぼ)リアルタイム系の違いやよくある構成についての説明も行いました。
勉強会の内容
メドレーでは様々なバックグラウンドをもったエンジニアが集まっており、フロントエンドやネイティブは得意だけどサーバーサイド/インフラはまだ慣れていないエンジニア向けに、そもそもバッチ処理とは?という内容から始めました。
次に、今後使えそうなAWSのサービスとしてAWS BatchとStep Functionsの概要について説明しました。
- AWS Re:Invent 2016で発表されたAWSのbatch処理系に使える新サービス
- AWS Batch
- Step Functions
- Lambaなどの複数アプリをワークフローとして定義、実行(ビジュアル化)
- 今まではLambda to Lambdaや、SQSを介すなど自分で考慮必要だったワークフロー(分岐、繰り返しなど)をJSONで定義しサービス化
※ 発表資料は以下
最後に、簡単にですがStep Functionsを実際に試した内容と、個人的な感想を共有しました。
- Pros
- 既存のLambdaをそのまま使用できる
- フロー定義や実行結果がビジュアルで確認できる
- 同じLambdaを別々のState Machineで使えるので汎用性、再利用性が高まる
- Cons
まとめ
メドレー開発本部の技術勉強会(TechLunch)で発表した内容の一部を紹介しました。
メドレーでは各技術の選択基準として、適材適所という考えを大事にしています。そのため、新技術/新サービスを使用すればいいと言う訳ではなく、今回の内容に関連して言えば、あえてベーシックにバッチインスタンスを立てて、という構成も適材適所であれば問題ないと考えています。
適材適所を効果的に行うためには、日々、新技術も情報として押さえ蓄積していく事が重要だと思うので、INPUTの一環として今後も「TechLunch」を更に活用していきたいと思います。
お知らせ
CTO平山のブログが本日公開となりました。 記念すべき第一回目は、「医療×インターネットの未来」がテーマ。 ぜひ読んでみてくださいね。
また、CTO平山とのランチ会を定期開催予定です。 ご興味ある方はぜひエントリーください! www.wantedly.com
求人情報
メドレーではエンジニアを積極採用しています! ご応募お待ちしています。