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

Kabaneroを使ったクラウド・ネイティブなアプリ開発を体験

osonoi
November 20, 2020

 Kabaneroを使ったクラウド・ネイティブなアプリ開発を体験

osonoi

November 20, 2020
Tweet

More Decks by osonoi

Other Decks in Technology

Transcript

  1. IBM Developer Advocacy team
    Kabaneroを使ったクラウド・ネイティブなアプリ開発を体験
    Yasushi Osonoi
    Developer Advocate

    View Slide

  2. 小薗井 康志
    日本IBM Developer Advocacy Group, Client Developer Advocate
    ブログ:
    https://qiita.com/osonoi (Qiita)
    https://blogs.itmedia.co.jp/osonoi/ (IT Media)
    Twitter: @osonoi
    Facebook: @osonoi
    珍しい名前なのでたいがい “osonoi”で発見できます。

    View Slide

  3. 本⽇の内容
    14:00-14:20
    (20min)
    Kabaneroとは
    14:20-15:00
    (40min)
    CodeWind体験ワークショップ

    View Slide

  4. 学習の⽬的とゴール
    ⽬的
    Kabaneroプロジェクトの概要を理解する
    ゴール
    Kabaneroでアプリケーションを稼働してみる。

    View Slide

  5. 出席の確認にこちらからログインしてください。
    IBM Cloud へのアクセスは上記URLから行ってください
    • IBM Cloud ログイン
    アカウントをすでにお持ちの方は、
    こちらからログインしてください
    • IBM Cloud ライトアカウント作成
    アカウントをお持ちでない方は、
    ご登録をお願いします
    【本⽇のお願い】 https://ibm.biz/BdqJzs

    View Slide

  6. 質問&ライブ投票参加
    はこちら
    slido.com
    #dojo1125
    質問タブで質問⼊⼒
    ⾃分も知りたい質問には
    「いいね」をプッシュ!
    スマホでもアクセスできます
    PC,マックの場合は
    https://app.sli.do/event/czxs9rqd

    View Slide

  7. 質問する場合はこちらから

    View Slide

  8. Kabanero :Cloud Nativeアプリ
    ケーション開発のためのオープンソー
    スプロジェクト
    既存のオープンソースに加え、Appsody と
    CodeWind などを追加して開発者が素早く
    Cloud Nativeアプリ開発に取りかかれる仕組
    みを提供する。
    IBM Developer 8
    https://kabanero.io/

    View Slide

  9. Cloud Nativeとは
    CNCF(Cloud Native Computing Foundation)の定義
    クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境にお
    いて、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、
    サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。

    View Slide

  10. エンタープライズアプリでクラウドに移行できたのはまだわずか

    View Slide

  11. https://image.itmedia.co.jp/l/im/enterprise/articles/1701/23/l_kz_kore0123_01.jpg
    これ一枚でわかる「イミュータブルインフラストラクチャーと
    インフラストラクチャアズアコード」

    View Slide

  12. 12
    © 2019 IBM Corporation
    開発者向けツール DevOps ツール
    チェーン
    codewind, appsody
    最新のマイクロサービス向けフレームワークなどを利用し
    Kubernetes, Knative環境で開発をシンプルにするためのツール
    Kubernetes環境へデプロイするまでのツール
    チェーン
    クラウドネイティブのための既存の開発
    ツールの拡張機能
    100%
    Open
    Source
    12
    コンテナー化された
    ランタイム
    クラウドネイティブ向けオープンソー
    スランタイムとフレームワーク
    kabanero.io
    Part of Enterprise Runtimes and Accelerators for Teams
    Hoste
    d
    K8s-sigs/
    application
    iter8
    Appsody
    Spring
    boot

    View Slide

  13. Kabaneroの主要コンポーネント
    コンポーネント 概要
    スタック(雛
    形)管理
    Appsody Stack マイクロサービス用アプリケーションを迅速に開発す
    るためのアプリケーション雛形
    ツール Appsody 開発、ビルド、テストをサポートするための開発支援
    機能(Appsody CLI)、およびKubernetes上での稼働をサ
    ポートする運用支援機能(Appsody Operator)
    Codewind Appsody CLIと同等の機能を実現するVS code, Eclipse
    などのIDEの拡張機能
    Eclipse Che Webブラウザ上で利用することができるIDE
    Tekton CI/CDパイプラインを構築するためのフレームワーク
    Knative Kubernetes上でサーバーレスアプリを実行する機能
    Istio マイクロサービスの運用管理
    フレームワーク Operator アプリケーションをより効率的、自動化された管理を
    可能にするフレームワーク

    View Slide

  14. Cloud Native チャレンジ!
    Java EE
    現状、現在の開
    発環境
    クラウドネイティブでのチャレンジ
    Configuration sources, service references
    Cloud Environment
    Build, package, deploy, observe
    DevOps
    Application as composition of polyglot services
    Microservices
    https://12factor.net/
    Independent, autonomous, stateless, processes
    12-Factor applications
    Jane: Lead Enterprise
    Developer
    Champ: Solution
    Architect

    View Slide

  15. 15
    クラウド・
    ネイティブ
    開発の
    ⽣産性と俊敏性
    Catherine
    アプリ開発リーダー
    コンテナを活⽤して、
    サクサクと開発をしていきたい︕
    Deployment, ReplicaSet, Pod, PVC …
    でも、開発メンバー全員が
    理解するのは、ちょっと難しいかも…
    もっと業務にフォーカスしたい

    View Slide

  16. 16
    企業としての
    ガバナンス
    乱雑なシステム開発や
    野良コンテナの繁殖は防ぎたい
    アプリの品質は担保したい
    - コードの品質
    - ログやヘルスチェックなど運⽤機能
    - 古いライブラリへの対応
    - 脆弱性への対応
    James
    エンタープライズ
    アーキテクト

    View Slide

  17. View Slide

  18. アプリケーション・スタック
    18
    Kabanero Collection
    (パブリック・レポジトリ)
    https://appsody.dev/stacks/
    l アプリケーション・テンプレート
    各企業の利⽤シナリオに応じた雛形
    l ビルドやテストのためのツール
    Maven, Gradle, pomなど
    l パイプライン・テンプレート
    Tekton ベースのパイプライン
    l 運⽤機能の事前実装
    モニタリング、ロギング、ヘルスチェック
    l ランタイム/フレームワーク
    Open Liberty, Spring Boot, NodeJS など
    l ベース・イメージ(RHUBI)
    ICP4A v4.1.0で商⽤サポートされる
    アプリケーション・スタック
    • Eclipse MicroProfile
    • SpringBoot
    • Open Liberty
    • Node.js
    • Node.js Express

    View Slide

  19. 19
    James
    エンタープライズ
    アーキテクト
    アプリケーション・スタック を
    各企業の必要に応じて、カスタマイズ
    l アプリケーション・テンプレートの充実
    企業のtypicalなRESTベースのアプリ、企業ロゴなどビジュアルが定義されたWebアプリ
    l 実装やセキュリティのために、特定のライブラリを組み込む
    node.js に Helmet.js を組み込む、カスタム・セキュリティ・ライブラリを組み込む
    l ライブラリを特定のバージョンに固定する
    l 企業向けにカスタマイズされたベース・イメージの使⽤を強制する
    RHEL 8.x から特定のパッケージを削除する
    l スタック内のデフォルト実装を別のものに変える
    Opentracinfg を Jaeger からZipkin に変える, モニタリングを DataDogを使うように変える
    l 必須のコード/スタイルの conventionを適⽤する
    checkStyle for Java や eslint for node の実⾏
    l ソースコード・スキャンを ローカル開発/ビルドに組込む
    SonarQube や Rational AppScane を組み込む
    19
    ソリューション・コレクション
    (パブリック・レポジトリ)
    https://appsody.dev/stacks/
    社内プライベート・コレクションの作成

    View Slide

  20. アプリケーション開発の流れ
    アプリケーション開発者
    アプリケーションアーキテクト
    Stack Hub
    運用管理者
    Stackの管理
    Stackから雛形をダウン
    ロード、プロジェクト
    生成
    アプリ開発 ローカル環境で
    実行、テスト
    ビルド
    デバッグ
    デプロイ
    Kabanero Foundation

    View Slide

  21. Appsody: CLI, Stacks, Deploy
    > appsody
    : CLI
    Containerized iterative development
    dev | test | debug | build | deploy
    : stacks
    Sharable pre-built, cloud-optimized
    technology stacks
    : deploy
    Production deploy to Kubernetes
    Server or Serverless Scaling

    View Slide

  22. Appsodyを使った場合
    アプリケーション開発者
    アプリケーションアーキテクト
    Stack Hub
    運用管理者
    Stackの管理
    Stackから雛形をダウン
    ロード、プロジェクト
    生成
    アプリ開発 ローカル環境で
    実行、テスト
    ビルド
    デバッグ
    Appsody list
    Appsody init Appsody run
    Appsody
    deploy
    デプロイ
    Appsody build
    Kabanero Foundation

    View Slide

  23. Appsody デモ
    https://appsody.dev/docs/getting-started/

    View Slide

  24. Stack一覧(2020/04/26現在)

    View Slide

  25. Node-redもDeployできます
    appsodyがNode-REDに対応したので使ってみた
    https://qiita.com/motuo/items/2c59fd0f4410e8a7d014

    View Slide

  26. Codewindを使った場合
    アプリケーション開発者
    アプリケーションアーキテクト
    Stack Hub
    運用管理者
    Stackの管理
    Stackから雛形をダウン
    ロード、プロジェクト
    生成
    アプリ開発 ローカル環境で
    実行、テスト
    ビルド
    デバッグ
    デプロイ
    雛形のダウンロード、アプリの
    開発、ビルドまでをIDEの画面
    から操作できる
    Kabanero Foundation

    View Slide

  27. Codewind: Kabanero developer experience for IDEs
    • Codewind を使用すると、アプリが本番環境で実行されているときと同じように、コンテナー内のアプリの反復処理、
    デバッグ、パフォーマンス・テストを迅速に実施できます。

    View Slide

  28. 前掲のように、KabaneroはモダンなCloud Nativeアプ
    リケーション開発のための包括的なプロジェクトです。コー
    ディング時の雛型⽣成からコンテナのビルド、実⾏、
    CI/CDパイプラインまで、幅広くカバーしています。
    当ハンズオンでは特に開発者の⽴場にたって、以下のシ
    ナリオをVisual Studio Code環境で⾏います。
    Codewindを使います。
    1. プロジェクトの作成
    2. Collectionを⽤いた雛型の⽣成
    3. ⾃動的な変更検知とコンテナ・ビルド
    4. 実⾏とロギング
    5. 簡易的な負荷テスト
    6. アプリケーションのモニタリング
    Modernize
    Application
    Languages
    & Runtime
    Develop Build Manage
    >
    統合された開発ツール 統合されたDevOpsツール
    選定されたコレクション
    当ハンズオンではこの辺を扱います
    ハンズオン

    View Slide

  29. ハンズオンの準備(まだの⽅)
    Windows, MacのどちらでもOKです。ただしメモリーは8GB以上必要です。(16GBを推奨)
    Docker, Vs Codeをインストールしてください。
    Docker
    https://docs.docker.com/docker-for-mac/install/ (Mac)
    https://docs.docker.com/docker-for-windows/install/ (Windows)
    VS code
    https://code.visualstudio.com/download

    View Slide

  30. Visual Studio Code, Docker を起動してください。

    View Slide

  31. Codewindのインストール
    メニューから View -> Extention を選択してください

    View Slide

  32. Codewindのインストール
    Codewindと⼊⼒してください
    インストールをクリック

    View Slide

  33. Codewindのインストール
    Codewindが追加されました。

    View Slide

  34. もしCodewindがStopしていたら
    こちらを右クリックしてStartしてください。
    Dockerが起動していないとエラーになります
    スタートするときにcodewindのコンテナイ
    メージをインストール必要がある場合もありま
    す。

    View Slide

  35. Visual Studio Codeのパネル構成(codewindの観点での)
    はじめにVisual Studio Codeでのcodewindのパネ
    ル構成を簡単にご説明します
    codewindは「プロジェクト」という単位で成果物を管
    理します.
    この部分にはワークスペースで、codewindが⽣成
    (scaffold)したソースプログラムや定義ファイル⼀式がプロ
    ジェクト単位に表⽰されます(今は何もありませんが、これ
    から作ります)
    ここからcodewindのプロジェクトを作ります。プロジェク
    トができたら、右クリックで様々な機能を起動できます。
    プロジェクトの右クリックで
    表⽰されるメニュー例

    View Slide

  36. プロジェクトの新規作成
    ではプロジェクトを作ります。
    左下のProjects(Local)の右の+マークをクリック
    中央上部に「Select project type to
    create(どんなプロジェクトの種類にしますか)」と表
    ⽰されたら上から5番⽬の「Appsody Node.js
    Express scaffold template」をクリック

    View Slide

  37. テンプレートのソースを追加できます。
    Projectを選択するときに
    右上のアイコンをクリック
    Defaultのテンプレートに加えKabanero,
    Appsodyのテンプレートを追加できます。

    View Slide

  38. プロジェクトの名前を聞かれるので、お好きな名前を
    ⼊⼒して「Enter」キー
    • たとえばmy-nodejsなど
    途中でインストール先ディレクトリーを聞かれるので空
    のからのディレクトリーを作成ししてしてください。
    右下にcreating…が表⽰されるので2-3分待ちます。
    (裏であれこれダウンロードしてますので、しばしお待ち
    ください)
    created project 〜 atになれば完了です︕

    View Slide

  39. プロジェクトができました︕
    nodejsのテンプレートから
    ⽣成されたソース等⼀式
    テンプレートを選んだだけで、⾃動的にプログラムの雛型が作られ、裏でdockerでbuildされ、コンテナ内でnode.jsが起動
    しています。⾮常に簡単ですね︕
    *ここにソースが表示
    されていない場合に
    は次次頁を参照して
    追加できます。
    ここをクリックしてプロジェクト
    の詳細を表⽰してください。

    View Slide

  40. 参考までに
    プロジェクト作成でしてしたディレクトリーにNode.js e
    のディレクトリーができているはずです。

    View Slide

  41. ソースが表⽰されない場合
    プロジェクトの上で右クリック
    Add to workspace
    で追加できます。

    View Slide

  42. アプリケーションにアクセスします
    ではアプリケーションを⾒てみましょう
    • プロジェクトの右側のアイコンをクリックしてください。
    • Firefoxが起動され、アプリが表⽰されます

    View Slide

  43. ソースを変更してみましょう
    ちょっとやってみましょう。
    • 左側のCODEWIND-WORKSPACEの下の
    routes – index.js を選択します
    • 7⾏⽬を変更します。たとえば「~Express!!!」の
    末尾にHow are you?」を追加します
    • Ctrl+Sまたは「ファイル」-「保存」で変更を保存
    します
    • 先ほどと同様にURLにアクセスします
    • 即座に⽂⾔が変わっていますね?

    View Slide

  44. コードの開発中から負荷テストが⼿軽に⾏えます
    codewindでは開発中に負荷テストを⼿軽に(※)
    ⾏えます。やってみましょう。
    左下のプロジェクトを右クリック-「Performance
    Dashboard」
    ブラウザーでPerformanceタブが開きます
    右上の「Edit load run settings」をクリックすると、こ
    れからかける負荷リクエストの内容を設定できます。今
    はデフォルトで⾏います。
    ※Apache JMETERのような本格的な負荷
    テスト・ツールではありません。コード改変中から
    ⼿軽に頻繁に負荷テストを⾏うことで、性能⾯
    のデグレを防⽌することに主眼があるようです

    View Slide

  45. さっそくやってみましょう。
    • 左上「Run Load Test」をクリック
    • 適切なコメントを書いて「Run」
    • 20秒程度おまちください
    • 完了すると結果が表⽰されます

    View Slide

  46. 結果を⽐較できます
    同じことをもう⼀度⾏います
    • 左上「Run Load Test」をクリック
    • 適切なコメントを書いて「Run」
    • 20秒程度おまちください
    • 完了すると結果が表⽰されます
    • ご覧の通り、前回の結果と⽐較できますので、
    性能デグレの有無などが⾒やすいですね︕

    View Slide

  47. アプリケーションのリソース状況のモニター
    さらにCPUやメモリーなどの状況を簡単に
    みられます。開発中からリソース状況を把
    握して、リソース上のボトルネックの有無を
    知っておくよいプラクティスですね。
    プロジェクトを右クリックして「Metrics
    Dashboard」
    ブラウザーのタブが開き、DashboardタブでCPUやメ
    モリ、HTTPの応答時間や件数が⾒られます。
    Profiling,Summaryのタブも念のため⾒ておきま
    しょう。

    View Slide

  48. お疲れ様でした︕
    ⾊々試してみてください。(画⾯はQuarkus)

    View Slide

  49. ぜひ試してみてください。
    https://kabanero.io/try-it/

    View Slide

  50. Projects vs. Products
    Production-Grade Open Source Project
    quarterly minor releases, no Long Term Support
    community support
    platform certification: (AKS, EKS, GKE, IKS)
    core framework / limited security
    platform or user responsible to integrate beyond core
    Production-Grade Open Source based Product
    quarterly releases, support for major release 3+ years
    enterprise support
    ecosystem certification: platform and app containers
    k8s core plus abstractions / dashboard / security
    opinions and integration of common features

    View Slide

  51. Projects vs. Products
    Production-Grade Open Source Project
    community support
    Install via documentation
    Production-Grade Open Source based Product
    Versioned and supported
    Simplified install with Cloud Pak for Applications
    Integrations with Other Cloud Paks
    Entitlement to Red Hat Runtimes
    Kabanero Project
    Cloud Pak for Apps
    Accelerators for teams

    View Slide

  52. IBM Cloud Pak for Applications
    52
    IBM Modernization & Developer Tools
    Included with all components
    Transformation Advisor
    WebSphere Migration Toolkit
    Enterprise Dev tools & extensions for local IDEʼs
    Supported when used with Cloud Pak for Applications, no
    charge
    IBMモダナイゼーション開発ツール
    Transformation Advisor
    Mono2Micro (Beta)
    Application Navigator
    WebSphere Migration Toolkit
    企業向け開発ツールおよび IDEプラグイン
    Cloud Pak for Applications とあわせて利⽤される場合には、追加課⾦なしでサポートを提供
    既存アプリのモダナイズ
    WebSphere Application Server
    WebSphere ND | WebSphere Base
    Liberty Core | Mobile Foundation
    JBoss Enterprise Application Server
    WebSphere Application Server
    Liberty Core | WebSphere Base
    WebSphere ND | Mobile Foundation
    JBoss Enterprise Application Server
    既存アプリケーションの稼働
    Red Hat Code Ready Workspace
    新規 Cloud Native アプリのビルド
    チームにコンテンツと、ツール、アーキテクチャ、メソドロジーを提供
    チームが ビジネスの問題に Day1から 集中できるようにする
    Accelerators for Teams (チーム開発加速 & 企業ガバナンス)
    Red Hat OpenShift Container Platform
    企業向けアプリケーション・ランタイム
    分散データキャッシュ Single Sign On メッセージング
    • WebSphere Liberty
    • 従来型 WebSphere AS
    • Mobile Foundation
    • Open Liberty
    • JBoss EAP
    • Quarkus
    • Node.js
    • Spring Boot
    • JBoss WS
    • Vert.x
    • Cloud Functions (Serverless)
    • OpenJDK

    View Slide

  53. 質問&ライブ投票参加
    はこちら
    slido.com
    #dojo1125
    質問タブで質問⼊⼒
    ⾃分も知りたい質問には
    「いいね」をプッシュ!
    スマホでもアクセスできます
    PC,マックの場合は
    https://app.sli.do/event/czxs9rqd

    View Slide

  54. Kabaneroプロジェクト、コントリビューターも募集中
    Githubで貢献、あるいはブログなどでの
    Meetupイベントもやろうと思ってます。ぜひご参加ください︕またアンケートもよろしくお願いします︕
    https://ibm-developer.connpass.com/event/169676/

    View Slide