Think2018で見てきたIBMのKubernetesに関する取り組み状況


米国ラスベガスで2018年3月19日〜22日 開催されたIBMの最大級のイベントThink2018で、Kubernetes関連の取り組みについて、私が参加したセッションや展示について、スマホで撮ってきた写真を中心に、IBM の Kubernetesに関する取り組み状況をまとめてみました。 **(注意: 私はIBMの社員ですが、この記事は会社の見解を代表するものではありません。私個人の意見によるものです。)**


## Think2018とは?
[Think2018](https://www.ibm.com/events/think/)は、IBMの最大級のイベントで、本年のワールドワイドの参加者(3月21日時点)40,000人、日本からの参加は750人だったそうです。開催されるセッション数が約2800弱ありました。 詳しくは次のURLを参照してください。

* 英語案内ページ https://www.ibm.com/events/think/
* 日本語案内ページ https://www.ibm.com/ibm/jp/ja/think2018.html


## Kubernetesに関する動きで印象に残ったこと３点

今年のThink2018で一番印象的だったのは、今後IBMからリリースされる製品すべてが、コンテナとKubernetesに対応するという姿勢でした。昨年のInterConnect2017 では、[パブリック・クラウドのサービスで、Kubernetesをベースとするコンテナ・サービスを開始(2017年3月](https://www.ibm.com/blogs/bluemix/2017/03/kubernetes-now-available-ibm-bluemix-container-service/)くらいの発表しかありませんでしたが、この一年で大きく様変わりした事に驚きました。


私が、深く印象に残ったことを上から順に３つを挙げると以下になります。

### 1. Kubernetes実行基盤としての品揃え充実

この１年間で Xeonプロセッサーのインテル・アーキテクチャのLinuxサーバー、 IBMの POWERシリーズ・プロセッサーを搭載するハイエンドのUNIXサーバー、そして、メインフレームまでが コンテナ と Kubernetesに対応した事になります。 つまり、パブリック・クラウドからオンプレミスのハイエンド・ハードウェアまでを対象としてコンテナとKubernetesに対応した事になります。

* メインフレーム IBM zシリーズでのDockerEE対応
* POWER System での コンテナ & Kubernetes対応 
* インテルアーキテクチャ サーバー用 IBM Cluod Private ソフトウェア製品

Kubernetesは、スマホやIoT製品などで利用されるARMプロセッサから、IAサーバー、そして、ハイエンドのUNIX互換サーバー、メインフレームまで利用できるコンテナ・オーケストレーションのツールとして、浸透した事になります。



### 2. オンプレミスのKuberntesをベースにした統合パッケージ

これから、ますますKubernetesをプラットフォームとして、コンテナのパーツで構成される統合ソフトウェア製品のリリースが予感されますが、その先駆けとなる様な製品が、[IBM Cloud Private for Data](https://www.ibm.com/analytics/cloud-private-for-data/) と呼ばれるソフトウェア製品の発表でした。写真や詳細は後述しますが、ビッグデータの８０％が企業内に存在すると言われるデータを有効に活用するために、Kubernetesのスケールの容易性や、様々なパッケージをコンテナ化して、簡単に組み合わせができるなど特性を生かしたソフトウェア製品だと思います。



### 3. コンテナへ移行するためのモダナイゼーション支援プロダクト

オンプレミスで稼働しているレガシーなJavaアプリケーションをコンテナ化して、Kubernetesでサービス提供するためソフトウェア製品の発表がありました。 これらは [WebSphere](https://www.ibm.com/developerworks/jp/websphere/)や[UrbanCode](https://www.ibm.com/jp-ja/marketplace/application-release-automation) などが、コンテナとKubernetesに対応するものです。 Javaで開発された基幹業務アプリケーションのコンテナ化を支援するツールは、これまで開発されてきたJavaアプリケーションをコンテナ化するための強力なツールとなるでしょうし、UrbaCodeは、IBM製品を中心にCI/CD環境を構築するツールとなるでしょう。



# 印象に残ったことの概要

ここから、これまに挙げた３つについて、概要を書いていきます。


## メインフレーム (IBM Zシリーズ)のKubernetes
IBM LinuxONE Emperor II という Linuxを稼働させるタイプのメインフレームで、強力なハードウェアの能力を活かして、高い信頼性、高度なセキュリティ、大量のトランザクション能力が必要なアプリケーションをターゲットとしたものです。

ITエンジニアの中でもメインフレームに親しむ機会のある人は少ないと思うので、簡単に紹介すると、メインフレームは、とても歴史が古く、[System360](https://ja.wikipedia.org/wiki/System/360)というメインフレームは1964年に発表され、[人類を月へ送ったアポロ計画](http://www-03.ibm.com/ibm/history/ibm100/jp/ja/icons/apollo/breakthroughs/)などでも活用され、また、日本のコンピュータ産業の各社が、[お手本とした](http://museum.ipsj.or.jp/computer/main/index.html)大型汎用コンピュータと呼ばれるものです。現在でもアーキテクチャが継承され、最新型のメインフレームは、銀行や保険の基幹システムや製造業の生産管理など重要な部分で活用され続けています。 

現在のメインフレームは、LSIやストレージの技術の発展によって、メインフレームも大変コンパクトになっています。 左からオールフラッシュのストレージ・システム DS-8800、右側の二つのラックは、IBM z14 という最新型メインフレームの展示用のスケルトンモデルです。 ラックの右側が中段がCPU、下段が水冷装置、そしてその左隣が、I/Oと電源装置になっています。 つまり、下記の３本のラックで、電源、CPU、I/Oスロット、ストレージといった１台のサーバーを構成する感じになります。

![スクリーンショット 2018-03-26 午前10.44.12.png](https://qiita-image-store.s3.amazonaws.com/0/42829/4a97cd45-6c43-0719-965e-1e741bbffc66.png)


次の写真は、メインフレームのCPUが収められる部分で、手前からソケット部分のカット・モデル、チップ表面、水冷ジャケットのカット・モデルと並んでします。 このCPUの列の右側の黒いSSDドライブの箱の様なものが、メモリユニット、そして、反対側のカードが並んでいる部分が、I/Oユニットへの連携するための内部バスユニットだそうです。 使っている部品は、パソコンやサーバーと大きな差が無い様に思うのですが、一つ一つ使っているパーツに高価な部品を使っている事に、信頼性を重んじるカルチャーの違いを感じます。
![IMG_0729.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/885d54b7-ff75-fa84-df98-459e3ea23b0b.jpeg)




次の写真では、Haswellと比べて2倍以上のDockerエンジンのスループットを達成、軽量なコンテナでは200万以上の稼働、重いと軽いのミックスワークロードで1万コンテナをホストするとありました。

![IMG_0468.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/41904ce5-34b2-d33d-5bba-83f297ea88a9.jpeg)

そして、次の写真のOS/Archの欄を見ると解る通り、Intel CPU対応Linuxカーネルのコンテナ、メインフレーム s390対応のLinuxカーネルのコンテナの両方が混在して動作して動作しているコンソールが披露されました。
![IMG_0475.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/6746a562-340d-cbff-73fb-62609a92d190.jpeg)

デモでは、Docker Swarm を利用していましたが、お話によると、今後、DockerEE の Kubernetes を利用できる様です。 

![IMG_0465.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/8147b2ea-5026-e0fc-f559-9a319a2d879b.jpeg)



### 用途は？
一番気になるのは、メインフレームでKubernetesやDockerコンテナを動かして、何に使うの？ という素朴な疑問ですが、次の様なものがある様です。

* 基幹業務システムをモダナイズして、コンテナの利点を活かして、CD/CIを推進する。
* 強力な暗号サブプロセッサとの組み合わせで、サプライチェーンの取引に利用できるブロックチェーン技術を高速に処理できるため、大規模な展開ができる。
* メインフレームの高度な暗号技術を適用して、秘匿性の高い情報をコンテナベースのアプリに適用し、法規制の変化に迅速に対応できる様にする。

現時点で、ここまでの製品を莫大な投資をして市場投入するのは、確かな確信があることによると思います。



### メインフレームのアプリ開発もCD/CI
それから面白いと思ったのは、メインフレームLinuxでの開発ですが、GitHub/GitLabのリポジトリを利用、Junkinsを利用したビルドと自動テスト、これらコンテナ化したアプリをメインフレーム上の開発/ステージング/本番環境にデプロイする事を説明している点でした。 スマホアプリだから、とか、基幹業務システムだから、とか開発方法の違いの境界線が無くなるのだろうと思いました。

![IMG_0476.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/35bdd389-e390-998c-cfce-899583268c9a.jpeg)



## Unixハイエンドサーバー POWER9 SystemsのKubernetes

INTEL CPUのサーバーを日常的に利用する者にメインフレーム(IBM Z)が膨大なワークロードを処理する、例えるなら大型トレーラーや機関車だとしたら、POWER9 Systemsは、猛烈な馬力のエンジンを搭載したスーパーカーに比喩できると思います。 IAサーバーは街乗りに適した乗用自動車というところだと思います。 

 これはいろいろ書くより、次の写真では、コストパフォーマンスが良い事がわかります。 [IBM Cloud Private](https://www.ibm.com/cloud/private) ([日本語ページ](https://www.ibm.com/cloud-computing/jp-ja/icp/?S_PKG=&cm_mmc=Search_Google-_-Consolidated+Advertising_2017+CA+Cloud-_-JP_JP-_-IBM+Cloud+Private_Exact_&cm_mmca1=000016OY&cm_mmca2=10004048&cm_mmca7=9041427&cm_mmca8=kwd-396234160064&cm_mmca9=9ce337a8-ef16-4008-832a-d3a0b564c631&cm_mmca10=254885963001&cm_mmca11=e&mkwid=9ce337a8-ef16-4008-832a-d3a0b564c631_620_17477)) は、Kubernetesをベースとしたソフトウェア製品版の名前で、POWER9用にビルドされたKubernetesを利用する事ができます。

![IMG_0630.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/d93c7179-fcb0-bee5-9f3d-ff934a305f19.jpeg)



## IBM Cloud Private (IAサーバー、POWERシステム向け Kubernetesソフト製品)

[IBM Cloud Private](https://www.ibm.com/cloud/private) は、すでに発表されているKubernetesを簡単に構築するためのクラウド・ソフトウェア製品ですが、関連したソフトウェア製品などの紹介もあり、そして、数多くのハンズオンセッションも開催されていました。

![IMG_0663.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/226c10da-b369-c06d-265b-4d7225e88601.jpeg)

次は、デベロッパー向けにハンズオンセッションに参加した時の写真です。 ハンズオンの講師は、Eduardo Patrocinio さん（写真右奥側）と Sahdev Zala さん(左側黄色シャツ)で、Sahdevさんは Kubernetesのコミッターを勤めているとの事でした。これ以外にも、WebSphere, UrbanCode, IBM Cloud Container Service などなど、Kubernetesを応用するクラウド・ソフトウェア製品やパブリック・クラウドサービスで、ハンズオン・セッションが開催されていました。 
![スクリーンショット 2018-03-26 午前9.44.22.png](https://qiita-image-store.s3.amazonaws.com/0/42829/f1656731-a05c-7527-cf94-a1b706ee04ee.png)

Kubernetesを基礎としたプラットフォーム製品の普及や拡大に力を注ぐ段階という印象を強く受けました。



### Think2018 で発表になった IBM Cloud Private 新機能

今後のIBMクラウド・ソフトウェアの中核となっていくであろう IBM Cloud Private については、[Think2018で機能追加](https://www.ibm.com/blogs/bluemix/2018/03/new-in-ibm-cloud-private-and-think-2018/)の発表がありました。詳しくは前述のリンク先を参照すると良いんですが、箇条書きでポイントをリストします。

* Kubernetes バージョン 1.9 
* セキュリティの強化 LDAPでユーザーを管理できる様になり、インポートやLDAPからユーザー追加も可能
* WebコンソールからOpen Service Brokersを管理できる様になり、ヘルムチャートとして、新しいサービスクラスを登録することができます。
* 運用制御プレーンをKubernetesとCloud Foundryに統合
* クラスタ内に公開されているKubernetes ServicesからF5 BIGIP Virtual Serverを直接設定する
* 組み込みコマンドラインを使用して、OpenStackとVMWareの両方にワーカーノードを動的に追加可能
* IBMのミドルウェアのワークロードは自動的に認識され、ライセンスの使用率と可用性を把握




次の写真は、IBM Cloud Private をより有効に使って行くためのもので、それぞれリンクを紹介します。

* [IBM Garage アーキテクチャ・センター](https://www.ibm.com/cloud/garage/architectures?s_tact=C43301PW)
IBM Cloud Private上で動作するものではありませんが、参考となるアーキテクチャを集めたウェブページです。

* [トランスフォーメーション・アドバイザ](https://developer.ibm.com/product-insights/transformation-advisor/)
IBM Cloud Private で動作するWebShpereのJavaアプリケーションを変換してコンテナ化するためのツールで、earやwarファイルを与えると内容を解析して、DockerやKubernetes対応のレポートを提示します。

* [Cloud Automation Manager](https://www.ibm.com/us-en/marketplace/cognitive-automation)
こちらもIBM Cloud Private で動作するツールで [TerraForm](https://www.terraform.io/)をベースとしたマルチクラウドをデプロイや管理するためのツールです。

* [Microclimate](https://www.ibm.com/us-en/marketplace/microclimate)
IBM Cloud Private上のツールで、コンテナの編集/コンパイル/デバッグ・ライフサイクルのための組み込み機能を使用して、プラットフォーム上に直接アプリケーションを開発、テスト、およびデプロするツールです。

![IMG_0640.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/dd10889d-2d82-d7b7-8641-6d10c34a6410.jpeg)



## IBM Cloud Private for Data

[IBM Cloud Private for Data](https://www.ibm.com/analytics/cloud-private-for-data/) は、前述の[IBM Cloud Private](https://www.ibm.com/cloud/private) に 機械学習の推進にとって重要な五つの活動というか要素を円滑に推進するためのソフトウェアを搭載した統合化パッケージとしてリリースされたものです。 オンプレミスで利用できる IBM Cloud Private という Kubernetesのプラットフォームの特性を生かしたソフトウェア製品であると思います。

![IMG_0693.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/ce7d72b7-48fa-4da8-08f9-94b560a2a2c1.jpeg)

IBM Cloud Private for Data 上で各データ分析に関わる専門家が、セルフで本ソフトを利用して、各専門家が協調して作業を進め、最終的な判断や対策を下し再評価するといった部分をトータルにサポートするのだそうです。
![IMG_0694.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/6b33a237-5de4-3763-e5d5-62b7edc8a6c9.jpeg)

必要なソフトウェアは、コンテナとして提供され、それらをKubernetes上で動作させ、必要な機能をスケールさせる事ができます。
![IMG_0696.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/04267de7-c9a1-536d-c415-1c81aa06f8f1.jpeg)

このIBM Cloud Private for Dataのホストは、仮想サーバーやベアメタルを利用できるとの事で、既存のオンプレ環境でも構築していける点で、パブリック・クラウドへデータを保管したくない所、また、既存のオンプレミスをお持ちで、パブリッククラウドを利用すると上乗せで、コストがかかるというユーザーには、有益なクラウド・ソフトウェア製品であると思います。
![IMG_0699.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/cbd4c626-aabe-aab7-47b8-92080256cd14.jpeg)

機械学習の基盤は、活用とともにデータが増え、分析手法の進化により計算ノード数やGPUの投入など、時間と共に、必要とされるプラットフォームのスペックが変化して行きます。 そういったユーザーと共にする進化発展する必要があるプラットフォームとして、ますます Kubernetesが採用されていく事を予感させるセッション内容でした。


## Javaレガシーアプリのコンテナ化ツール

Transformation Adviser のデモの様子の写真です。スマホで撮影したので小さな文字が見えませんが、アプリケーションのwarやearファイルを与えると、プログラムの構造を分析してくれます。

![IMG_0647.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/498022f0-616d-9361-4d7c-6d625864746e.jpeg)

そして、モジュールの構成要素まで調べて行きます。

![IMG_0648.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/ca7e47e8-efff-b2f9-b0a6-8863b1b56393.jpeg)

最後にコンテナ化するための対策をレポートしてくれます。 あとは解析結果のレポートのアドバイスに従って、Javaアプリケーションを修正すれば、コンテナ化が完了するという流れになります。 もちろん、一気にマイクロサービス化まで完了するものでは無いと思いますが、それでも、コンテナやKubernetesの恩恵に預かることができると思います。

![IMG_0649.jpg](https://qiita-image-store.s3.amazonaws.com/0/42829/785f63ef-7571-284e-2873-4f3ae95504d8.jpeg)

## オンプレとクラウドを自在に使う

それから、オンプレミスのKubernetes すなわちIBM Cloud Private でリソースが不足したら、パブリッククラウドの IBM Public Cloud へコンテナをオフロードするデモがありました。 この以降先のパブリッククラウドのサービスが、 IBM Cloud Container Service であるか、新たにリリースされるものかは聞き取れませんでしたが、この様なハイブリッドも今後実現できる様になっていくそうです。

![スクリーンショット 2018-03-30 午前11.32.54.png](https://qiita-image-store.s3.amazonaws.com/0/42829/cf9c6476-8c63-155d-a19a-d8733a867de5.png)



# まとめ

IBMは常に技術的な比較分析を重ねていて、他社が開発したものであっても、それが将来有望なものであると判断すれば、自社の事業部を切り捨てでも、大胆に経営の舵を切るという特徴があります。これまで、私がIBMで勤務してきて、過去にも日本企業では出来得ない様な方向転換を経験してきました。そして、昨年から今年にかけての経営の判断は、Google社が開発したKubernetesに大きく舵をきり、今後のプラットフォームの中核に据えるものであり、Kubernetesを使いこなして、パブリック・クラウドとオンプレミスを自在に使い分ける世界をIBMがリードして作っていくというメッセージを強く感じました。

Kubernetesに取り組んでいる若いエンジニアの皆さんは、是非、志を高く持って業務にあたり、これから本格的に到来するであろう、IT業界のコンテナ革命の牽引役となって頂ければと思いました。