コンテナ・クラウドとJavaScriptライブラリで実現する“クラウド・ネイティブ”なアプリケーション開発

Oracle Java & Developers編集部
2016-09-13 15:00:00
  • このエントリーをはてなブックマークに追加

「クラウド時代には、それにふさわしい“クラウド・ネイティブ”なアプリケーション開発/実行環境が必要だ」──こうした声に応え、オラクルはクラウド上でのアプリケーション開発に最適化されたサービス/ツール群の提供を開始している。

これからの開発者は“クラウド・ネイティブ”で新たな価値を創出する


日本オラクル PaaS事業推進室の新井庸介氏

 パブリック・クラウドが企業のIT環境の1つとして普及した今日、それに最適化されたアプリケーション開発/実行環境を求める声が強まっている。オラクルは、JavaやJavaScriptをはじめ、多様な開発言語に対応したクラウド・サービスや多機能なJavaScriptライブラリなど、クラウド上での企業アプリケーション開発をサポートするさまざまなサービス/ツールを提供している。日本オラクル PaaS事業推進室の新井庸介氏によるデモ・アプリケーションの紹介を通して、それらのサービス/ツールの特徴を見ていこう。

※本記事は、日本オラクルが2016年5月に開催した「Java Day Tokyo 2016」における新井庸介氏のセッション「コンテナクラウドとJava Flight Recorderで始めるアジャイル開発」の内容を基に構成しています。

 日頃、企業のアプリケーション開発者と接する機会の多い新井氏は、昨今のビジネスを支えるアプリケーション基盤には、大きく2つの領域があると論じる。1つは従来どおり、既存のビジネスを支えるエンタープライズ・システムの領域だ。この領域のシステムは、既存のビジネスを根底から支える存在であり、不具合や障害が起こらないよう、時間をかけてテストしたうえで慎重にリリースされる。そのため、開発サイクルも数年にわたることが少なくない。

 一方で、近年はそのような長い開発サイクルでは対応できない領域が生まれている。市場の変化にいち早く適応し、新たなイノベーションが次々に生み出されるタイプのビジネス領域だ。そのような領域では、柔軟性に優れたクラウド・ネイティブなシステム基盤が求められていると新井氏は話す。

 「クラウド・ネイティブな領域は、多くの場合“新たなことに取り組むためのIT活用”と位置付けられます。この領域のシステムでは、市場の変化に追随していくために頻繁な更新が必要となり、できるだけ早くリリースして何度も作り変えていくアジャイルな開発手法が最適だと言えます」(新井氏)

 また、この領域のシステムには、従来のモノリシック(一枚岩型)なアーキテクチャは適さないことが多い。モノリシックなアーキテクチャでは、アプリケーション内の各機能が密結合となり、部分的な改修や頻繁な更新が困難だからだ。そこで鍵となるアーキテクチャが「マイクロサービス」である。

 「マイクロサービスでは、アプリケーションを小さなサービスの集合体として開発します。それぞれのサービスの独立性を重視し、他のサービスとはREST APIなどを介して“疎”に結合します。アプリケーションをマイクロサービスとして作ることにより、フロントエンドのユーザー・インタフェース(UI)とバックエンドのビジネス・ロジック、つまり変化の激しい部分と安定性を重視する部分、あるいは新規に追加する部分とレガシーな部分といった違いに応じて、機能ごとに個別にデプロイ/運用できるようになるのです」(新井氏)

マイクロサービスのコンセプト マイクロサービスのコンセプト
※クリックすると拡大画像が見られます

 以降では、この「フロントエンドとバックエンドを分離したクラウド・ネイティブなアプリケーションの開発」をテーマに、それを支援するオラクルのソリューションについて説明していく。具体的には、下図のような構成のデモ・アプリケーション(Webサービス)を例にとり、「Oracle Application Container Cloud Service」、「Java Flight Recorder」、「Oracle JET(Oracle JavaScript Extension Toolkit)」といったサービス/ツール群を紹介する。

デモ・アプリケーションの構成 デモ・アプリケーションの構成
※クリックすると拡大画像が見られます

Dockerベースの軽量アプリケーション・プラットホーム「Oracle Application Container Cloud Service」

 まずサーバ・サイドのアプリケーションはOracle Application ontainer Cloud Serviceによって開発する。これはDockerをベースにしたパブリック・クラウド型の軽量アプリケーション向けプラットフォームであり、次のような特徴を備える。

  • Java、Node.js、Ruby、Python、PHPなど多様な開発技術に対応(Ruby、Python、PHPには近く対応予定)
  • ロードバランサーを内蔵しており、無停止での拡張や縮退が可能
  • Javaランタイム向けに、Oracle Java SE付属のモニタリング・ツール、Java Flight Recorderを標準機能として提供
  • Oracle Java SEのアップデートを長期間提供

 今回、題材としているようなWebサービスを作る場合、通常ならばアプリケーション・サーバを用意し、開発したアプリケーションをその上にデプロイするだろう。一方、Oracle Application Container Cloud Serviceを使う場合は、アプリケーションのJARファイル内に組み込みのアプリケーション・サーバを内包する。アプリケーションを実行環境ごとパッケージングしてしまうわけだ。このJARファイルを設定ファイルとともにZIP形式にアーカイブし、Dockerコンテナ上にデプロイして実行するのである。

 Oracle Application Container Cloud Serviceは、ベースとなるDockerコンテナのイメージを提供する「リポジトリ」や、アプリケーション・アーカイブとDockerイメージをまとめたアプリケーション・イメージを構築するための「ビルダー」、構築したアプリケーション・イメージをホストするための「プライベート・テナント」などを内部の仕組みとして備える。

 Webアプリケーションのユーザーは、Dockerを使っていることや、どこでホストされているかといったことを意識せずに利用できる。また、インスタンスの数やメモリ・サイズを即座に変更できるため、ユーザーのアクセス状況が日々大きく変化するようなスケーラビリティの求められるサービスの運用にも適している。

Oracle Application Container Cloud Serviceのアーキテクチャ Oracle Application Container Cloud Serviceのアーキテクチャ
※クリックすると拡大画像が見られます

 新井氏は、こうしたOracle Application Container Cloud Serviceの特性を生かすためのポイントとして、次の2つの留意点を挙げる。

  • アプリケーションはステートレスに作る(状態を保持しない)
  • 外部サービスへの依存関係を分離する

 マイクロサービスでは、環境や状態への依存度を減らして個々のサービスの独立性を保つことが重要となる。この2つのポイントを押さえてアプリケーションを作れば、拡張性と可搬性をより確実なものにできるのだ。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]