Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Red_Hat_Application_Foundationsから学ぶアーキテクチャー入門

Satoshi Seto
November 27, 2022

 Red_Hat_Application_Foundationsから学ぶアーキテクチャー入門

なんでもかんでも1台のサーバーに入れて巨大なシステムを構築していないでしょうか?
システムが巨大化するとレスポンスタイムの低下や、開発速度の低下等のいくつかの問題が発生するようになります。
Red Hatではアプリケーションを小さく作り複数のサーバーに分割してシステムを構築することを推奨しています。
そうすることで、不必要なレスポンスタイムの低下や開発速度の低下を防ぐことができるようになります。
しかしながら、サーバーを複数台に分割する場合は1台ですべてを作る場合に比べていくつかの注意点が必要になる場合があります。

Red Hat Application FoundationsはJava EEを実装するJBoss EAPやMicroProfileを実装するQuarkusやそのほかのミドルウェア、インテグレーション製品のどれを使っても良いというサブスクリプションになります。
このセッションではRed Hat Application Foundationsに含まれる製品やそのほかのOSSを使用して、どうやってアプリケーションを分割していくのかと、分割する上での注意点について説明します。
Red Hatの製品はすべてがOSSでベースとなるアップストリーム製品(≒github上等でOSSライセンスで公開されているリポジトリ)があります。
Red Hatのサポートが不要な場合はサブスクリプションを購入しなくても使用することができます。
ですので、Red Hatのサブスクリプションを購入したことがない方、購入する予定のない方でも聞くことができます。

すでに巨大なJava EEサーバーで構築されているシステムを抱えている方や、これからシステムを分割していきたい方、1台のサーバーでしか作ったことがない方の知識の助けになると思いますのでぜひご参加ください。

Satoshi Seto

November 27, 2022
Tweet

More Decks by Satoshi Seto

Other Decks in Technology

Transcript

  1. 4 ▸ 2023年前半にリリース ▸ 2022年中にベータ版リリース ▸ ベースになるのはWildFly 27 ※すべては予定であり予告なく変更になる可能性があります。 The

    road to JBoss EAP 8 https://developers.redhat.com/articles/2022/06/24/road-jboss-eap-8 https://rheb.hatenablog.com/entry/road-jboss-eap-8 (日本語翻訳) JBoss EAP 8 Coming Soon! (Jakarta EE 10対応)
  2. 6 ▸ MicroProfile 5.0(Jakarta EE 9API使用)から依存ライブラリのパッケージ名がjavaxから jakartaへ変更されていたため対応が保留されていた。 ▸ Jakarta EE

    10のリリースに伴い対応が行われている。 ▸ 次はMicroProfile 6(Jakarta EE 10ベース)対応のもの ▸ 詳しくは以下の記事を。 https://quarkus.io/blog/road-to-quarkus-3/ Quarkus Coming Soon! (MicroProfile 6対応)
  3. 11 ▸ モノリスからマイクロサービスへ ▸ Red Hat Application Foundationsとは ▸ アプリケーションの分割とトランザクション

    ▸ 多くのサーバーで整合性を担保していく ▸ アプリケーションをこれ以上大きくしないようにする ▸ 急なアクセス量の変化(オートスケーリング)に対応する ▸ アプリケーションの開発速度を加速する 目次
  4. 14 ▸ モノリスからマイクロサービスへ ▸ Red Hat Application Foundationsとは ▸ アプリケーションの分割とトランザクション

    ▸ 多くのサーバーで整合性を担保していく ▸ アプリケーションをこれ以上大きくしないようにする ▸ 急なアクセス量の変化(オートスケーリング)に対応する ▸ アプリケーションの開発速度を加速する 目次
  5. 16 https://www.redhat.com/en/resources/application-foundations-datasheet EAPとRed Hat Application Foundationsの関係 含まれないもの: • Fuse 6

    / AMQ 6 / Vert.X / PAM / DM • All Managed Application Services API管理 データ変換 サービスオーケストレーション イベントバス データストリーミング シングルサインオン Javaアプリケーションフレーム ワーク インメモリ分散データストア Migration Toolkit for Applications • AMQ Streams • AMQ Broker • Debezium Change Data Capture • Service Registry • Camel 3 (CEQ, CK, CSB) • Fuse 7 • 3scale API Management • Node.js • Red Hat JBoss EAP • Red Hat build of Quarkus • Spring Boot • Red Hat build of OpenJDK • Red Hat JBoss Web Server • Red Hat Data Grid • Red Hat Single Sign On(keyCloak) • Migration Toolkit for Applications
  6. 17 ▸ Application FoundationsにはJBoss EAPが含まれておりJakarta EEのユースケース に完全対応 ▸ Application Foundationsには多数の製品が含まれ、Jakarta

    EEでカバーできない領域を MicroProfileに準拠したQuarkusや他の特化したミドルウェアでカバー可能 ▸ JBoss EAPはJakarta EE仕様に準拠しておりポータビリティがあるのは当然だが、 それ以外のミドルウェアについても100%OSSなので、ロックインの心配はない Application Foundationsを選択する理由
  7. 18 ▸ モノリスからマイクロサービスへ ▸ Red Hat Application Foundationsとは ▸ アプリケーションの分割とトランザクション

    ▸ 多くのサーバーで整合性を担保していく ▸ アプリケーションをこれ以上大きくしないようにする ▸ 急なアクセス量の変化(オートスケーリング)に対応する ▸ アプリケーションの開発速度を加速する 目次
  8. AMQ Broker(JMS、ActiveMQ Artemis) イベント駆動型アーキテクチャ 22 ▸ フル機能のメッセージ指向ミドルウェアのブローカー ・ ピュアJavaで高性能のメッセージブローカー ・

    柔軟な永続化方式: 高性能なジャーナル or JDBC ・ 高可用性: シェアードSAN or シェアードナッシング レプリケー ション ・ 柔軟なクラスタリング ▸ 様々なキューイングのオプション、メッセージの永続化、管理 方式 ▸ 複数のプロトコルとクライアント言語をサポート ・ AMQP 1.0, MQTT, STOMP, OpenWire, HornetQ ・ Java JMS, C++, .NET, Python, Javascript, NodeJS Clients Source Artemis
  9. 29 ▸ モノリスからマイクロサービスへ ▸ Red Hat Application Foundationsとは ▸ アプリケーションの分割とトランザクション

    ▸ 多くのサーバーで整合性を担保していく ▸ アプリケーションをこれ以上大きくしないようにする ▸ 急なアクセス量の変化(オートスケーリング)に対応する ▸ アプリケーションの開発速度を加速する 目次
  10. 33 Apache Kafka • 2010年にLinkedInで開発され、2011年に オープンソース化されたストリーミング データのための分散システム • 長期間キューをためておくことを前提と したアーキテクチャ

    • 非常に高いスループットと低レイテンシ ーで大量データを処理 • 容易に水平スケール • クラスタリングにより高い耐障害性 • 大量のコンシューマも処理可能 • データはjsonでやり取りをする
  11. 39 ▸ モノリスからマイクロサービスへ ▸ Red Hat Application Foundationsとは ▸ アプリケーションの分割とトランザクション

    ▸ 多くのサーバーで整合性を担保していく ▸ アプリケーションをこれ以上大きくしないようにする ▸ 急なアクセス量の変化(オートスケーリング)に対応する ▸ アプリケーションの開発速度を加速する 目次
  12. Debeziumコネクタ 44 Source • General Availability ◦ MySQL ◦ Postgres

    ◦ MongoDB ◦ SQL Server ◦ DB2 (Linux only) ◦ Oracle (LogMinerを使用) Application Foundationsでサポートしているデータベース ※Upstream版では他のデータベースへのコネクタも提供されています。 https://debezium.io/releases/1.9/
  13. Using Change Data Capture for Stack Modernization: Demo Debeziumで全文検索を追加 既存システムを

    小売店の在庫や売上を 管理するための レガシーアプリケーション データの保持のために使用 データベース更新イベントを キャプチャして公開します • kafka トピックの管理 • メッセージの受信と保存 • コンシューマーがイベントの 読出しをできるようにする 製品データの更新分を、elasticsearch の インデックスに追加します データをインデックス化し、 全文検索の機能を強化します REST APIを通して 製品の検索を実施します 既存システムの検索機能を強化 リアルタイムで情報を集計し、常に最新の情報を検索することが可能に 新規で作った場所は旧アプリとは 別管理とすることができる。
  14. 48 ▸ モノリスからマイクロサービスへ ▸ Red Hat Application Foundationsとは ▸ アプリケーションの分割とトランザクション

    ▸ 多くのサーバーで整合性を担保していく ▸ アプリケーションをこれ以上大きくしないようにする ▸ 急なアクセス量の変化(オートスケーリング)に対応する ▸ アプリケーションの開発速度を加速する 目次
  15. 53 ▸ アプリケーションを小さく作る。 ▸ 読み込むものが少なければそれだけ早くなる。 ▸ アノテーションを使わない、読み込まない設定にする。 ・ 起動時にすべてのクラスを舐める必要が出てくるのでその分遅くなる。 ・

    もともとJavaは遅延クラスロードの機能を備えている。 ▸ 過剰なリソースの確保を起動時に行わない。 ・ DB接続コネクションプールとか。 Java EE(Jakarta EE)サーバーの起動を早くする
  16. 60 ▸ モノリスからマイクロサービスへ ▸ Red Hat Application Foundationsとは ▸ アプリケーションの分割とトランザクション

    ▸ 多くのサーバーで整合性を担保していく ▸ アプリケーションをこれ以上大きくしないようにする ▸ 急なアクセス量の変化(オートスケーリング)に対応する ▸ アプリケーションの開発速度を加速する 目次
  17. 66 テストの時間を減らす-静的解析 ▸ findbug、pmd等の静的解析ツールを使う。 ▸ 動かすまでもなくソースコードを見ればバグってるのがわかるよねというのを見つけてくれるツ ール。 ・ Stringを==で比較しているとか。 ・

    テスト工数を半分に削減できたプロジェクトもあり。 ▸ フレームワークの特性に合わせてプロジェクト内でよくある不具合を自分たちでルールとして追 加することも可能。 ▸ アプリケーションの移行時に静的解析をして非互換をチェックするツールがRed Hat Application Foundations に含まれるMigration Toolkit for Applications。
  18. 67 テストの時間を減らす-テストの自動化 ▸ JUnit等を使ってテストを自動化する。 ・ JBoss EAP(Java EE/Jakarta EEサーバー)に使えるJUnit用のサポートツールがArquillian (Red

    Hat製のOSS) 。 ・ QuarkusにはJUnit用のサポートツールが内蔵されている。 ▸ Red HatのOpenShiftはKubernetesにCI/CDツール(Tekton、Jenkins)のサポートが追加されてい る。 ▸ テストの自動化にかける工数はそこそこかかるので数回しか使わないものであれば作らないほう が良い。
  19. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Red Hat is the world’s leading

    provider of enterprise open source software solutions. Award- winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you 72