Oracle Code Tokyo 2019 に行ってきた

2019年5月17日(金)10:00〜18:00、シェラトン都ホテル東京で開催された「Oracle Code Tokyo 2019」に行ってきました。参加者は200名くらい?

公式サイト https://www.oracle.co.jp/events/code/2019/

参加したセッション

Keynote-1 Javaの未来

Panama、Valhalla、Loom、Amberの紹介。リリースサイクルが早くなったJavaにおいて、一昨年からあまり状況は変わっていないように感じたのは、気のせいでしょうかね・・・。結構難産なのかもしれませんね。

Keynote-2 トップエンジニア対談

パネリストは、株式会社ティアフォー チームエンジニアのGeoffrey Biggs 氏と株式会社ソラコム 執行役員の片山 暁雄 氏、そして、進行役として、ウルシステムズ株式会社 代表取締役社長の漆原 茂 氏。

ティアフォーは、自動運転に関するソフトウェアをオープンソース化している。ハードウェアについては、自社開発ではなくパートナー企業と開発している。ディープラーニングを活用して自動運転の精度を高めている。紹介映像では、自動運転のデモ映像が流れていましたが、直線の道であってもハンドルが小刻みに動くのが意外でした。有人でそういう運転されたら、車酔いしそうw

ソラコムは、IoT向けプラットフォームを提供。電話の交換機をクラウド化。IoT機器に使われるSIMカードにはJavaが入っている。10年前では実現できなかったことが、現在ではツールも充実し、クラウド環境も整ってきた。創業前後は、資金繰りで苦労したことを「ヒットポイントが減っていくように感じた」、という例えは起業家ならではの表現でした。

お二人とも、新しい技術に触れ続けることが大切とのこと。でも、片山さんの「JSは型が無いので肌に合わなかった」という話は、Javaのカンファレンスならではのお話でした。食わず嫌いでは、良し悪しが判断できないのはその通りですね。

B-2-1 Oracle ACEが語る MySQL 8

講演者は、ヤフー株式会社 サービスプラットフォーム本部 データベース部 MySQL 三谷 智史 氏

ヤフーでは、MySQL 8の検証中とのこと。マイナーバージョンアップであっても、数多くの変更点がある。量にしてA4 30ページくらい。今回は、その中からいくつかご紹介。

降順インデックスは、MySQL5.7でもインデックスは作れたけど、結果としては無視されていた。これが、MySQL8からは、性能に反映される。240万件ほどのテーブルでのSELECT結果が2倍くらい早くなった。ソート順とインデックス順が一致していなくても効果は現れる。

ファンクションインデックスがサポートされた。JSON型のデータの一部に対しても、インデックスが追加できる。でもインデックス張りすぎ注意。不要なインデックスは削除したほうがいい。MySQL8からはInvisible Indexがサポートされた。これは、インデックスが存在しないものとして扱える。注意点としては、ヒント句で明示的にInvisibleなインデックスを指定しているとそのSQL文はエラーとなる。

個人的に嬉しいのが、スロークエリログで落とせる情報が増えたこと。具体的には、クエリの開始・終了時間。これまでのログは、クエリが実行完了するまで待つ必要があった。

Group ReplicationとConsistency level、高可用性な構成において整合性・一貫性を担保する。障害検知・切り替わりの仕組みがビルドインされ、クラスタリングソフトが不要となった。単純にアクセスの向き先を変えるだけ。

クエリキャッシュは無くなりました。マルチコアにおいて、性能がスケールしないし、SQLが一字一句同一でなければキャッシュされないので、マッチするユースケースが限られる。キャッシュするなら、アプリサイドでキャッシュしたほうが、効果が高い。

B-3-2 Serverless時代におけるセキュリティ戦略

講演者は2名。株式会社アスタリスク・リサーチ 代表取締役 エグゼクティブ・リサーチャ 岡田 良太郎 氏、そして、SecureWorks Japan 株式会社 主席上級セキュリティアドバイザー 古川 勝也 氏。

Serverless時代が進むと、アプリケーションの単位が細かくなり、デリバリーまでの時間が短くなったが、障害やセキュリティインシデントが起きると、それなりに調査や対応に時間が掛かるようになったのでは、というお話。

しかし、軽快なおっさんトークに、会場が付いてこられないw

マイクロサービスの話から、突如スターウォーズの話にwデス・スターはモノリシックだよね、設計があかん。内部に一発ミサイル打ち込めば木っ端微塵やん。R2D2は、設計書持っとる。あれは、コンテナやー。そんなら、集まったらKubeになるんかいなww

日本はセキュリティ攻撃を受けて発見されるまで遅い。ISMS情報セキュリティマネジメントシステム)認定を受けているのに。あんなん、仲良しクラブやから、プログラムも書かんと、どうやってセキュアなコードってわかるんや?っていうたら、会報誌が送られてこんようになったw

Oracle Code!(ピー音の替わりw)

最後に、HARDENING PROJECTのご紹介。

wasforum.jp

脆弱性のある架空のショッピングサイト運営を任されて、そこに外部から攻撃しますんで、8時間耐えてくださいね(ニッコリ)、というセキュリティ競技会。情報が漏洩したチームは謝罪会見もやって、記者役の人に詰められる様子は、ぞわぞわしました。

B-3-3 最適なOpenJDKディストリビューションの選び方

講演者は、日本GlassFishユーザー会(http://www.glassfish.jp/) 山田 貴裕 氏。

「OpenJDKソムリエ」や「JDK警察」としてネット界隈では有名な方。いくつか、Twitterまとめがありますので、そちらもご参照。

togetter.com

JavaもLTSモデルを採用し、機能リリースやセキュリティ対応が早くなった。v8までは、OpenJDKとOracleJDKとでは差があったが、バージョンが上がるにつれその差が無くなってきた。v11以降では、実質的に同一。

なので、環境にあったJDKを選べばいい。OpenJDK以外はインストーラーが付いている。OpenJDKに付いてはリリーススケジュールを把握する。最適なものは変化していく。

B-2-4 Why Oracle Database ~Oracle Database以外を検討して気づいたこと~

講演者は、富士通エフ・アイ・ピー株式会社 ソリューションサービスグループ 元上 弘治 氏。

Oracle 12.1.0.2からPostgreSQL 10.6に移行した話。異機種DB移行にあたって、Ora2pgというツールを活用した。

ora2pg.darold.net

日本語マニュアルがない、フリーソフトである(保証がない)。パラメータに何を設定したら良いかわからず、SQLが変更できない場合、元の構文が出力される。でも、スキーマ変換やデータ変換を手作業で行うよりも効率的だった。

そして、移行時に気が付いたこと。

除算演算子の違い。Oracleでは、1/3+1/3+1/3は1が返るが、Postgresでは、0が返る。こういったものはツールでは解消しないので、計算ロジックを修正するしかなかった。

他にも細々な相違があったが、OSSとしては個別パッチがサポートされることは少ない。

異機種DB移行で気をつけることとして、現行Oracleの場合、Oracleを使うことを推奨。ミッションクリティカルな領域において、OSSDBへの移行はリスクが高い。

  • 業務ロジックにDBの機能を使用している場合
  • データの正確性が求められる場合(←特にお金周り)
  • データの消失が絶対に許されない場合(←公共系とか)
  • 性能要件がシビアな場合

コストだけを理由に異機種DB移行しない。調査・改修コスト以外に保守費・運用費も考慮する。 技術力のあるサポートベンダーを選定する。OSSの場合は、ソースレベルで理解・修正できる人材が在籍しているか否かも考慮する。

B-3-5 Oracle ACEが語る!ここがヘンだよMySQL & ここがスゴイよMySQL

LT大会!皆さんの共通意見として「MySQL 8になって良くなった。でもメンテナンスバージョンアップで結構変わってくるけどね。」とのことw

さいごに

以上、初めてのOracle Code Tokyo参加でした。さすがに、MariaDBの話は出てこなかったなぁ。あと、Oracle Cloud関連のセッションに参加し忘れた。。

2019/05/21 追記

セッションのスライド・資料が公開されました!

https://www.oracle.co.jp/campaign/code/2019/

満員のセッションで後ろの方に座ると、全然スライドが見えなかったので、大変ありがたいです。