Oracle Code One 2019に参加してきました

ブログに書くの忘れてましたが、去年に引き続き今年もOracle Code One/Oracle Open Worldに参加してきました。

f:id:pascal256:20191001135557p:plain

すでにキーノートとかの詳細は素晴らしいレポート出てるのでそちらをみてください。

あと、去年とは違いありがたいことに今年は採択されたので発表することができました!

Performance Monitoring with Java Flight Recorder on OpenJDK [DEV2406]

話したいところはある程度気持ちを乗せてちゃんと話せたかなと思う反面、質疑応答はもう少しスムーズに出来たらとも思ったのでやはり英語の練習をもっとしないとですね。

で、ここからはかなり主観というか個人的な想像を入れた気になるトピックのまとめです。

JDKの新機能と進捗

ここに関しては良い意味で新しい情報は無かったです。OpenJDKがOSSとして運用されJSRやJEPでオープンに仕様が管理されているので、Oracle隠し球で持ってた新機能の発表とかは無かったです。

カンファレンスに行って目新しい情報が無いというのもちょっと寂しいですが、AppleオープンソースのはずのSwiftでそれをやらかして炎上しましたし、OSSとしては健全なのでこのほうが良いですね。

もちろん、各機能のJEPの現状や詳細機能の説明はとても参考になりますし、クォータリリースなので1年間を振り返ったサマリーは役に立ちます。

GraalVM

反面、ロードマップを含めて色々発表があり注目の的だったのがGraalVMです。

GraalVM自体は去年も発表ありましたし、結構前から存在していますが1.0になったということもあって今年はかなりアピールしていました。

native-image(AOT)を中心にコミュニティからの発表も多かったですが「OpenJDKと互換性を保ったまま高速なJVM(JIT)」としてOracleがかなり強く推してたので、おそらくGraalVM EEを結構推していきそうな感じです。OCIなら無料というのも売りにできるでしょうし。

ちなみに価格表を見るとOracle Java SE($25/processor/month)よりGraalVM EE($18/processor/month)のが安いので、OracleJDK使うならGraalVM使えよ、というオーラが出まくっていますw

あと、ロードマップ的には11月にはちゃんとOpenJDK11に対応するので、少なくともLTS版には随時追従していく形になるのだと思われます。 思ったよりOpenJDK11対応が早くて安心。

AOTやマルチ言語対応もかなり進んでてLLVM組み込みはJNI代用として面白そう。あと、Rubyもほぼレディな状態になっていて後はバージョンを追いつかせるだけ、とのことなのでここも個人的にはかなり気になります。爆速だし、JFR使えるかもだし。

なおAOTとJITは現時点では以下のような性能のトレードオフがあるけど、将来的には全部AOTで上回りたいという野望があるそうですw f:id:pascal256:20191001140618p:plain

Jakarata EEとEclipse MicroProfile

大変悲しいことですが今回のタイミングでJakarata EEにMicroProfileは統合されませんでした。

名前空間の差分とかの話もあるのですが、そもそもマイクロサービスの早い進化に対応させたいMicroProfileと標準化を主眼としてるJakarata EEではライフサイクルが異なるという問題も大きいようです。

個人的にはLTS版的な感じて定期的にJakarataEEにMPの仕様が取り込まれれば良いと思うのですが、今のままだとSpring的なポジションになる可能性もあってちょっと心配。 たぶんJakarataEEで行われるであろう名前空間の変更と合わせてMPの取り込みも来年か再来年くらいにされるんでは? 的な雰囲気なので当面はMPが実質的な仕様を牽引してく形になりそうなので、こちらを追う感じですね。

MPに関してはOracleWeblogicではなくHelidonで対応していくとJakarataEEのセッション中に言ってましたし、IBM RedhatのQuarkusと合わせてエンタープライズのサポートも問題なさそうです。

MPとしてはやはり話題の中心はnative-image + QuarkusでWebSphere LibertyやPayara Microはあまりトピックにはなってなかった印象。もちろん、ユーザ事例として出てくるときはそれら既存の奴を使ってたでしょうが、あまりその手のセッションは参加しなかったのでちょっとバイアスあり。

ただ、native-imageとの連携もあるので既存のアプリケーションコンテナとしての実装ではなく、Helidon/QuarkusのようなMP向けライブラリとしての開発が主流になってく気は改めてしました。

ExadataとPersistence Memory

以下の記事でも書いたのですが、Exadataについに不揮発性メモリが乗ってきました。

koduki.hatenablog.com

Intelの3D XPointが発表されてここまでくるのに長かったなぁ。まあ、今回はインメモリDBに使えるというよりは超高速なストレージとしての利用になりますが、こうした事例が増えてDBがアーキテクチャ的に進化したり、HPEのThe Machineのような近未来的なアーキテクチャが実際に出てくるようになると興味深いですよね。

これで量産化されて自宅マシンでも使えるようにならないかなー。まあ、Itaniumが自宅で使える価格/流通ではなかったので、期待しすぎると悲しくなるかもですが><

f:id:pascal256:20191001151956p:plain

ref: Introducing Exadata X8M: In-Memory Performance with All the Benefits of Shared Storage for both OLTP and Analytics | Oracle Exadata Database Machine Blog

お得意のInfiniBandを捨てて100GbE + RoCE (RDMA over Converged Ethernet)を採用しています。40Gbpsという帯域から100Gbpsに上げつつ、RDMAをRoCEで処理することでレイテンシも確保しています。

「最速のコモディティサーバ」として設計されるExadataとしてパフォーマンスを上げつつフィットさせてきた感じですね。

今回のバージョンアップで帯域的/レイテンシー的なボトルネックにさらに改善ができたと思うので、やはり「僕の考えた最強のDBサーバ」としてのExadataは面白いですね。スペック厨的にワクワクするw

Oracle Cloudの戦略

さて、最後はOCIの話です。ここ最近Oraclegが力を入れてる気がするけどちょっとパッとしない、後発だからものは良さそうだけどなぁってポジションだったOCIですが今回は結構戦略を明確にしてきたと思います。

毎度のごとくAWSをディスりつつOracle DBをageてましたが、やはりOracleはデータベースの会社です。AzureにはWindowsやOffice365/ADとの親和性、GCPにはBigQueryとAIというキラーコンテンツがあるようにOCIのキラーコンテンツはDBだということを明確に出してきています。

なので、k8sやその他マネージドサービスなど他者との差分は追いつかせるけど、推しはやはりDB。単にRDBというだけじゃなくてAWSに比べて単一のアーキテクチャでDWHもトランザクションもグラフDBもドキュメントDBもやるよ、という点を強く出してました。

むしろ、Microsoftとの提携でイントラ系も基幹/業務系もエンプラ系は取り込みたいって感じですね。Web系に関してはスモールスタートができる料金体系になるかが鍵かなぁ。

特にShared環境Autonomous DatabaseはAWS Aurora Serverlessと同様に利用した分だけ課金するモデルのようなのでコストしだいですが最良のサーバレスRDBになり得るんじゃ無いかと。コストシミュレータで計算しようとするとバグってて常にゼロ円になる(そういうところだぞ、Oracle!)のですが、購入しようとすると最低1000ドルって書いてあるので多分そういう価格感ですね。ちょっと個人だと厳しそうかなぁ。

バックエンドが何しろExadataなので前述の通りのインフラスペックは言うに及ばずOracle Enterprise Editionをベースにしてるので暗号化やパラレルクエリやパーティションなどなど盛りだくさんでサポートしてるはず。この多機能性はMySQLPostgreSQLベースでは実現できないところなので、どこまで使えるかは触ってみないとですが、私とても気になります!

そして、開発者フレンドリーなAlways Free!

www.oracle.com

検証目的という形ではありますが、個人でも企業でも2データベース、 1 CPU、 20 GBストレージが利用できます。無料で! とりあえず私も作ってみましたが、数分ポチポチすれば作れました。

今後、本格運用する前のシステムなら個人でも取りあえずOCIでAutonomous DBで作るってのはありかもしれないです。 当然、WordpressとかOracle DBに現状対応してないのですが今後そういうOSSも対応してくるかもですね。その布石なのか先日ついにOracle JDBCMaven リポジトリに登録されました!

mvnrepository.com

個人向けにはちょっぴり高そうな匂いがしますが、企業ユースだと十分良い選択肢かもですね。低スペックで良いので最低料金を下げるか、無料枠の規定に個人ユースも可とか明記してくれるとさらに最高ですがw

まとめ

キーノートがちょっとジェネリックすぎたり、ランチが微妙になってたりと少し肩透かし感もあったOCO2019ですが、発表できたしそれなりにたくさんの情報もキャッチできたと思うので良かったです。 来年も行けると良いな。

それでは、Happy Hacking!