Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クラウドネイティブがもたらす組み込み開発のパラダイム

 クラウドネイティブがもたらす組み込み開発のパラダイム

7/12 EdgeTech+ Westのテックセッションにて、組み込みにおけるクラウドネイティブの動向や実際に利用する際の勘所をお話ししました。
テックセッションなので、後半はデモを交えながらの解説をしたため資料だけだとイメージ湧かないかも…?

https://f2ff.jp/introduction/9218?event_id=etexpo-west-2024

小野佑大

July 12, 2024
Tweet

More Decks by 小野佑大

Other Decks in Technology

Transcript

  1. Copyright @ 2024 Red Hat, Inc. 安定化 デファクト化 * *

    製品 アップストリーム コミュニティ 製品 アップストリーム 参加 貢献 エコシステム構築 レッドハット 🟰 Linuxの会社 Linuxを中心とした世界最大の OSS企業 OSSコミュニティを育て、安定化させたソフトウェア製品とエンタープライズサポートを提供 3
  2. Copyright @ 2024 Red Hat, Inc. Red Hat Industrial Edge

    Platform Low Latency Secure Functional Safety Autonomous Sustainable Intelligent vPLC/ vDCS CAD/CAE ERP OPC-UA, Sparkplug B PLM MES/ MOM PLC/DCN SCADA/ HMI AI/Vision Production/manufacturing Product design/planning 4
 次世代のIT/OT融合プラットフォームの実現
  3. 本日のアジェンダ クラウドネイティブとは What is Cloud Native? 5 組み込みでの利用動向 Why is

    it applied to embedded systems? どう活用するのか? How is it better utilized as a technical way?
  4. Copyright @ 2024 Red Hat, Inc. Linux技術の進化の歴史 1991 2002 2007

    2014 2019 Linux 登場 RHEL KVM Kubernetes F-22での活用 ラプター RHEL AI / InstructLab Apache Web サーバ登場 クラウドが New Normalへ Android OS スパコンでの活用 Summit 衛星エッジコン ピューティング 7
 2024 1995 2006 2008 2018 2022 Linux技術は現在のイノベーションの源泉となりました。
  5. Copyright @ 2024 Red Hat, Inc. クラウドネイティブの定義 8
 参考. CNCFによるクラウドネイティブの定義

    https://github.com/cncf/toc/blob/main/DEFINITION.md  クラウドネイティブ技術は、パブリッククラウド、プライベートクラ ウド、ハイブリッドクラウドなどの近代的でダイナミックな環境にお いて、 スケーラブルなアプリケーションを構築および実行するための 能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイク ロサービス、イミュータブルインフラストラクチャ、および宣言型 APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎 結合システムが実現します。 これらを堅牢な自動化と組み合わ せることで、エンジニアはインパクトのある変更を最小限の労力 で頻繁かつ予測どおりに行うことができます 。
  6. Copyright @ 2024 Red Hat, Inc. コンテナとは 仮想マシン コンテナ 容量

    1桁 〜 2桁 GB 2桁 MB 〜 1桁 GB 起動時間 数分 数秒 • 都度のOSやミドルウェアの構築が不要 • Linuxシステム間の可搬性(Portable) • 軽量 • 仮想マシンよりも起動が高速 10
 Source Code Base Image コードのビルドや 必要なライブラリのインストール等 コンテナイメージ コンテナレジストリ 格納 Container Runtime コンテナイメージを取 得して起動 「コンテナイメージ」でアプリとライブラリ等のミドルウェアをパッケージングする技術
  7. Copyright @ 2024 Red Hat, Inc. コンテナと Kubernetesでアプリケーション運用を効率化 11
 Linux

    OS 定義された 状態を自律的に維持 replicas: 1 Image: v2 コン テナ コン テナ コン テナ コンテナ lib 理想の状態を宣言(≒設定)すると Kubernetesが自律的にコマンドを実行(=命令) Kubernetesに運用を任せる アプリケーション本体 と アプリケーションの実行に 必要なライブラリや依存関係 を 丸ごとパッケージし OSとは分離 して実行 コンテナ OSとアプリで ライフサイクル分離 最小限の労力で アプリを運用 App 自動的に Rolling Update =自動化ツール
  8. Copyright @ 2024 Red Hat, Inc. 信頼性 壊れずに使い続けられる! 安全性 人命に勝るものはない!

    長期間の使用 かれこれ20年使ってます なるべく更新はしない ファーム更新は放置 ... 今まで求められたこと 更に求められるようになったこと • 少量多品種生産 • 新技術への追随 • セキュリティ強化 • 環境変化、など 市場環境の変化 12 より迅速なアップデートを 低コストで実施可能 データ活用やITシステム連携 拡張しやすく、導入時の手間が ない 様々な機器との連携が容易な オープンなシステム + 予測 できない
  9. Copyright @ 2024 Red Hat, Inc. システムに運用を任せる範囲を広げていく すべて人が管理しなければいけない 多くの作業が自動的に行われる 13

    人の操作や人同士のコミュニケーションで成り立つ開発・運用プロセスを システムが人の代わりに自律的に運用 してくれる状態
  10. Copyright @ 2024 Red Hat, Inc. エッジにおけるクラウドネイティブの導入場所 15 Leaf Device

    Leaf Device Edge Device IPC ラズパイ Jetson など マルチコア以上 のハード センサー、RTOSデバイスなど Ethernet, Wi-Fi, Serial, など… ここ 高性能・小型・安価なHWが、組み込みでのクラウドネイティブの応用を支えています。
  11. Copyright @ 2024 Red Hat, Inc. エッジにおけるクラウドネイティブ系オープンソースの例 Kubernetesの改善 Leaf Deviceと自動連携

    新たなランタイム 40MBまで軽量化 ネットワーク切断に強いクラスタ MicrokernelやRTOSでも使える 16 PLCやOnvifカメラ等との接続・連携
  12. Copyright @ 2024 Red Hat, Inc. 組み込みにおけるクラウドネイティブの役割とメリット Linuxにおける 標準かつ高度な アプリのデプロイ

    アプリの デプロイメントの 柔軟性が向上 ダウンタイム短縮 セキュリティの向上 Time to Market 迅速なスケール 相互運用性の向上 ハードウェアの発見と接続 ローリングアップデート 死活監視・オートスケール etc… 17 クラウドネイティブの特徴的な機能 クラウドネイティブがもたらすメリット 宣言型API
  13. Copyright @ 2024 Red Hat, Inc. 色んなモノを IT の力でスマート化 18

    • IoT Gateway • PLC • 自動車 • AGV/AMR • ドローン • カメラ • 医療機器 • ウェイサイドコントロール • 電力メーター • POS • ロッカー • デジタルサイネージ • 衛星 • など… 参考)レッドハットでの実績 Software Definedによるシステムの開発・運用の最適化 や新たなビジネスモデルへの挑戦
  14. Copyright @ 2024 Red Hat, Inc. 19 IoT Gatewayの運用の最適化 様々なデバイスのデータを迅速に繋げ、生産ラインの運用

    DXを加速 320+のデバイスとの連携を簡単操作で実装 構築したシステムを他拠点へ迅速に横展開 300+のモジュールでデータ連携の実装を加速 Industrial PC 既存PLC Device Gateway MESなど Red Hat Ansible Automation Platform リモート運用・設定の自動化 300+ 320+ SCADA/HMI, Control Logic, AI…
  15. Copyright @ 2024 Red Hat, Inc. PLCの運用の最適化 Industrial PC Red

    Hat Ansible Automation Platform リモート運用・設定の自動化 I/O Devices Intel ECI RT kernel RT-Preempt パッチ適用済みLinux + Intel ECIによりCyclic テストで最大76% Jitterを低減 20
 参照. https://networkbuilders.intel.com/docs/networkbuilders/real-time-industrial-control-with-red-h at-openshift-container-platform-4-9-and-intel-edge-controls-for-industrial-1670581547.pdf Virtual PLC Virtual PLC Virtual v1 v2 v3 シミュレータで試運転 PLCプログラムを コンテナイメージ単位で バージョン毎に管理 推論App Sensor AIなどの新機能との連携の迅速化 ソフトウェアの開発効率化と信頼性向上 障害や変更に伴うダウンタイム短縮 Soft PLCをコンテナとして運用し、生産ライン運用におけるダウンタイムを短縮
  16. Copyright @ 2024 Red Hat, Inc. 例) OEE計算 予知保全 例)

    AGV/AMR WMS連携 例) 画像に よる品質検査 Service Catalogue ソフトウェアをカタログから選んで利用開始 Service Orchestration ソフトウェアを遠隔から展開・更新 中央の 管理環境 Device Orchestration LAN接続&電源ONで展開完了! OSの設定や更新作業を遠隔から一元化 新たなビジネスモデルへの挑戦 Industrial SaaS 21 PLC AGV 中央の管理環境の開発・運用操作をエッジデバイスへ反映できるプラットフォーム
  17. Copyright @ 2024 Red Hat, Inc. Kubernetes cluster services Networking

    | Ingress | Storage | Helm Kubernetes Orchestration | Security Linux for edge Security | Containers | VMs Install | Over-the-air-updates Monitoring | Logging Hardware, VM MicroShift 24 9.2 or later コンテナ App Base Image コンテナ App Base Image Red Hat Device Edge 遠隔から OS /アプリ/構成のデプロイメント を自動化するプラットフォーム
  18. Copyright @ 2024 Red Hat, Inc. Model Repository ミニPC Container

    Applications デモアプリケーションの構成 Web App 25 Yolov8 MLモデルを管理 grpc USBカメラの映像から物体検知す るアプリケーション MLモデルはYolov8を使用 (COCOデータセットで学習) カメラ映像をWebブラウザで表示 Pull Model Server USB
  19. - • ローカルPCで使えるコンテナ開発環境( Windows, Mac, Linux) • Kubernetes環境のインストールや連携もできる。( Minikube, kind,

    OpenShift.local) • 無償で利用可能 ※本番環境用でなく、開発用ツールの位置付けとなります。 27
  20. Copyright @ 2024 Red Hat, Inc. プル型とプッシュ型は一長一短 プル型 プッシュ型 Pros

    スケールさせやすい KubernetesのAPIを外部公開しない 単一コントロールプレーンでデバイスを一元運用 データセンター側のシステムと連携した自動化 Cons 中央からのデバイスの状態の管理ができない デバイス・エージェントのリソース消費や運用 デプロイ制御の柔軟性 スケールしづらい KubernetesのAPIを外部公開する 29 エッジへのデプロイメントは「プル型」 がおすすめ
  21. Copyright @ 2024 Red Hat, Inc. Edge Device Edge Device

    デバイス • コミュニティ版はArgoCD • 複数のエッジデバイスへ同じアプリケーションを一斉展開できる • プルベースのアプローチのため、 Gitリポジトリがスケールする限りスケールする • 追加のコア/RAMは不要、必要なRAMは250MB程度 GitOps Controller Applications 3: 現在の状態を 理想の状態へ同期 MicroShift GitOps 4:理想の状態を展開 30 GitリポジトリでKubernetesマニフェスト(Yaml)をバージョン管理 1: 理想の状態を定義 (pull requestなど) 2: “理想の状態”をプル
  22. Copyright @ 2024 Red Hat, Inc. Edge Device Edge Device

    デバイス Klusterlet Applications プル型コントロールプレーン - Advanced Cluster Management for K8s 31 サーバ • コミュニティ版はOpen Cluster Management • プル型のメリットを活かしつつ、単一コントロールプレーンで一元管理できる • 特定のデバイスの集合を表す「ラベル」の単位でアプリをデプロイできる • Addonで機能拡張でき、デフォルトでGitやHelm、ArgoCD、Ansibleなどと連携可能 3: 現在の状態を 理想の状態へ同期 4:理想の状態を展開 1: 理想の状態を定義 (pull requestなど) 2: “理想の状態”をプル 同期先クラスタの決定 どのデバイスにどのアプリが存在するべきか宣言
  23. Copyright @ 2024 Red Hat, Inc. Edge Device Edge Device

    デバイス Klusterlet Applications CI/CDパイプラインとエッジデバイスを連携 32 サーバ アプリのリリースのトリガーをGitに集約させて、CI/CDパイプラインと連携させる CI/CD 5: 現在の状態を 理想の状態へ同期 6:理想の状態を展開 1: ソースコードをPush 4: “理想の状態”をプル 3: K8sのYaml更新 2: ソースコードのpull
  24. Copyright @ 2024 Red Hat, Inc. ビルトイン モデルロード 学習済みモデル MLライブラリ群

    コンテナイメージにMLモデルを組み込む コンテナイメージ単位でMLモデルも更新 モデルサーバー • OpenVino Model Server (Intel) • Triton (Nvidia) • ML Server (Seldon) コンテナによる学習済み MLモデルの提供パターン 33 リポジトリ上のMLモデルを推論実行時にロード アプリとMLモデルの運用ライフサイクルを分離
  25. Copyright @ 2024 Red Hat, Inc. OpenVINO Model Server ロードしたMLモデルをgRPCまたはREST

    API として公開してくれる 様々なモデルフォーマットをサポート TensorFlow / ONNX / PaddlePaddle / OpenVINO IR モデルリポジトリ上のMLモデルのバージョン変 更を検知して、コンテナの中で自動的に切り替 えしてくれる 推論性能などのメトリクスを取得できる 一つのコンテナ内に複数のMLモデルを持たせ ることもできる 34 参照. https://docs.openvino.ai/2023.3/ovms_what_is_openvino_model_server.html
  26. Copyright @ 2024 Red Hat, Inc. モデルリポジトリとは models model 1

    1 model.xml model.bin 2 model.xml model.bin 35 MLモデルをバージョン管理する環境 オブジェクトストレージがよく使用される モデル毎に専用のディレクトリを作成し バージョンを表すサブフォルダを配置 (正の整数値) MLモデルの更新は、モデルリポジトリに サブフォルダ単位で MLモデルを追加する だけで、Model Serverが自動ロード
  27. Copyright @ 2024 Red Hat, Inc. Edge Device Edge Device

    デバイス Applications アプリとMLモデルの運用ライフサイクルを分離 36 サーバ CI/CD Model Server MLモデルを追加 Model Repository MLモデルのプル 5: 現在の状態を 理想の状態へ同期 6:理想の状態を展開 1: ソースコードをPush 4: “理想の状態”をプル 3: K8sのYaml更新 2: ソースコードのpull Klusterlet
  28. Copyright @ 2024 Red Hat, Inc. 38 変化への柔軟な対応に備える ビジネスアジリティを得るには、変化に対して柔軟に更新できる能力が不可欠 プロジェクトの拡大は、エッジ環境へ展開したシステムの運用管理の効率化が鍵

    その両方を解決する手段が、クラウドネイティブ デバイス上のアプリケーションの開発・運用プロセスの変革に挑戦 実現に向けて求められるテクノロジーは、クラウドネイティブ でレディです! クラウドネイティブを上手に活用し、組み込みシステムの開発・運用プロセスを変革する
  29. Copyright @ 2024 Red Hat, Inc. 39
 共同でのデモ実証ワークショップ お客様の運用課題の整理とソリューションの価値証明をご支援 実機へインストールするデモシナリオの拡充

    ご関心のレッドハット認定 ISVソリューションの検証をご支援 参考. 実機を用いた検証環境の公開 クラウド 産業用PC 産業用PC Far Edge Near Edge Core MES ERP/PLM AI / OEE Digital Twin CI/CD MLOps PLC
  30. Copyright @ 2024 Red Hat, Inc. 参考. 体験コンテンツのご紹介 InstruqtというWebサイトでRed Hat

    Device Edgeを無償で体験いただけます。 40 https://play.instruqt.com/embed/openshift/tr acks/red-hat-edge-workshop-jp?token=em_F q9rqH6LGRgsEean ※Webブラウザは Google Chrome、Firefox、IE Edgeで動作します。 Device Onboarding Application Deployment https://play.instruqt.com/embed/openshift/tracks /red-hat-device-edge-install-microshift?token=em __lfXU_pCdghwqIMZ 注)アクセスすると利用者毎に専用の環境が自動的に払い出されます。   そのため、環境構築に 15-20分程度かかります。
  31. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Thank you Red Hat is the

    world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500.
  32. Copyright @ 2024 Red Hat, Inc. 今までのOSとImmutable OS Red Hat

    Enterprise Linux for Edge Red Hat Enterprise Linux 汎用OS Immutable OS • パッケージベース • OS稼働中に状態が変わる • クライアント側でパッケージの依 存関係を管理(yum/dnf) • イメージベース • OS稼働中は不変、再起動で変更 • サーバ側でパッケージの 依存関係を管理(rpm-ostree) 44 ホストOSの運用を、仮想マシンやコンテナのようなイメージ単位の運用にできる
  33. Copyright @ 2024 Red Hat, Inc. エッジデバイス 開発環境 Image Builder

    a1 a2 a3 コンテナ レジストリ Rev a1 Rev a2 Rev a3 OSTree Repo v1.0 v1.0 v1.1 v1.2 コンテナイメージの 構築・公開 v1.1 v1.1 a3 v1.2 運用の ライフサイクル を分離 a1 デプロイ コンテナ OS OSとアプリケーションの更新運用のイメージ 45 OSTree Commit の構築・公開
  34. Copyright @ 2024 Red Hat, Inc. Read-only /usr ファイルシステムツリーは 展開されたOSTreeコミットの

    シンボリックリンク /home -> /var/home /root -> /var/roothome /srv -> /var/srv /mnt -> /var/mnt /opt -> /var/opt /ostree -> /sysroot/ostree /media -> /run/media 1. /usrは読み取り専用のディレクトリ 2. いくつかのディレクトリはシンボリックリンクで展開 3. sysrootというディレクトリ が従来でいうrootを指す コンテナに似 ている: システムは 読 み 取 り専 用 ディスクか ら起 動 し、ユーザ データは 別 の ボリュームに保 存 され る Special Directory /sysroot # ls / bin -> usr/bin boot dev etc home -> var/home lib -> usr/lib lib64 -> usr/lib64 media -> run/media mnt -> var/mnt opt -> var/opt ostree -> sysroot/ostree proc root -> var/roothome run sbin -> usr/sbin srv -> var/srv sys sysroot tmp usr var Read/Write directory Read-Only directory Soft link to directory Special directory OSTree展開におけるシステムレイアウト 46
  35. Copyright @ 2024 Red Hat, Inc. • リポジトリデータベース: /sysroot/ostree/repo • ファイルシステムのリビジョン: /sysroot/ostree/deploy/rhel/deploy

    (OS更新毎に生成される) • /sysroot/ostree/boot.*は、前のリビジョンのデプロイメントにリンク # ls /sysroot/ostree/deploy/rhel/deploy/ dc2906bfc08d6fcf0d01f65432cc42b236eb6e1be32aeefa72c650e117fdb465.0 fe5758afe3ff303b5fc92c81dcbe52a3240c93771003af8ea86ee4ee880c30b1.0 dc2906bfc08d6fcf0d01f65432cc42b236eb6e1be32aeefa72c650e117fdb465.0.origin fe5758afe3ff303b5fc92c81dcbe52a3240c93771003af8ea86ee4ee880c30b1.0.origin # ls /sysroot/ostree/deploy/rhel/deploy/dc2906bfc08d6fcf0d01f65432cc42b236eb6e1be32aeefa72c650e117fdb465.0 bin boot dev etc home lib lib64 media mnt opt ostree proc root run sbin srv sys sysroot tmp usr var Rev a1 Rev a2 /sysroot/ostree/deploy/rhel/deploy/ ACTIVE # ll /sysroot/ostree/boot.1/rhel/565b92647ae3201a2615b6355e3c41208c6e475617e9a1c5786d2d86361ee33b/ total 0 lrwxrwxrwx. 1 root root 94 Mar 25 11:07 0 -> ../../../deploy/rhel/deploy/fe5758afe3ff303b5fc92c81dcbe52a3240c93771003af8ea86ee4ee880c30b1.0 lrwxrwxrwx. 1 root root 94 Mar 25 11:07 1 -> ../../../deploy/rhel/deploy/dc2906bfc08d6fcf0d01f65432cc42b236eb6e1be32aeefa72c650e117fdb465.0 2つの実行されたデプロイメント Rootファイルシステム sysroot で管理されるもの 47
  36. Copyright @ 2024 Red Hat, Inc. OSTree イメージのプロビジョニングフロー 48 OSTree

    イメージの作成(Image Builder) HTTPでOSTreeコンテンツを配信 or メディアへOSTreeコンテンツを埋め込み )