特集
» 2019年01月21日 05時00分 公開

キャッチアップが大切:「Kubernetesで運用する」その前に Kubernetesを本番環境で利用する際のポイント (3/3)

[石川俊明,@IT]
前のページへ 1|2|3       

今後のJavaはますますDockerやKubernetesを意識した開発が進む

 寺田氏は、DockerやKubernetesで構築するアプリケーションを開発するためのJava活用のポイントにも言及。「現時点で世界的に最も利用されているJavaのバージョンは『Java 8』だ」と説明し、Java 9、Java 10以降でのDockerやKubernetesに関係する2つの機能改善を取り上げる。

参考記事:Dockerとは

 まず、Java 9からは、カスタマイズしたJavaの実行環境であるJRE(Java Runtime Environment)が作成できるようになった点を説明する。

 Java 8以前は、Oracleが用意したJDK(Java Development Kit)やJREと、コンテナ化したいWebアプリケーションをまとめ、コンテナの元となるDockerイメージを作成する。この場合、利用しないモジュールを含んだJDK、JREでDockerイメージを作成するため、容量が大きくなるという問題があった。Java 9からは「jlink」というコマンドを利用することで、利用者に必要なモジュールだけをまとめたJREを用いて、より小さなDockerイメージを作成できる。寺田氏は「今後、DockerやKubernetes上でJavaアプリケーションを動作させる場合、重要なコマンドになるだろう」と述べる。

「jlink」コマンド 「jlink」コマンド

 次に、Java 10からは、コンテナに割り当てられたCPUやメモリの設定情報を取得できるようになった点を説明する。

 Java 9以前は、DockerでJavaを利用する際、コンテナに割り当てられたCPUやメモリの設定をJVM(Java仮想マシン)が認識できなかった。そのため、コンテナ側で1コアに制限するように設定していても、ホストマシンの構成、設定を基にしてアプリケーションが実行された。結果、コンテナ側で設定した制限を超えてアプリケーションがリソースを消費し、Out of Memoryなどのエラーが発生するなどの問題が起きていた。Java 10からはJVMのオプションを利用することで、コンテナに割り当てられたCPUやメモリの設定情報を取得できるようになり、問題が解決されている。

Java 10以降におけるコンテナ対応 Java 10以降におけるコンテナ対応

 寺田氏は、Javaの機能改善が進んでいることを説明し、コンテナ仮想化技術、Kubernetes、Javaについてまとめ、講演を締めくくった。

 「グローバルではKubernetesの活用が進んでいる。Kubernetesを利用しない選択をとっても、どんな技術なのか、理解しておく必要がある。また、プログラミング言語側でも、コンテナ化を意識した機能の改善が行われている。最新技術に触れる際にはさまざまなトラブルにあうが、それを乗り越えてよりよい製品やサービス、社会を作っていくためにも、技術へのキャッチアップを欠かさないでほしい」

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。