本章では、liberty そのものの機能や使い方ではな...
TRANSCRIPT
本章では、Liberty そのものの機能や使い方ではなく、スピードが重要視されるシステム開発において、Liberty プロファイルのシステムをどのように構築していくのかについてみていきます。
WAS Liberty 最新情報セミナー 2015 1
6. Docker と PureApplication で構築する Liberty
WAS Liberty 最新情報セミナー 2015 2
6. Docker と PureApplication で構築する Liberty
本章では、変化に対応できるシステム基盤を構築するという視点から、PureApplication とよばれるクラウド基盤構築ソリューションを題材にします。
PureApplication は、「パターン」と呼ばれるシステム構築自動化技術をベースにしており、Liberty プロファイルをはじめとした様々なミドルウェアの実行環境を迅速に構築することができるソリューションです。
この「パターン」の技術は、Liberty プロファイルのようなアプリケーション・サーバーの構築だけでなく、モバイル・ソリューションやアナリティクス・ソリューションの基盤を短時間で構築することができるようになっています。
WAS Liberty 最新情報セミナー 2015 3
6. Docker と PureApplication で構築する Liberty
まずは、PureApplication のようなクラウド基盤ソリューションがどうして必要なのかを考えていきます。
WAS Liberty 最新情報セミナー 2015 4
6. Docker と PureApplication で構築する Liberty
Liberty は、多様化するユーザーのニーズにいち早く対応し、継続的な改善を続けていくようなエンゲージメントの領域に対応するためのアプリケーション・サーバーとして登場してきました。
アプリケーションのライフサイクルを短くして、継続的な改善を続けていくためには、Infrastructure as Code や Immutable Infrastructure のような新しいシステム作りの考え方を取り入れることで、システム基盤全体にわたって柔軟性を確保することが必要となってきます。
従来のウォーターフォール型の開発にあわせたシステム構築のスピード感ではなく、ユーザーやビジネス部門からの要求に合わせて、短期間でのシステム構築が求められています。
WAS Liberty 最新情報セミナー 2015 5
6. Docker と PureApplication で構築する Liberty
前章までに、Liberty は軽量で簡単であるという特徴を活かして、これまでと比べて、アプリケーション開発やリリース、運用管理をスピードアップできることができることをみてきました。しかし、実際のシステム構築では、Liberty だけを構築するだけでは終わりません。
Liberty を動かすためには Java も必要ですし、ファイルシステムの構成も考えなければなりません。また、この Liberty をどんな OS のどんなバージョンで動かすか、または、OS のハードニングやユーザーの設定なども考えなければいけません。さらに、その OS を動かすための仮想マシンや、その仮想マシンに割り当てるリソース、そのリソースをどの単位でプーリングするかを決める必要もあります。
つまり、Liberty のシステム構築をスピードアップするためには、Liberty 単体だけではなく、その実行環境全体でスピードアップできるようにすることを考えていく必要があります。
WAS Liberty 最新情報セミナー 2015 6
6. Docker と PureApplication で構築する Liberty
ここで、ある業務システムとして、典型的なウェブ・アプリケーション・システムの構築を考えてみます。
ある一つのサービスを提供するために、複数のサーバーで複数のコンポーネントが稼動し、それらが連携した構成になることは一般的です。
したがって、Liberty が稼動するサーバーだけでなく、その周辺にあるコンポーネントやツールを含めた業務システム全体で、変化やスピードに対応できるようにしなければなりません。
WAS Liberty 最新情報セミナー 2015 7
6. Docker と PureApplication で構築する Liberty
しかし、多くのシステム開発プロジェクトではシステム構築には数週間から数ヶ月かかる場合もあります。
いくら Liberty 自身を簡単に構築できたとしても、業務システム全体の構築に数ヶ月もかかっていては、変化の激しいビジネス環境に対応することはできません。
システム構築が長期化する一番大きな理由は、システム構築に必要な多くの作業が手作業で行われていることです。しかも、単純な作業の繰返しが作業負荷を増やし、手作業によるミスが発生しやすいという問題もあります。また、それぞれのシステムの構築にはそのミドルウェアのスキルを持った担当者が必要であり、要員の調整に時間がかかったり、スキルレベルの違いによる作業品質のばらつきが発生したりします。こういった品質の問題を解決するために、膨大なドキュメントを作成する時間や工数も問題です。さらに、システムの変更のたびに、これらのドキュメントを確実にメンテナンスしていくことは非常に困難です。
これらの問題を解決するのが、システム構築の「自動化」です。自動化は、システム構築の品質を上げながら、システム構築作業を効率化し、Liberty を含めたシステム全体の構築をスピードアップすることができます。
WAS Liberty 最新情報セミナー 2015 8
6. Docker と PureApplication で構築する Liberty
システムのライフサイクルを考えた場合、システム構築はゴールではありません。かならず、システムの運用管理を行う必要があります。特にエンゲージメントの領域であるモバイルのシステムでは、ユーザー体験がそのブランド価値に大きな影響を与えるといわれています。
つまり、従来からのサーバー単位での稼動状況のモニタリングをするような運用管理ではなく、業務システム視点、あるいは、ユーザーの視点に立って、トランザクション変動や障害に対応できる仕組みが重要となってきます。しかも、そういった運用管理の仕組みを短時間で効率的に実現することも求められています。
WAS Liberty 最新情報セミナー 2015 9
6. Docker と PureApplication で構築する Liberty
システムの構築の自動化やシステムの運用管理の効率化を実現するのが PureApplication です。PureApplication は、あらかじめ確保されたリソース・プールから必要なリソースを割り当てながら、業務システム全体の構築を自動化します。
また、システム構築の自動化を実現しているのが、「パターン・デプロイメント」技術です。PureApplicationには、デプロイ後の仮想システムを管理するために必要な一連の運用管理機能も備えており、稼動状況のモニタリングし、その状況に応じた自律的な運用を行うこともできるようになっています。
WAS Liberty 最新情報セミナー 2015 10
6. Docker と PureApplication で構築する Liberty
WAS Liberty 最新情報セミナー 2015 11
6. Docker と PureApplication で構築する Liberty
「パターン・デプロイメント」とは、システム構築を自動化するためのエンジンです。業務システム全体を構築するために必要となる多くの作業や手順をまとめて一つにパッケージングしたものがパターンです。
パターンを使った自動化は、高品質で迅速なシステム構築を可能にするだけでなく、システムの再現性という特徴をもたらします。一度パターンを作成してしまえば、そのパターンを使って、いつでも好きなときに、必要になったタイミングで短時間でのシステム構築が可能ですので、テスト環境の断面数を短時間で増やしたり、テスト環境と全くパラメータセットの本番環境を準備することも容易です。
WAS Liberty 最新情報セミナー 2015 12
6. Docker と PureApplication で構築する Liberty
ここで、もうすこし具体的な「パターン」の中をみてみます。
図のように、OS を含んだ仮想マシンの上に、ソフトウェア・コンポーネントを配置します。このソフトウェア・コンポーネントは、WAS や DB2 をはじめとしたミドルウェアです。パラメータ設定やテーブルの作成などの作業手順はスクリプト・パッケージとして部品化しておいたものを利用します。アプリケーション・サーバーからデータベース・サーバーへ接続するための、データソースの定義も同様です。
Liberty は、ソフトウェア・コンポーネントとして、Liberty Core, Liberty Profile Server, Liberty Collective の Controller や Member などを利用可能です。
WAS Liberty 最新情報セミナー 2015 13
6. Docker と PureApplication で構築する Liberty
また、パターン・テンプレートとして、典型的なパターンのサンプルが提供されています。実際には、これらを参考にして、必要最低限のカスタマイズを行ってパターンを作成していくことになります。
WAS Liberty 最新情報セミナー 2015 14
6. Docker と PureApplication で構築する Liberty
こちらは、Liberty のシンプル・クラスターの構成をパターンで作成したものです。
Liberty のサーバーと DB2 のサーバーがあります。PureApplication のオートスケーリングの機能を使って、クラスタリングの構成を作ることができます。また、ロードバランサーの定義をパターンの中に入れることも可能です。
このパターンを使ってデプロイ・ボタンをリックすれば、早ければ数分で Liberty の構成が完成します。また、このパターンは何度でも再利用可能ですので、テスト環境のデプロイにも、似たような別システムへの横展開も可能です。
WAS Liberty 最新情報セミナー 2015 15
6. Docker と PureApplication で構築する Liberty
WAS Liberty 最新情報セミナー 2015 16
6. Docker と PureApplication で構築する Liberty
パターンを使った自動化によって、業務システム全体にわたってスピードアップすることが可能です。しかし、PureApplication のパターンについて、いくつかの疑問が浮かび上がってくるのではないでしょうか?
パターンは、Liberty や DB2 のような IBM のミドルウェアにしか対応していなのではないかと感じていないでしょうか?
また、パターンの開発は実は大変で難しいのではないのかということもあります。
それから、PureApplication がないと全く自動化ができないのかということです。
WAS Liberty 最新情報セミナー 2015 17
6. Docker と PureApplication で構築する Liberty
IBM のパターンには、いくつかの特徴があります。
もちろん、IBM の主要なミドルウェアはパターンに対応しています。しかし、対応しているのは IBM のミドルウェアだけではありません。200 以上の ISV ソフトウェアがパターンに対応しています。
さらに、パターンは、Chef や Docker といったオープンなテクノロジーにも対応しているため、パターンのなかに、オープン・ソース・ソフトウェアを組み込むことも可能です。Chef のレシピや Docker イメージなど、どちらのコミュニティーにも数多くの資産があり、これらを活用することができ、様々なミドルウェアの稼動環境を自動構築することができるようになっています。
WAS Liberty 最新情報セミナー 2015 18
6. Docker と PureApplication で構築する Liberty
ここでは、PureApplication の Docker サポートについてみていきます。
Docker は、コンテナ型の仮想化を提供するものであり、従来の VM 型仮想化と比較して、コンパクトで軽量であるという特徴があります。また、いちど作成した Docker のイメージは、どの Docker 環境にも持っていって動かすことができます。パターンの考え方と非常に近いものがあります。
PureApplication では、Docker コンテナを、一つのソフトウェア・コンポーネントとして扱います。これによって、Docker コマンドを意識せずに、Docker 環境を簡単に構築することが可能です。
パターンと Docker を組みあせることによってもたらされる効果は主に三つあります。一つ目は、PureApplication で Docker の持つ豊富な資産を活用して、オープン・ソース・ソフトウェアの環境を組み込むことができることです。二つ目は、Docker 自身では提供されていない運用機能をPureApplication の運用管理機能で補完できることです。三つ目は、Docker 環境と VM 環境の両方を含むようなシステムのポータビリティーを実現できることです。
WAS Liberty 最新情報セミナー 2015 19
6. Docker と PureApplication で構築する Liberty
PureApplication における Docker 環境の全体像です。
Docker Hub から取得した Docker イメージは、プライベート・レジストリに保管しておきます。プライベート・レジストリの環境を作るためのパターンが提供されているため、これを遣って簡単にプライベート・レジストリを作成することも可能です。
パターンのなかに、Docker コンテナを組み込んでおけば、指定した Docker イメージを自動的にプライベート・レジストリから取得して、コンテナが作成されます。また、作成されたコンテナは、自動的にPureApplication のモニタリングの対象となり、Docker コンテナのリソースの使用状況を見ることができるようになります。
WAS Liberty 最新情報セミナー 2015 20
6. Docker と PureApplication で構築する Liberty
WAS Liberty 最新情報セミナー 2015 21
6. Docker と PureApplication で構築する Liberty
今回のデモでは、Docker 上の Liberty で動いている ToDo List を管理するアプリケーションと、通常のVM 上で稼動しているデータベースを題材にして、手元にある開発環境と同じ環境を PureApplication上に再現することを行います。本番環境で使うデータベースは、開発用とは異なる本番専用のデータベースとします。
まずは、事前準備として、Docker イメージを作成しておきます。この Docker イメージは、本番環境のデプロイ時に自動的にデータベースに接続できるようにしておきます。
今回のデモは、この事前準備が終わっている状態で、PureApplication 上での操作の部分をごらんいただきます。Docker イメージさえあれば、あとは、パターンへの組み込み、パターンのデプロイ、デプロイ後のモニタリングです。
WAS Liberty 最新情報セミナー 2015 22
6. Docker と PureApplication で構築する Liberty
事前準備は、Docker イメージの作成です。
まずは、Docker Hub から Liberty のオフィシャル・イメージを取得します。次に、このイメージをDockerfile を使ってカスタマイズします。主なカスタマイズのポイントは、server.xml へのデータソース定義の組み込みです。このときに、データベース・サーバーのホスト名などを、環境変数から取得できるようにしておきます。docker build コマンドで作成したイメージを、docker push コマンドでプライベート・レジストリに登録します。
ここまでが、事前準備です。それでは、パターンの作成とデプロイ、コンテナのモニタリングの様子をご覧ください。
WAS Liberty 最新情報セミナー 2015 23
6. Docker と PureApplication で構築する Liberty
server.xml のカスタマイズでは、データソースの定義を追加します。このとき、データベースへの接続情報は、環境変数化し外部から都度指定可能な状態にしておきます。Dockerfile では、アプリケーションの追加、カスタマイズされた server.xml ファイルの追加、環境変数のデフォルト値の設定等を行います。
開発環境でこの Docker イメージを利用する場合には、docker run コマンドの実行時に環境変数を指定することで、接続するデータベースを変更することが可能です。
パターンを使った本番環境の構築を行う場合には、パターン内で構築した本番用のデータベースを利用できるように、パターン上の Docker コンテナの環境変数設定に、データベースの接続情報の参照情報を定義しておきます。これによって、デプロイ時にデータベースへの接続情報が動的に設定されます。
WAS Liberty 最新情報セミナー 2015 24
6. Docker と PureApplication で構築する Liberty
WAS Liberty 最新情報セミナー 2015 25
6. Docker と PureApplication で構築する Liberty
デモでご覧いただいたように、Docker の環境は簡単にパターンに組み込むことができ、Docker の環境だけにおさまらず、VM の環境を含めてパターン化が可能です。
Liberty, Docker, パターンのそれぞれがシステム構築のスピードアップを実現することをサポートしています。システム構築をスピードアップし、ユーザーの声を迅速に反映できるようにするためには、 Liberty だけでなく、稼働環境やシステム全体を含めた自動化を実現したり、イミュータブル・インフラストラクチャーのような新しい考え方を簡単に実現できるようにしていくことが重要です。
WAS Liberty 最新情報セミナー 2015 26
6. Docker と PureApplication で構築する Liberty
WAS Liberty 最新情報セミナー 2015 27
6. Docker と PureApplication で構築する Liberty