Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
サーバレスで挑む IoT プロジェクトの現実解 / Real solutions for th...
Search
Genki Ogasawara
October 11, 2024
Technology
1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバレスで挑む IoT プロジェクトの現実解 / Real solutions for the IoT project using serverless service
Genki Ogasawara
October 11, 2024
More Decks by Genki Ogasawara
See All by Genki Ogasawara
IoT デバイス監視から始める SRE / SRE starts with IoT device monitoring
genkiogasawara
2
340
クラウドのスケーリングの力で5時間 かかるバッチジョブを10分に短縮する / Reduce the batch job time by a 36th using the power of scaling in the public cloud
genkiogasawara
2
88
IT知識ゼロからのスタートで、 事業部における内製開発をどうやって 推進してきたか?/How did we promote in-house development by starting from scratch?
genkiogasawara
1
640
クラウドネイティブな省エネサービスの内製開発で、BizDevOpsを実現する / Achieving BizDevOps in in-house development of cloud-native energy-saving services
genkiogasawara
2
1.7k
エンジニアゼロの組織から内製開発の DX をどう実現したのか / How did we achieve DX in in-house development in an organization with zero engineers?
genkiogasawara
8
4.6k
入門 AWS Amplify Gen2 / Introduction to AWS Amplify Gen2
genkiogasawara
1
1.3k
ソフトウェア開発の生産性と信頼性向上に取り組んだ結果、どうなった?/What has changed as a result of efforts to improve software development productivity and reliability?
genkiogasawara
0
220
「魔の川」「死の谷」をクラウド ネイティブなチーム作りで越境する / Crossing the "Devil River" and "Death Valley" by building cloud-native teams
genkiogasawara
2
960
Amazon CodeCatalyst で実現!開発環境とCI/CDパイプライン
genkiogasawara
0
9.1k
Other Decks in Technology
See All in Technology
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
330
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.9k
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
2
460
AI時代、データエンジニアが一番おもろい
genshun9
0
650
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
25
16k
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
170
HHKBエバンジェリストになる方法
941
0
110
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
120
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
おい、エージェントを使って終わらせろ
nwiizo
1
620
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
464
34k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
GraphQLとの向き合い方2022年版
quramy
50
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
The Cult of Friendly URLs
andyhume
79
7k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
Transcript
北海道ガス株式会社 小笠原 元気 サーバレスで挑む IoT プロジェクトの現実解 2024.10.12 JAWS FESTA 2024
in Hiroshima
⾃⼰紹介 Genki (⼩笠原 元気) 北海道ガス株式会社(2017〜) ・Job, Role フロントエンド・バックエンドエンジニア 開発チームのリードエンジニア 趣味︓旅⾏・筋トレ
最近興味があること︓Engineering Manager @geivk 2 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
IoT と Serverless
4 Agenda 会社 / プロジェクト(Mys3︓ミース)概要 課題解決︓サービスローンチに挑む 課題解決︓お客さま課題・ビジネス要件の現実解 課題解決︓サービスローンチ後の機能要求 まとめ
5 Agenda 会社 / プロジェクト(Mys3︓ミース)概要 課題解決︓サービスローンチに挑む 課題解決︓お客さま課題・ビジネス要件の現実解 課題解決︓サービスローンチ後の機能要求 まとめ
北海道ガス株式会社 主要事業内容 本社所在地 従業員数 沿⾰ 1911年 設⽴ ガス事業 電気供給事業 ガス機器販売
851名 札幌市東区北7条東2丁⽬1-1 売上⾼ 1,738億円(連結) 2024年3⽉末時点 お客さま 件数 ガス︓604,329件 電⼒︓254,956件 会社概要 6 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
業務⽤省エネサービス「Mys3(ミース)」 • 多額の初期投資が必要 • 既設設備の停⽌期間や⼤掛かりな⼯事が必要 • 中⼩規模向けの選択肢(少機能・低価格)が少ない。 Make your smart
solution service Mys(ミース): スウェーデン語で“楽しい・⼼地よい” の意 最新の技術を活⽤した多様なサービスで、お客さまの楽しい・ ⼼地よいを創造する意図を込めている。 業務⽤のお客さまで省エネ設備を導⼊する際の課題 こうしたお客さまの課題を、デジタル技術を⽤いて解決 北ガスグループ 独⾃開発 7 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
8 「Mys3(ミース)」i-Ch / REM 常時計測・監視、 ⾃動で省エネ制御 セントラル空調機器 当社クラウドシステム 冷温⽔(往) 冷温⽔(還)
アタッチメント型 制御ユニットを設置 計測データの⾒える化 遠隔制御 吸収式冷温⽔機遠隔省エネサービス 当社クラウドシステム 計測データの⾒える化 CO2/温度/湿度 データ CO2・温湿度可視化サービス Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
IoT でサーバレスを使う理由 • 今回の IoT プロジェクトではデータは1分ごとの瞬時データ送信 • サーバーの待機している時間を節約したい → イベントドリブン「◦◦したら・××する」が適している
設定値を書き換えたら、履歴をデータベースに残す エラーが起きたら、Slack に通知をする • 地⽅ガス会社の少⼈数チームで運⽤負荷を下げたい → AWS IoT Core ⾃体がサーバレス さらに、AWS IoT Rule で、後続のさまざまなサービスに繋げやすい 9 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
10 サービス年表 サービス着想 2018 共同開発フェーズ 2019 2020 2021 2022 2023
2024 自作フェーズ 6⽉ ローンチ PoC 運用 10⽉ 内製開発 スタート 9⽉ 共同開発 スタート 管理者画⾯作成 Grafana導⼊ 年間スケジュール機能 SSO導⼊
11 Agenda 会社 / プロジェクト(Mys3︓ミース)概要 課題解決︓サービスローンチに挑む 課題解決︓お客さま課題・ビジネス要件の現実解 課題解決︓サービスローンチ後の機能要求 まとめ
12 サービス年表 サービス着想 2018 共同開発フェーズ 2019 2020 2021 2022 2023
2024 自作フェーズ 6⽉ ローンチ PoC 運用 10⽉ 内製開発 スタート 9⽉ 共同開発 スタート 管理者画⾯作成 Grafana導⼊ SSO導⼊ ⾃作フェーズにおける 課題と解決策 年間スケジュール機能
PoC︓⾃作段階のアーキテクチャ ◆ PoC • ほぼ SORACOM 完結したアーキテクチャ • AWS 上にデータレイク+パイプラインを構築
• デバイスの設定情報は直接 SSH で接続して書き換える (ここまでデータベース構築なし) PLC modbus アナログ I/O 制御 信号 ゲートウェイ SORACOM AWS Cloud データ 遠隔操作 可視化 クラウド アダプタ IoT Core データレイク SSH 制御盤 13 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
PoC から量産フェーズ・サービスローンチに向けた課題 ◆ 管理者側の課題 • SSH でデバイス上にフロントエンド を⽴ち上げ、設定値変更をしていた • 設定値をスプレッドシートで管理
• 設定値変更の履歴が残せていなかった • デバイスのファームウェア、 ソフトウェアのアップデートの問題 14 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
管理者の課題解決︓管理⽤画⾯の作成 ◆ 管理者側の課題(従来の課題) SSH による設定値の⼿動変更 デバイスの設定値管理不⾜ ヒューマンエラー対策 15 ゲートウェイ SSH
SORACOM Napter { “duration”: 60, “mode”: ”auto”, “temp”: 55, ...... } Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
管理者の課題解決︓管理⽤画⾯の作成 ◆ 管理者側の課題(従来の課題) SSH による設定値の⼿動変更 デバイスの設定値管理不⾜ ヒューマンエラー対策 • 王道パターン Amazon
API Gateway + AWS Lambda • AWS Lambda で AWS IoT の API 実⾏ iot:UpdateThingShadow 16 ゲートウェイ { “duration”: 60, “mode”: ”auto”, “temp”: 55, ...... } Amazon API Gateway AWS Lambda IoT Shadow 同期 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
AWS IoT Core とは︖ • MQQTS(MQQT over TLS: 8883) •
Pub/Subモデル • 「モノ」=Internet of 「Thing」 AWS IoT Coreでできること • 「モノ」の属性 • 証明書の管理 • 監査 etc. 17 デバイス Publish Subscribe topic/device/upload topic/device/ settingUpdate AWS IoT Publish Subscribe IoT Topic Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
IoT Rule • AWS Lambda • Amazon DynamoDB • Amazon
Data Firehose • AWS Simple Queue Service (SQS) • AWS Step Functions etc. Fan-out パターン →IoT Rule でトピックから複数の出⼒可 ◆ Step Functions → AwsCallService ◆ DynamoDB →DynamoDB Streams ◆ SQS → EventBridige Pipes 18 IoT Rule 各サービスに メッセージを転送できる topic/xxx/yyy/zzz Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
設定値変更・履歴を残すためのアーキテクチャ 19 Lambda Function Amazon DynamoDB IoT Topic IoT Rule
IoT Shadow ※全ての Thing で⾏う場合は ワイルドカード ”+” を Rule に設定 $aws/thing/+/shadow/update/documents Lambda Function Publish Publish via iot:UpdateThingShadow Query Amazon API Gateway $aws/thing/[thingName]/shadow/update $aws/thing/[thingName]/shadow/update/documents
OTA(On The Air) アップデートのしくみ ◆課題 ファームウェアアップデート セキュリティパッチ適⽤ • AWS IoT
Jobs + S3 presigned URL Job document に記載されている S3 presigned URL からオブジェクト取得 所定の操作を実施︓ ファームアップデート セキュリティパッチ適⽤など 20 $aws/thing/[thingName]/jobs/notify $aws/thing/[thingName]/jobs/notify-next Job Document { “operation”: “update”, “s3_presinedUrl”: “${aws:iot:s3-presined-url: https://s3.amazonaws.com/[ARN]}” } コンソールから操作 デバイス Subscribe Publish IoT Jobs HTTPS Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
サービスローンチ時のアーキテクチャ ◆ サービスローンチ仕様 • フロントエンドからデバイスの設定情報を書き換えたい • AWS IoT を使って MQQT(S)
の相互通信(Pub/Sub)・即時通信 • API を⽤意しバックエンドで IoT Core へ指令 • ファームウェアの OTA(On The Air)アップデートも実装 アナログ I/O 制御 信号 制御盤 SORACOM AWS Cloud IoT Core SORACOM beam 遠隔指令 MQTT REST API 21 クラウド転送 サービス Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
Appendix: フロントエンドの実装 ◆ ホスティングサーバー AWS Amplify Hosting(DEV) Amazon Cloudfront(ST, PROD)
• AWS Amplify のブランチごとの デプロイ機能を利⽤ 22 Developers feature/xxx bugfix/yyy feature/zzz Hosting feature/xxx bugfix/yyy feature/zzz AWS Amplify Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
Appendix: フロントエンドの実装 ◆ ホスティングサーバー AWS Amplify Hosting(DEV) Amazon Cloudfront(ST, PROD)
• AWS Amplify のブランチごとの デプロイ機能を利⽤ • Amplify.js で SigV4 の簡易実装 23 Vue.js React.js Amplify.js react-query axios (当時) (現在) const sign = Signer.sign( { method: method, url: apiUrl, data: JSON.stringify(data) }, credentials, { region: 'ap-northeast-1', service: 'execute-api', }, ); + + + Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
24 Agenda 会社 / プロジェクト(Mys3︓ミース)概要 課題解決︓サービスローンチに挑む 課題解決︓お客さま課題・ビジネス要件の現実解 課題解決︓サービスローンチ後の機能要求 まとめ
25 サービス年表 サービス着想 2018 共同開発フェーズ 2019 2020 2021 2022 2023
2024 自作フェーズ 6⽉ ローンチ PoC 運用 10⽉ 内製開発 スタート 9⽉ 共同開発 スタート 管理者画⾯作成 Grafana導⼊ SSO導⼊ 共同開発フェーズにおける 課題と解決策 年間スケジュール機能
セルフマネージド Grafana の導⼊ ◆ お客さまの課題 当時︓コロナ禍 冬場の省エネ+CO2の監視(換気) • PoC 環境で可視化画⾯
SaaS を利⽤ • IoT × Grafana =相性がいい ◆ ビジネス上の要件 付帯サービス、安価である (スケールメリットが出るか︖) 26 Amazon Managed Service for Grafana Amazon Elastic Container Service User Editor: $20 Viewer: $5 なし Ops ✅ ❌ Total ? $250 + Ops Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
セルフマネージド Grafana のアーキテクチャ 下記の 3つが必要 • Grafana サーバー • メタデータ
DB • 時系列 DB(データソース) • 当初、データソース InfluxDB(Fargate + EFS)で検討 →運⽤負荷⼤で断念 • Timestream が GA 27 Amazon ECS Cluster AWS Fargate Amazon Aurora (Serverless v1/v2) Amazon EFS AWS Fargate メタデータDB 時系列DB Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
セルフマネージド Grafana のアーキテクチャ 下記の 3つが必要 • Grafana サーバー • メタデータ
DB • 時系列 DB(データソース) • 当初、データソース InfluxDB(Fargate + EFS)で検討 →運⽤負荷⼤で断念 • Timestream が GA 28 Amazon ECS Cluster AWS Fargate Amazon Aurora (Serverless v1/v2) メタデータDB 時系列DB Amazon Timestream Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
Grafana まわりのアーキテクチャ変遷 • Amazon Timestream → クエリが最低 10MB に繰り上げの ため瞬時データの表⽰には向かない
• Amazon DynamoDB を採⽤ • DynamoDB はサードパーティ製で 接続する必要あり → API Gateway + Lambda で サード パーティ製指定のレスポンスに調整 (6MB制限含め実装が⼤変) 29 Amazon ECS Cluster AWS Fargate Amazon DynamoDB 瞬時データDB 時系列DB Amazon Timestream サードパーティ プラグイン プラグイン Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
認証の課題 • ビジネス要件︓お客さま画⾯の作成 ニーズ︓Single Sign On (SSO) • お客さま画⾯と可視化画⾯の2つの サービスに都度もログインが必要
30 Grafana (可視化画⾯) お客さま⽤画⾯ Grafana 認証 フロント認証 共通認証基盤︖ Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
認証の課題 ビジネス上の制約︓安価 • SAML なら使えるため、某認証SaaS, AD なども検討したが⾼い • Amazon Cognito
ユーザープール Grafana: OAuth2.0認証エンドポイント お客さま⽤画⾯︓OIDC を使う • お客さま⽤画⾯の API 認可は Amazon Cognito ID プール → IAM Role • 1回の認証で認証情報を引き継ぐことが できる(SSO) 31 Grafana (可視化画⾯) お客さま⽤画⾯ Grafana 認証 フロント認証 Amazon Cognito ユーザープール OAuth2.0認証 エンドポイントの利⽤ OIDC ログイン ログイン Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
32 Grafana アーキテクチャまとめ Amazon ECS Cluster AWS Fargate Amazon DynamoDB
Amazon Timestream Amazon Aurora (Serverless v1/v2) Application Load Balancer host header routing Private subnet (next ver.) Amazon API Gateway (Private API) AWS Lambda VPC Endpoint Amazon Cognito OAuth2.0 endpoint User
33 Agenda 会社 / プロジェクト(Mys3︓ミース)概要 課題解決︓サービスローンチに挑む 課題解決︓お客さま課題・ビジネス要件の現実解 課題解決︓サービスローンチ後の機能要求 まとめ
34 サービス年表 サービス着想 2018 共同開発フェーズ 2019 2020 2021 2022 2023
2024 自作フェーズ 6⽉ ローンチ PoC 運用 10⽉ 内製開発 スタート 9⽉ 共同開発 スタート 管理者画⾯作成 Grafana導⼊ 年間スケジュール機能 SSO導⼊ 運⽤フェーズにおける 課題と解決策
サービスローンチ後の機能追加 • サービスローンチ後も、お客さまからのフィードバックで機能を実装 • 曜⽇別・時間別のスケジュール運転機能 • 気象情報による天気に連動した運転機能 • 他の機器への拡張性・・・etc. デバイスへの実装は、影響が⼤きい
クラウドにて素早く・柔軟に実装 ⾼速に実装し検証しながら フィードバックをもらう お客さま 開発チーム 35 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
制御盤 年間スケジュール運転機能の実装 ビジネス要件 • ゲートウェイに1⽇単位の スケジュール機能は IoT Shadow に 実装されていた
• ゲートウェイのソフトウェア開発・ 機能検証などが必要なので⼤変 → Amazon DynamoDB に年間 スケジュールを書き込み、Lambda で 毎⽇スケジュールを書き換え 36 1⽇単位のスケジュール機能あり →週間・⽉間・年間で変えたい Amazon DynamoDB (スケジュールテーブル) IoT Shadow Lambda function Query iot:UpdateThingShadow Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
年間スケジュール運転機能の実装 DynamoDB の年間スケジュールを Lambda Function から IoT Shadow へ 書き込み
→ 正常に書き込まれたかのチェックを AWS Step Functions で実施 ゲートウェイのソフトウェアの書き換え なしに年間スケジュール運転機能を 実装 37 Amazon DynamoDB (スケジュールテーブル) IoT Shadow Lambda function Third-party HTTP API Lambda function iot:UpdateThingShadow Query iot:GetThingShadow Success/Failure AWS Step Functions Choice 5回まで チェック Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
38 Agenda 会社 / プロジェクト(Mys3︓ミース)概要 課題解決︓サービスローンチに挑む 課題解決︓お客さま課題・ビジネス要件の現実解 課題解決︓サービスローンチ後の機能要求 まとめ
まとめ • IoT プロジェクトの各フェーズでビジネス要件を鑑みて、 お客さまの課題解決のために AWS のサーバレスサービスの選択をしてきた • お客さまへの可視化画⾯提供に OSS
の Grafana を採⽤ →ビジネス要件から、マネージドではなくあえてセルフホストすることを選択 • データベースにおいても⽬的に応じて Amazon Aurora / Amazon DynamoDB / Amazon Timestream をそれぞれ採⽤した • ローンチ後の機能追加では、AWS Lambda + Amazon DynamoDB + AWS Step Functionsを利⽤することでデバイスへの影響を最⼩化、素早く機能実装 することができた 39 Copyright Hokkaido Gas Co.,Ltd. All rights reserved.
Thank you! 40