0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ODCにおける「ほどほどの」アーキテクチャ設計(2023/12/12 OutSystems User Groups Tokyo LT)

Posted at

2023/12/12に開かれたOutSystems User Groups TokyoのイベントOutSystems Connect: 年忘れLT大会!で行ったLTの内容にちょっと追記・補足したもの。

要旨

ODCは設計・実装をマイクロサービスベースで行うことを前提としている。

しかし、Martin FowlerのMicroservicePremiumや、いくつかのマイクロサービス適用経験談で示されているように、マイクロサービス実現には追加的なコストがかかる。システムの複雑さがさほど高くない場合、追加的なコスト > メリットとなるケースがあるとされている。

個人的な経験から、システムの複雑さが中程度(OutSystemsで構築するアプリケーションはほとんどこの範囲と思われる)なら、マイクロサービスを避ける方法も取り得るという感触を持っている。

MicroservicePremium

martinFowler.comのMicroservicePremiumに示されている。

マイクロサービス実現には追加的なコストがかかり、システムの複雑さがさほど高くない場合、追加的なコスト > メリットとなるケースがある。そのため、システム構築時には、モノリシックなシステムとして構築することを基本とし、どうしても必要な時にのみマイクロサービス化を検討すべきというもの。

つまり、モノリシックなシステムとして構築してしまうと、小さな変更でも、システム全体が大きく複雑すぎるため、開発・リリースに困難を感じるような場合。

補足

とはいえ、マイクロサービス化にあたって必要なもののうちいくつかは、OutSystemsがODCの機能として担当してくれている。
よって、マイクロサービス化に必要なコストは、OutSystemsを使わなかった場合よりは低いことが期待できる(議論の余地はありそうだが、そのようにうまく設計・実装してくれると思っていないのであれば、OutSystemsを導入していないはず)。

難しいのは、ODCを利用する前提でどの程度、マイクロサービス化に追加のコストが発生するかが不明なこと。

システム規模によるアーキテクチャ設計方針検討

システムの複雑さによって以下の三段階に分け、アーキテクチャ設計をどうするかを考えてみる。

  1. 複雑さ:低い(開発対象システムそれぞれが、1つのAppに押し込められる程度)
  2. 複雑さ:中程度(1.にも3.にも分類できない程度)
  3. 複雑さ:高い(モノリシックなシステムとして構築すると、開発・保守・リリースの生産性が低下し、マイクロサービス化が明らかなメリットをもたらす場合。あるいは将来そうなることが想定できる場合)
複雑さ アーキテクチャ設計方針 備考・補足
1. 低い 真剣に検討する必要が無い 1つのAppに収まる程度なので、アーキテクチャ設計がそんなに影響を持たないと思われる
2. 中程度 ①O11のアーキテクチャ設計を微修正して踏襲
② マイクロサービス設計
現実的には、OutSystemsで作るアプリケーションはこの範囲に収まるのでは? ODCを触ってみた感じでは、現実的には①も十分可能と思われる
3. 高い マイクロサービス設計 マイクロサービス設計が明らかにメリットを持つので、OutSystemsの推奨に合わせるのがよさそう

⓵O11のアーキテクチャ設計を微修正して踏襲

ODCのアーキテクチャ設計の変更に備える(2023/10/18 UserGroup LT)で書いたような事項への考慮が必要。

具体的には、以下。特にトランザクションが分散してしまうのを避けるのが重要(実装が難しくなってしまうので)

  • Applicationは無くなったのでApplicationにまとめるステップはなし
  • Architecture Canvasであれば、業務ロジックはCore Businessレイヤーのモジュール、UIはEnd Userレイヤーのモジュールというように分割していたが、ODCではAppをまたがるActionの参照は通信ベースになる(=オーバーヘッドがある)ので、O11のモジュールよりはODCのAppは気持ち粒度が大きくなる
  • ODCの制約により、Appをまたがると別トランザクションになるため、ある一連の処理で更新するEntityは同じAppに分類されるように設計する

O11 -> ODC移行ドキュメントからのフィードバック

元々、ODCではマイクロサービス設計やDDDを推奨するような記述は多かった。

最近追加されたOutSystems 11アプリケーションをODCのApp/Libraryに移行するためのドキュメントでも、この点を補強するような記述があった。

このようにOutSystemsが公開する資料は、マイクロサービス設計やDDDを前提とするものが増えてきているので、マイクロサービス設計にしておければ、将来の変動に備えやすくなる(現実的にどの程度の追加コストがかかるのかが不明なので、気軽にできる選択ではないが)。

ドキュメントについては、読んだ感想を以下にまとめてある。参考までに。

O11からODCへの移行についてのドキュメントを読んで見る(2023/12/16時点)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?