タグ別アーカイブ: #ibmcloud

Cloud – クラウドネイティブ開発とは何か? マイクロサービスとの関連

最近よく 「クラウドネイティブでの開発とは?」 とか 「マイクロサービス開発のポイントは?」 ときかれるため、先日講演した内容についてご紹介します。クラウドの活用が広がり、その最適な開発方法に関心が高くなってきていますね。

クラウド・ネイティブとは

クラウド・ネイティブな開発とは、つまりクラウドで動かすのに最適化されたアプリを開発する事。通常のアプリ開発とどこが違うのでしょうか?クラウド・ネイティブなソフトウェア開発を推進している団体、「クラウド・ネイティブ・コンピューティング・ファンデーション (CNCF)」 で確認してみましょう。

Home Page

以下のリンク先にあるように主要なクラウド企業はほとんど参加し、様々な推進活動が実施されています。

Members

では、クラウド・ネイティブの定義は何でしょうか?
このCNCFのホームページの以下のFAQに 「What is Cloud Native?」 が分かりやすく記述されています。

FAQ

要約しますと、以下のように書かれています。

「クラウド・ネイティブ技術は、パブリックやプライベートもしくはそのハイブリッドなクラウドの新しいダイナミックな環境において、スケーラブルなアプリケーションの構築と稼働を実現します。コンテナーやサービス・メッシュ、イミュータブル・インフラストラクチャー、マイクロサービスがその典型的なアプローチです。

これらの手法によって、対障害性があり管理され可視化された、疎結合なシステムを可能にします。オートメーションと組み合わせることで、エンジニアは頻繁な変更を最小限の労力で可能になります。

CNCFはこの新しいパラダイムの適用を、オープンソースのエコシステムとベンダー・ニュートラルな製品により推進します。」

はじめての人には少し分かりにくいと思いますので、私なりに補足して解説します。まずクラウド・ネイティブ技術の適用環境ですが以下ように図で表してみました。

上記にありますように、クラウド・ネイティブなアプリケーションとは主に、Dockerなどの「コンテナ」化されており、Kubernetesなどの「動的オーケストレーション」技術で動的に構成される、「マイクロサービス」化されたアプリケーションが典型的と言われています。これはCNCFホームページの「What is CNCF?」にも書かれています。これらは現在のクラウドを支える主要な技術なので後でじっくり記述します。

その前に大切なのは、「What is Cloud Native?」にあるように、これらのクラウド・ネイティブ技術は、いわゆるパブリックのクラウドのためだけにあるわけではないという事です。クラウド・ネイティブなのにクラウドだけでないというのはやや逆説的ですが、コンテナやオーケストレーションはサーバーを迅速かつ柔軟に構成するためのたいへん優れた技術であるため、パブリック・クラウドだけでなく、オンプレのプライベート・クラウドでの活用も盛んになっています。オンプレであっても、クラウド技術を活用したいというユーザーが増えているためです。その事で、今はパブリック・クラウドでは不安があるアプリケーションも、まずはオンプレのプライベート・クラウドで稼働させてから後からそのコンテナをパブリックにそのまま展開する・・・といった自由な選択が後から可能になります。

クラウド・ネイティブ技術

では、その他の主なクラウド・ネイティブ技術を以下に紹介します。

【コンテナ化】
アプリなどの各要素をLinuxコンテナとしてパッケージすることで、再現性・透過性・環境独立性を実現します。Docker社のコンテナが主流で、既に様々なクラウド環境でサポートされています。特徴は、従来の仮想化と異なり、パッケージの中にLinux OSを含まないため軽量(サイズが小さい)で迅速なサーバー立ち上げが可能です。

【動的オーケストレーション】
コンテナの複数サーバー(クラスタ)への配置を自動的にスケジュールし、リソースの活用を最適化します。主流はオープンソースのKubernetesで、元々はGoogle社が自社の膨大なクラスタを管理するために作成したもので、現在は多くの企業が開発に参画しています。

【API】
APIは、アプリケーションの対外インターフェースであり、従来のライブラリのAPIと区別するために、Web APIと呼ばれることもあります。通常のWebのプロトコルであるhttpでデータを通信する「REST」に、「JSON」と呼ばれるデータ形式でやり取りします。

【サービス・メッシュ】
アプリケーションが、後述のマイクロサービスで細分化され、多くのAPIでやり取りされるようになると、n対nの膨大なメッシュができ、さらにそのバージョンを区別したいと思うと管理が複雑になります。このようなサービスのメッシュの管理を容易にするサービス・メッシュが必要になります。その主流はGoogleやIBMなどが開発している「Istio」です。

【イミュータブル・インフラストラクチャー】
直訳すると、変えないインフラという意味ですが、いわゆる塩漬けでそのまま使い続けるという意味ではありません。本番のインフラに対して継続して様々な設定を変更したり、パッチを当てたりすると再現困難な環境になる事があります。現在動いている本番環境に変更を加え新しい本番環境を作りこんでいくのではなく、例えば新しい本番環境をイチから構築し、そちら側にサーバーをスイッチしていくようなイメージの方式です。

これらのクラウド・ネイティブ技術は、従来のシステム構築のパラダイムをシフトさせるべくクラウド環境から発展してきました。が、そういった優れたテクノロジーをオンプレ環境で使わない手はないため、今ではオンプレでも共通的に使われるようになっています。

マイクロサービス

クラウド・ネイティブの技術、最後は「マイクロサービス」です。マイクロサービスは、技術というよりは設計手法になります。細かくサービスを分割するマイクロサービスに対し、対極にあるのは「モノリシック」です。従来のアプリケーションでは、様々な機能が一つのモジュールに固められ、そこからアクセスするデータも複雑にからみあった大きな一枚岩になっているものもあります。しかし、機能同士が密結合になっているため、頻繁に変更を繰り返す顧客接点のアプリなどではビジネスのスピードについていけないケースがありました。マイクロサービスではこれを細かい単位に細分化することで防ごうという設計コンセプトです。

マイクロサービスでは、一つ一つのコンポーネントの単位を疎結合にすることで、個々のバージョンアップや問題の修正を容易にします。これまでモノリシックでは、一つの機能を変えるのに全体の機能を再テストが必要になる可能性がありましたが、マイクロサービスはそれぞれを独立させることで、影響を最小限にします。

特に以下のようにアプリとデータをセットで分割し、それを複数のサーバーで立ち上げることで、問題の所在を局所化させ、個別の更新を容易にします。マイクロサービスの中の機能が直接他の機能を呼び出すと密結合になってしまいますので、基本的にサービスはAPIを介して呼び出します。

このことで、個々の機能のバージョンアップをする際や、問題が起こった際に修正を適用する際などに、全体に影響が派生せず個々のマイクロサービスの更新で済むため維持・運用が容易になります。

このマイクロサービスの設計の考え方は実は以前のSOAの経験を生かしてモダナイズする形で作られています。SOAは企業内のシステムを疎結合化し、ESBと呼ばれるバスで接続する形態でした。マイクロサービスは、特に顧客接点などのインターネット上のアプリに着目し、よりクイックにサービスを構築、より頻繁な更新が可能になるように考えられています。が、これまでのSOAでの設計経験が生かせる方式でもあります。

 

IBM Think 2018 – イベントで見えた IBM Cloudの 方向性

IBM Thinkのイベント全体を通じて、IBM Cloudの一貫した方向性が感じられました。それは、企業向けのクラウド(Enterprise Cloud)として、Publicな通常のクラウドはもちろん、企業内のオンプレまでクラウド技術で統一し、全体のアーキテクチャーを考えていこうという流れです。クラウド技術とはいわゆるクラウド・ネイティブ・コンピューティングで、アプリをマイクロサービスで設計し、Docker等でコンテナ化して、Kubernetes等で展開・運用するものです。ご存知の通り、クラウドではこれにより疎結合で独立したアプリを作り、可搬性の高いパッケージとして保存し、容易にクラスターに展開したり、負荷が高くなるとオートスケールですぐにサーバーを増やすことができるようになります。

オンプレもクラウド・ネイティブ・コンピューティング

でもこれってクラウドのみでなく、企業内のオンプレのサーバーでも同じようなメリットを享受したいですよね。というわけで、クラウドで培われた以下の4つのオープンなテクノロジーなどを、オンプレでも活用できるようにする方向性です。

このことによって、クラウドとオンプレで別々のスキル育成をする必要も無くなりますし(最近はIT人材不足!)、クラウド・ネイティブで作っておいて、後からクラウドでもオンプレでも好きな方に展開できる利点もありますよね。クラウドが発展し、その優れたテクノロジー群が標準的になってきているので、確かにそれをオンプレでも使わない手はないと思います。

特にIBMは Kubernetes(外人は皆クーバーネティスと発音していた。略すとk8s)に力を入れてきており、オープンソースに人的にも貢献して、ほとんどのセッションでKubernetesの事について触れていました。IBMはコンテナをクラスターなどに展開するオーケストレーションを自動化するために、Kubernetesに賭けていますね。

クラウド・ネイティブな技術をオンプレでも使えるようにするIBM製品は「IBM Cloud Private (ICP)」ですが、上の日本語まとめ資料にもあるように、LinuxONEという、なんとメインフレーム(IBM Z)の上で動くLinuxの上や、IBMがサーバーを販売していない x86のIAサーバーもサポートすると発表されました。「どこでもクラウド」を徹底してますね。コンテナ化しておいて、とりあえず今あるサーバーでオンプレで動かしておいて、スケールアップが必要になったらクラウドに載せるとか、柔軟にできそうです。

また、上の資料にもあるように、クラウド上で提供する素のサーバーのベアメタルの上でもKubernetesが管理付きで使えるようになりました。企業ではまだまだ自分で基盤を制御できるベアメタルが人気なので、そこでKubernetes等で運用自動化できるとクラウドとも共通化できて便利ですね。

さらにこういったクラウド・ネイティブ化をサポートするために、Transformation Adviserにより、現在あるアプリをクラウドに持っていくにはどういった注意点があるかを教えてくれるツールも用意されました。これで持っていく時の難易度が分かりますね。また、従来のIBMソフトウェア製品である、WASやDb2、MQ、IIBなどもコンテナ化して提供される事になりました。これまたコンテナ化が徹底されています。

マイクロサービス

クラウド・ネイティブ・コンピューティングの潮流とともに、アプリをマイクロサービス化して構築しようという動きが大きくなってきていますが、このIBM Thinkイベントでもどのようにマイクロサービス化していくべきかといった議論が盛んでした。以下はその一つの例ですが、モノリシック(一枚岩)な大きな一塊のモジュールをコンテナ化したからといって、モダナイズとは言わないと。ちゃんとマイクロサービスで小分けしてお互いを疎結合にし、何度もデプロイできるよう自動化し、DevOpsで開発が回せるようにツールの流れも整備すること・・といったベスト・プラクティスが紹介されていました。

続きを読む IBM Think 2018 – イベントで見えた IBM Cloudの 方向性

IBM Think 2018 – AIはデータが鍵 – 目玉はWatson Studio

今回のIBM Think イベントに参加して明確になったのは、今後のITとビジネスの主戦場はAIとデータ分析であるということでした。もちろんこれまでもAIやデータの重要性は言われていましたが、Ginniの基調講演はもちろん個別セッションの数や熱気、そしてそこに参加する人の目の色が違いました。いわゆるDeveloperやData Scientist達から非常にSpecificな質問が繰り出されています。特にAIに関しては、IBM Watsonはもちろん、オープンソースのTensorFlowやCaffeといったものも適材適所で組み合わせて活用したり、高速な機械学習のためにGPUを使ったりするケースが増えてきており、後述の各ソリューションに関心が集まっていました。

全体的に同じ意見(by スピーカー&質問者)だったのは、あたり前ではありますが、AIにはデータが大事であること。上の資料にあるように、必要な量のデータが無ければAIにとってハシゴが無いのと同じ。あるセッションで「CxOの人は皆、AIがあれば何でも答えてくれると思っていて、データが必要ですと言っても取りあってくれない」と言ってそうだそうだと会場大ウケしていましたが、その様子からも世界共通なんだなぁと感じました。例えば以下のように、中心の機械学習(Machine Learning: ML)のコードに対して、周りでしなくてはいけないデータの管理や加工の方が面積は巨大で、機械学習なんて決まったエンジンを選んで学習させればよくて、問題はそこに突っ込むデータを作ったり、管理したり、機械学習で得られた結果のモデルを活用することだと語っていました。

ただ世界中の人が皆データが大事な事はわかっているんだけど、データをうまく管理できていない問題を抱えていることも分かりました。クラウドが増えているとはいえ、データの80%はまだ企業の中にあって有効に活用されていないと言われ、データを活用したいマーケティング部門やデジタル部門のデータ・サイエンティストがIT部門に依頼してもなかなかデータが出てこない・・・といった事象が話し合われていました。下図のように、パブリックなクラウドと、プライベートなクラウド、そして既存システムと企業のシステム構造が複雑になってきてデータが分散しているのも一因ではと思いました。

そこでIBMが出してきたのが、IBM Cloud Private (ICP) for DataIBM Watson Studio。クラウドとオンプレも含めデータ(ファイル、DB含め)をカタログ化し管理するICP for Dataと、そのデータをAIや分析エンジンを使って実際に分析の実装をする際に使うWatson Studioです。ICP for Dataの概要は、Thinkの日本人用共有セッションでまとめられていたように以下になります。

ICP for Dataのアーキテクチャは以下ですが、肝は下のEnterprise Data Catalog。パブリックなクラウドのデータも、オンプレのプライベート・クラウドも既存システムも、一元的にデータの場所を管理できます。そして分散されたファイルやDBのデータから、AIの学習などに必要なデータを適切に取り出し、成型することができます。

これらの話は、上の右下にいるIBM AnalyticsのGM、Rob Thomasさんが分かりやすく話してくれました。

ICP for Dataでデータを管理・成型し、AI Readyにしたら、次はそれらのデータを利用してAIに学習させます。そのAI構築のための、統合分析・開発環境が「Watson Studio」です。

続きを読む IBM Think 2018 – AIはデータが鍵 – 目玉はWatson Studio

Watson – 無料 で使える APIの 使い方

IBMの AI、ワトソンが無料で使えるようになったと新聞にあったので使ってみました。実際、一定の容量までは本当に無料で使えました。IBMのWatsonは、IBM Cloudの上でAPIという形で使えるので、用意するのはWebブラウザだけで大丈夫です。まだの人はまず、以下で IBM Cloudに登録してください。

➡IBM Cloud – 無料で クラウドにサーバーを立ち上げる方法

IBM Cloudにログインし、IBM Cloudで上のメニューのカタログをクリックすると、以下のようなWatsonメニューが表示されます。無料のライト・アカウントだと以下の APIが利用可能です。

このように ワトソンは様々なAPIが提供されています。Conversationは自然言語による応答をチャットボットで作るためのWatson APIで、一から学習させるタイプです。最初は知識の無いまっさらな状態です(NLCも)。一方で音声認識の Speech to Text, Text to Speech, 翻訳機能のLanguage Translator, 最適解を探し出すディスカバリー は最初からすぐにある程度の事ができ、さらに自分で賢くできるエンジンになります(VRも)。性格判断のPersonality Insigths,と自然言語から感情を判断するTone Analyzerは、最初から教育が完了しているエンジンで自分で教育する必要はありません。

事前言語解析のNLC (Natural Language Classifier)と画像認識のVR (Visual Recognition) は有料アカウントのみ利用可能となります。

ちなみに無料のライト・アカウントでなく、通常の有料のWatsonを使った場合には、VRでは画像一枚あたり0.21円とかになります。1000回画像認識しても、210円なので高くはないですよね!

上のカタログ画面の中から「Conversation」を選んでチャットボットを作ってみましょう。以下の画面に表示されるように、Conversasionは月1万 API呼び出しまで無料です。また、5つのWorkspace(作業領域)で25のIntent(意図)、25のEntity(対象)までが無料です。下の「作成」をクリックして自分で作ってみましょう。

以下の「Launch Tool」ボタンをクリックし、再びIDでログインしてから「Create」ボタンをクリックしてください。自分のWatson Conversationの作業領域が作られます。

続きを読む Watson – 無料 で使える APIの 使い方

IBM Cloud – 無料で クラウドにサーバーを立ち上げる方法

IBM Cloudが無料でサーバーを立ち上げることができるようになったということで、どこまでできるか以下の 使い方で試してみました。無料で使えるのは「IBM Cloudライト・アカウント」で以下から作れます。

➠IBM Cloudライト・アカウント

IBM Cloudは従来のBluemixが生まれ変わったクラウド・サービスで、ライトアカウントは一定量以下であればカード無しで無料で使えるユーザーです。上の画面の赤字のような、10日間変更しないとサーバーを停止されるなどの制約がありますが、それなりに使えそうなのでやってみましょう。真ん中の「ライト・アカウントを今すぐ登録」をクリックすると一番上の画面になるので、ユーザーIDを入力します。

これまでにBluemixで使ったIDは登録できないので、他のEメールIDを入力。すると名前等が入力可能になるので入力します。ちなみに以前のBluemixのIDは削除しなくても IBMクラウドで使い続けられますし、アプリのサーバーを起動していなければ課金されないはずです。

登録しようとすると、写真が出てきて車などが表示されている部分をクリックせよと表示されますので、表示されている部分を全てクリックします。

しばらくすると登録したEメールに確認メールが届くので、Confirm Accountボタンをクリックしたら登録完了。やはりクレジット・カード登録も不要で簡単ですね。

IBM Cloudのサーバーの立ち上げ方

IBM Cloudにログインすると、最初に表示されるのは上のようなダッシュボード。組織について注意書きが表示されるかもしれませんが、とりあえず上のメニューの「カタログ」をクリック。多彩なサービスが表示されますが、プラットフォーム下の「ボイラープレート(ひな形)」にある「Node.js Cloudant DB Web Starter」をクリックします。これでJavaScriptの実行サーバーとデータベースが立ち上がります。

以下のようにアプリの作成画面に入力してください。アプリ名は重複しない英字であればどんな名前でもOKなので、以下とは別の名前を入力します。これがクラウドのホスト名(URL)になります。「デプロイする地域」は無料のためには必ず「米国南部」を選択してください(以下の青枠)。

続きを読む IBM Cloud – 無料で クラウドにサーバーを立ち上げる方法

Open Source – IBMの オープンソース@IBM イベント

トップの写真は今週開催されたIBM社内のオープンソース・イベント、OpenSource@IBM の終了後に主要な人を集めて開催された、ラウンドテーブルです。Global IBMに新しいデジタル・ビジネスの事業部ができ、その中のOpen Source専用推進部隊が日本に来てくれました。

以下の図にあるように、IBMは実はLinux以来様々なオープンソースに力を入れて来ており、ハードウェアやソフトウェアの製品及びクラウドで活用してきています。

それはそれなりに知られているところではありますが、今回改めて詳しく話を聞いて、単にオープンソースを活用しているだけでなく、かなりオープンソースのコミュニティに貢献もしていることを認識しました。かなりの数のコミュニティでコミッター等としてIBMerが活躍しているのですね。

私の同期Zが、このブログでも使っているWordPressの主要メンバーであることもこのラウンドテーブルで知ってびっくりしましたが・・。

現在の IBM Cloud を中心とする全体のアーキテクチャーの中でも、以下のように様々なオープンソースが使われ中核となっています。

このようにIBMもGlobal全体で オープンソースに本格的に力を入れていますが、今後 クラウドを中心としてこれらのソフトウェアが重要になってくるのは間違い無いですね。

IBMは特に、これら オープンソースやDeveloperにフォーカスしたブログ・サイトである、”IBM Code” を立ち上げています。今どの オープンソースに力を入れているか良く分かりますので、以下も参考にしてください。

➡︎IBM Code (Open Source系IBM Blog)

 

IBM Cloudとは – Bluemixとの関係

IBMのクラウドは、IBM Cloudという名称に変わりました。これまでは Bluemixと呼ばれていましたが、IaaSである旧Softlayerの Bluemix Infrastructureと、PaaSである Bluemixの両方を合わせて11/1から IBM Cloudという名称に統一されました (ロゴのCloudは太字で、フォントはIBM独自のIBM Plex Sans)。

➡︎IBM Cloudのサイト

他のCloudを見ても特にIaaSとPaaSは別の名称になっていないので、IBMも合わせたという感じですね。元々IBMはSoftlayer社を買収したためIaaSとPaaSが分かれていましたが、中身的にも統合されるようです。IBM Cloudとは、Bluemixの後継であり、Bluemix時代に分かれていたIaaSとPaaSを統合したものと言って良いでしょう。

これまでも既にBluemixの画面からIaaSも選択できましたし、ユーザーIDなども統合されてきましたが、今後はさらに一体感を持って使えるようになりそうです。また「ビジネスに最適なクラウド」を売りにするようになりましたね。
ロゴも以下に変わっています。

続きを読む IBM Cloudとは – Bluemixとの関係