Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Powerd by
株式会社スタイルズ
IoT/GPSトラッキング
プラットフォームがサーバレス
だからこそ2ヶ月で構築できた話
(トラッカーアイオー)
Powerd by
Who am I ?
- 1 -
髙橋 ゆうき (@ukitiyan)
- Stylez Corp.
Technology Strategy Group
Lead Developer
- Japan ownCloud UserGroup
Member
 サーバサイドアプリエンジニア 。ownCloudは
PHPだけど、主にJava。
 SoftLayer本に寄稿してるけど、主にAWS。
Powerd by
About Us
- 2 -
会社名 株式会社スタイルズ
所在地 東京都千代田区神田小川町1丁目2番地
URL https://www.stylez.co.jp/
設 立 平成15年12月5日
(創業:平成5年11月17日)
代表者 梶原 稔尚
社員数 93名(平成28年6月1日現在)
資本金 3,000万円
Powerd by
- 3 -
長年、エンタープライズのシステムを開発してきた
アプリ育ちなメンバーによるクラウドで提供される
マネージドサービスの利用を前提とした、クラウドネ
イティブなシステムの開発・運用事業。
Powered by
Powerd by
- 4 -
本 題
Powerd by
- 5 -
Trackrr Service API デバイスの認証、トラッキング情報をプラットフォームへ送信、トラッキング情
報をプラットフォームから取得するためのAPI
Trackrr Device SDK スマートフォンなどのIoT用デバイス上で、トラッキングをおこなうためのアプ
リケーションを開発するためのSDK
Trackrr Management Console デバイスの登録や管理などを行う管理画面
Trackrr Device SDK
Trackrr Service API
Trackrr Management
Console
Powerd by
- 6 -
Trackrr Service API
IoT Device
User Interface
Push Tracking
Data
Search
Tracking Data
Powerd by
- 7 -
Trackrr Device SDK
IoT Device
SDK
Built-in
Download
Powerd by
- 8 -
Trackrr Management Console
Registration
&
Management
Powerd by
- 9 -
Only 4 steps to start
STEP1 - 登録:デバイスの登録や管理などを行う管理画面(Trackrr Management
Console)にログインするためにTrackrrアカウントを作成。
STEP2 - 設定:接続に必要なデバイス毎のアクセスキーの設定、シークレットキーの
発行・確認。
STEP3 - 接続:お手持ちのデバイスにデバイス用のSDK(Trackrr Device SDK)を
組み込み。
STEP4 - 開始:ステップ2で確認したアクセスキー・シークレットキーをデバイスに
設定。
Powerd by
- 10 -
IoT/GPSトラッキングを低コストに
すぐ始められる
Powerd by
- 11 -
地域住民への除雪車情報の公開
Powerd by
- 12 -
長距離バスのための運転情報の収集
Powerd by
- 13 -
トラックドライバーの健康状態の管理
Powerd by
- 14 -
物流配送者のスケジューリング支援
Powerd by
- 15 -
車両管理・テレマティクスサービス
Powerd by
- 16 -
良さそうだけど、
その手のBaaSって
他にもあるよね?
Powerd by
- 17 -
いいえ
ちがいます!!
Powerd by
- 18 -
“Serverless Architecture”
Powerd by
- 19 -
こちらが本題
Powerd by
- 20 -
Serverless Architecture
100% AWS Managed Service
Full Scale Out
User Info.
GPS Info.
Authentication API
STS Token
MQTT PUT
Search API
Powerd by
②Get STS Token
Amazon API
Gateway
AWS
Lambda
Amazon
RDS
Amazon
Cognito
AWS IoT
①Authentication
Request
③Put GPS Info.
(MQTT)
API Server
Authentication
Provider
User Info.
Authentication + MQTT
- 21 -
Powerd by
AWS IoT Amazon
Kinesis
AWS
Lambda
Amazon
S3
①Stream ②Serialize
JSON
Serialize
- 22 -
Powerd by
Amazon
DynamoDB
Publish
Amazon
RDS
API Server
Amazon
S3
AWS
Lambda
User Info.
GPS Info.
Publish
- 23 -
Powerd by
API + Management Console
- 24 -
Amazon
DynamoDB
Amazon
RDS
API
API Device
System
Trackrr
Management Console
API Server
Management
Console
Server
User Info.
GPS Info.
Powerd by
- 25 -
Why Serverless?
Powerd by
スモールスタート
- 26 -
1,000k
API calls
are free
250k
messages
are free
$14.51 per
provisioned
shard-month 1,000k
Requests are free
db.t2.micro instance
is free
two t2.micro
instances
are $ 14.28
25 units of
read/write
capacity are free*
1,000k synchronous
operation are free
Powerd by
スケーラビリティ
- 27 -
チューニング無しに、1500台のデバイスからのPUSH成功
1.5K Virtual buses
Push Search
Powerd by
アプリ屋の苦手な工程を省いて実装に専念
- 28 -
Requirements
Design
Development
QA-Test
Release
可用性
性能/拡張性
運用/保守性
セキュリティ
コスト
実 装
サーバー
メンテナンス
Powerd by
自律的な開発
- 29 -
Requirements
Design
Development
QA-Test
Release
Powerd by
自律的な開発
- 30 -
Design
Develo
pment
QA-Test
Design
Develo
pment
QA-Test
Design
Develo
pment
QA-Test
Design
Develo
pment
QA-Test
Powerd by
自律的な開発
- 31 -
zero base.
parallel
Powerd by
変更への柔軟な対応
- 32 -
client
front database
Web Layer
Service Layer
Repository Layer
DTO
Domain
Model
Service
Application
Layer Base
Before serverless
Powerd by
変更への柔軟な対応
- 33 -
client
Publish
Application
Authenticati
on
Application
Serialize
Application
Queueing
Application
front
database
Service
Application
Base
Powerd by
変更への柔軟な対応
- 34 -
偉い人からの「IoTなんだから、MQTTにしたいよね?」
という急な要望(汗)
Amazon
Kinesis
AWS
Lambda Amazon
S3
JSON
HTTPS
AWS IoT
MQTT
Powerd by
Amazon
DynamoDBAmazon
S3
AWS
Lambda
GPS Info.
変更への柔軟な対応
- 35 -
Amazon
Redshift Amazon
QuickSight
Amazon
Machine
Learning
new feature
(coming soon?)
Machine Learning関連の要望はきっと上がってくる
Powerd by
- 36 -
PAIN Point
Powerd by
ステートフルな機能
- 37 -
UIを伴うようなステートフルな機能は、割り切ってインスタ
ンスを起動して対応
API Service
Management
Console
上記で実装するServiceロジック等
コードベースが共通な機能は無理に
Serverless化しない CODE BASE
Powerd by
バラバラなコードベース
- 38 -
自律させ過ぎた結果、コードベースが
バラバラに。。
GRUNTでビルド・UT・デプ
ロイを自動化はしたが、、
Or
?
?
Powerd by
1アプリの障害でサービス停止
- 39 -
client
Publish
Application
Authentica
tion
Application
Serialize
Application
Queueing
Application
front
database
Service
CRUSH
結合テスト時点でより多く障害を知ることがRobustへの近道
Powerd by
ログのレベル感が大きい
- 40 -
今まではcatalina.out だけ見れば良かった感があったが。
統合的に監視・通知する仕掛けは必須
Powerd by
ラーニングコスト
- 41 -
それなりに高い。予知できない例外に対しては、
Try&Error するしかない。
Provisioned Throughput
ExceededException
CodeStorageExceeded
Exception
Powerd by
- 42 -
Summary
Powerd by
Summary
- 43 -
 スモールスタート & 柔軟な対応を要する
開発はどんどんServerless!
 使い分けと現時点のPAIN POINTを知ること
は重要で、それを知るには恐れずTry&Error
を繰り返し、RobustなServerless!
 直近の課題は、コードベースとログ・監視を
統合したServerless!
Powerd by
- 44 -
Other Serverless
Powerd by
- 45 -
Serverless Chat Bot API
FAQ
AWS Elasticsearch
Service
AWS Machine
Learning
AWS Lambda
Administrator
AWS Lambda AWS S3
AWS
CloudTrail
AWS S3
Powerd by
- 46 -
Contact Us
株式会社スタイルズ CloudShift 担当
0 3 - 5 2 4 4 - 4 1 1 3
電話でのお問い合わせ
受付時間:平日10:00~17:00
メールでのお問い合わ
せ
受付時間:24時間受付中
cloudshift@stylez.co.jp
株式会社スタイルズ
〒101-0052 東京都千代田区神田小川町1-2 風雲堂ビル6F
https://www.stylez.co.jp/
https://cloudshift.stylez.co.jp/
Powerd by
- 47 -
Thank you !

More Related Content

IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話

  • 2. Powerd by Who am I ? - 1 - 髙橋 ゆうき (@ukitiyan) - Stylez Corp. Technology Strategy Group Lead Developer - Japan ownCloud UserGroup Member  サーバサイドアプリエンジニア 。ownCloudは PHPだけど、主にJava。  SoftLayer本に寄稿してるけど、主にAWS。
  • 3. Powerd by About Us - 2 - 会社名 株式会社スタイルズ 所在地 東京都千代田区神田小川町1丁目2番地 URL https://www.stylez.co.jp/ 設 立 平成15年12月5日 (創業:平成5年11月17日) 代表者 梶原 稔尚 社員数 93名(平成28年6月1日現在) 資本金 3,000万円
  • 4. Powerd by - 3 - 長年、エンタープライズのシステムを開発してきた アプリ育ちなメンバーによるクラウドで提供される マネージドサービスの利用を前提とした、クラウドネ イティブなシステムの開発・運用事業。 Powered by
  • 5. Powerd by - 4 - 本 題
  • 6. Powerd by - 5 - Trackrr Service API デバイスの認証、トラッキング情報をプラットフォームへ送信、トラッキング情 報をプラットフォームから取得するためのAPI Trackrr Device SDK スマートフォンなどのIoT用デバイス上で、トラッキングをおこなうためのアプ リケーションを開発するためのSDK Trackrr Management Console デバイスの登録や管理などを行う管理画面 Trackrr Device SDK Trackrr Service API Trackrr Management Console
  • 7. Powerd by - 6 - Trackrr Service API IoT Device User Interface Push Tracking Data Search Tracking Data
  • 8. Powerd by - 7 - Trackrr Device SDK IoT Device SDK Built-in Download
  • 9. Powerd by - 8 - Trackrr Management Console Registration & Management
  • 10. Powerd by - 9 - Only 4 steps to start STEP1 - 登録:デバイスの登録や管理などを行う管理画面(Trackrr Management Console)にログインするためにTrackrrアカウントを作成。 STEP2 - 設定:接続に必要なデバイス毎のアクセスキーの設定、シークレットキーの 発行・確認。 STEP3 - 接続:お手持ちのデバイスにデバイス用のSDK(Trackrr Device SDK)を 組み込み。 STEP4 - 開始:ステップ2で確認したアクセスキー・シークレットキーをデバイスに 設定。
  • 11. Powerd by - 10 - IoT/GPSトラッキングを低コストに すぐ始められる
  • 12. Powerd by - 11 - 地域住民への除雪車情報の公開
  • 13. Powerd by - 12 - 長距離バスのための運転情報の収集
  • 14. Powerd by - 13 - トラックドライバーの健康状態の管理
  • 15. Powerd by - 14 - 物流配送者のスケジューリング支援
  • 16. Powerd by - 15 - 車両管理・テレマティクスサービス
  • 17. Powerd by - 16 - 良さそうだけど、 その手のBaaSって 他にもあるよね?
  • 18. Powerd by - 17 - いいえ ちがいます!!
  • 19. Powerd by - 18 - “Serverless Architecture”
  • 20. Powerd by - 19 - こちらが本題
  • 21. Powerd by - 20 - Serverless Architecture 100% AWS Managed Service Full Scale Out User Info. GPS Info. Authentication API STS Token MQTT PUT Search API
  • 22. Powerd by ②Get STS Token Amazon API Gateway AWS Lambda Amazon RDS Amazon Cognito AWS IoT ①Authentication Request ③Put GPS Info. (MQTT) API Server Authentication Provider User Info. Authentication + MQTT - 21 -
  • 23. Powerd by AWS IoT Amazon Kinesis AWS Lambda Amazon S3 ①Stream ②Serialize JSON Serialize - 22 -
  • 25. Powerd by API + Management Console - 24 - Amazon DynamoDB Amazon RDS API API Device System Trackrr Management Console API Server Management Console Server User Info. GPS Info.
  • 26. Powerd by - 25 - Why Serverless?
  • 27. Powerd by スモールスタート - 26 - 1,000k API calls are free 250k messages are free $14.51 per provisioned shard-month 1,000k Requests are free db.t2.micro instance is free two t2.micro instances are $ 14.28 25 units of read/write capacity are free* 1,000k synchronous operation are free
  • 28. Powerd by スケーラビリティ - 27 - チューニング無しに、1500台のデバイスからのPUSH成功 1.5K Virtual buses Push Search
  • 29. Powerd by アプリ屋の苦手な工程を省いて実装に専念 - 28 - Requirements Design Development QA-Test Release 可用性 性能/拡張性 運用/保守性 セキュリティ コスト 実 装 サーバー メンテナンス
  • 30. Powerd by 自律的な開発 - 29 - Requirements Design Development QA-Test Release
  • 31. Powerd by 自律的な開発 - 30 - Design Develo pment QA-Test Design Develo pment QA-Test Design Develo pment QA-Test Design Develo pment QA-Test
  • 32. Powerd by 自律的な開発 - 31 - zero base. parallel
  • 33. Powerd by 変更への柔軟な対応 - 32 - client front database Web Layer Service Layer Repository Layer DTO Domain Model Service Application Layer Base Before serverless
  • 34. Powerd by 変更への柔軟な対応 - 33 - client Publish Application Authenticati on Application Serialize Application Queueing Application front database Service Application Base
  • 35. Powerd by 変更への柔軟な対応 - 34 - 偉い人からの「IoTなんだから、MQTTにしたいよね?」 という急な要望(汗) Amazon Kinesis AWS Lambda Amazon S3 JSON HTTPS AWS IoT MQTT
  • 36. Powerd by Amazon DynamoDBAmazon S3 AWS Lambda GPS Info. 変更への柔軟な対応 - 35 - Amazon Redshift Amazon QuickSight Amazon Machine Learning new feature (coming soon?) Machine Learning関連の要望はきっと上がってくる
  • 37. Powerd by - 36 - PAIN Point
  • 38. Powerd by ステートフルな機能 - 37 - UIを伴うようなステートフルな機能は、割り切ってインスタ ンスを起動して対応 API Service Management Console 上記で実装するServiceロジック等 コードベースが共通な機能は無理に Serverless化しない CODE BASE
  • 39. Powerd by バラバラなコードベース - 38 - 自律させ過ぎた結果、コードベースが バラバラに。。 GRUNTでビルド・UT・デプ ロイを自動化はしたが、、 Or ? ?
  • 40. Powerd by 1アプリの障害でサービス停止 - 39 - client Publish Application Authentica tion Application Serialize Application Queueing Application front database Service CRUSH 結合テスト時点でより多く障害を知ることがRobustへの近道
  • 41. Powerd by ログのレベル感が大きい - 40 - 今まではcatalina.out だけ見れば良かった感があったが。 統合的に監視・通知する仕掛けは必須
  • 42. Powerd by ラーニングコスト - 41 - それなりに高い。予知できない例外に対しては、 Try&Error するしかない。 Provisioned Throughput ExceededException CodeStorageExceeded Exception
  • 43. Powerd by - 42 - Summary
  • 44. Powerd by Summary - 43 -  スモールスタート & 柔軟な対応を要する 開発はどんどんServerless!  使い分けと現時点のPAIN POINTを知ること は重要で、それを知るには恐れずTry&Error を繰り返し、RobustなServerless!  直近の課題は、コードベースとログ・監視を 統合したServerless!
  • 45. Powerd by - 44 - Other Serverless
  • 46. Powerd by - 45 - Serverless Chat Bot API FAQ AWS Elasticsearch Service AWS Machine Learning AWS Lambda Administrator AWS Lambda AWS S3 AWS CloudTrail AWS S3
  • 47. Powerd by - 46 - Contact Us 株式会社スタイルズ CloudShift 担当 0 3 - 5 2 4 4 - 4 1 1 3 電話でのお問い合わせ 受付時間:平日10:00~17:00 メールでのお問い合わ せ 受付時間:24時間受付中 cloudshift@stylez.co.jp 株式会社スタイルズ 〒101-0052 東京都千代田区神田小川町1-2 風雲堂ビル6F https://www.stylez.co.jp/ https://cloudshift.stylez.co.jp/
  • 48. Powerd by - 47 - Thank you !

Editor's Notes

  1. 先日、Trackrr.ioというIoT/GPSトラッキングプラットフォームのアルファ版をローンチしましたので、そのアーキテクチャーと開発話を少し紹介させてもらいます。
  2. PHP製のオープンソースオンラインストレージプロダクト
  3. ご存知の方も少ないと思いますので、少し株式会社スタイルズについて紹介させてください 株式会社スタイルズは、
  4. cloudshiftというワードがありましたけども、 cloudshiftは、私が所属しております、アプリ屋によるクラウドネイティブなシステム開発を遂行するチームです。今回紹介するTrackrr.ioはCloudShiftにより開発されています。
  5. 各サービスについて 収集したトラッキングデータ
  6. IoTデバイスにビルトインするための、SDKです。SDKを組み込んだAPIは、Trackrr.Ioから発行されるAccessKeyとSercretKeyを設定することで、すぐGPS情報をPush可能となります。
  7. アカウント登録、デバイス管理、AccessKeyとSercretKeyの発行を行うためWebコンソールです
  8. Trackrr.Ioを開始するには、たったの4ステップ
  9. つまり、Trackrr.ioを利用することで、Iot/GPSトラッキングを低コストですぐに始められます デバイスに指すSIMは、SoracomAirを利用することで、利用に応じて低コストで運用することが可能と考えられます。
  10. 応用事例としては、
  11. Trackrr.ioの裏側は、AWS上にサーバレスで、こんな感じで構成されています。
  12. 各セクションをさらに詳しく説明しますと Trackrr.io Device SDKを組み込んだIoTデバイスがAmazonAPIGatewayを通して
  13. AWS IoTが受け取った情報はKinesisを返して、S3にシリアライズされます。
  14. S3にシリアライズされたデータは、再度認証が行われて、DynamoDBにパブリッシュされます。
  15. DynamoDBにパブリッシュされた情報はAPIサーバを返して、API ServerがAPI提供したり、ManagementConsoleServerがTrackrr ManagementConsoleを提供しています
  16. AWSさん本当に良いんですか?といったレベルのコストでサービスを実現しています。現状のようなアルファ版では、利用状況に応じたコストであることが、実に本当に助かります。
  17. リクエストくるぞーとなると、色々と構えちゃうわけですが、1500台のデバイスからのプッシュに成功しました。1500という数字は、若干ビビってますが都営バスの稼働台数でして、そのままサービスインできうるスケールが保証されていると言えます。
  18. サイクル
  19. さらに、先程集中できるとした開発に関わるここの工程を自律的に行うことが可能です。
  20. つまり、
  21. zero base. not copy & paste. 責務
  22. つづいて、
  23. これの何が良いかというと、例えば、当時
  24. 利用者からのフィードバックをうけて、Trackrr.ioのエンハンスを考えていますが、おそらく
  25. ここで困るのは、ビルド・UT・デプロイ方式がバラバラになることです それぞれ、自動かすれば良いのですが、それでも辛いところがあります。 例えば、今回はGRUNTでビルド・UT・デプロイを自動化しましたが、 今後サーバレスフレームワーク使うとか、Javaに統一するとかが必要と感じていいます。
  26. どのアプリケーションで障害が発生しているかを判別し易い反面、一つ死んだらサービスが停止するといったリスクがつきまといます。 ここは、結合時点で多くの障害を知ることが、ロバストへの近道なのではないかと感じました
  27. 僕等は今まで、catalina.outを確認することで、障害の状況を確認していましたが、サーバレスでは、各サービスから配信されるログをクラウドウォッチで確認することになり、これはインフラ観点のトラブルシューティングに近いのかなと感じました。このようにログのレベル感が大きいので統合的に監視・通知する仕掛けは必須になると感じました。
  28. サーバレスでは、ランタイムなエラーが多いです。ここの解決はトライ&エラーを繰り返して、ブラッシュアップすることが必要と感じました。
  29. 我々CloudShiftチームでは今回の開発をとおして、ハマる案件はどんどんサーバレスで開発を進めていきたいと考えています。 現在は、サーバレスなチャットボットAPIを開発する新案件を進めています。この案件では、ElasticSearchServiceとLambdaのセキュリティ設定まわりに工夫が必要で少し苦しいところがったりします
  30. 様々なお問い合わせを受け付けています