Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

小薗井 康志 日本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”で発見できます。

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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 アプリケーションをより効率的、自動化された管理を 可能にするフレームワーク

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

アプリケーション・スタック 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

Slide 19

Slide 19 text

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/ 社内プライベート・コレクションの作成

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

ハンズオンの準備(まだの⽅) 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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

プロジェクトができました︕ nodejsのテンプレートから ⽣成されたソース等⼀式 Projectの下にmy-nodejsが表 ⽰され、状況が [Running,Build Succeeded]になっています。つ まり上記のワークスペースのソー スからビルドを⾏いコンテナを作 成してdockeとして起動済だよ、 ということです [Running,Build Succeeded] =ワークスペースのソースからビル ドを⾏いコンテナを作成してdocke として起動済だよ、ということです コンテナのidや アプリのエンドポイント(url)など テンプレートを選んだだけで、⾃動的にプログラムの雛型が作られ、裏でdockerでbuildされ、コンテナ内でnode.jsが起動 しています。⾮常に簡単ですね︕ *ここにソースが表示 されていない場合に は次次頁を参照して 追加できます。

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

まずは起動ログを確認します node.jsの起動ログを確認しましょう • 左下のプロジェクトを右クリック • 「show all logs」を選択 右下にnode.js/expressの起動ログ(メッセージ) が表⽰されます。今はdocker環境で動いていますが、 コンテナの中にいちいち⼊らずにログを⾒られるは便利 です。

Slide 43

Slide 43 text

アプリケーションにアクセスします ではアプリケーションを⾒てみましょう • 右側のApplication informationパネル • Application Endpointのリンク (http://127.0.0.1:32770)をクリック • Firefoxが起動され、アプリが表⽰されました

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

お疲れ様でした︕

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

IBM Cloud Pak for Applications 53 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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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