Architecture - dennisholee/notes GitHub Wiki

Mapping Table: Enterprise Goals—Alignment Goals

Alignment Goals—Governance and Management Objectives

Decomposition

Functional Decomposition

  • Decomposes a system into its building blocks based on the functionality of the system.

Domain Decomposition

  • Decomposes a system into building blocks based on the business domains, such as sales, engineering, accounting, and shipping

Volatility Based Decomposition

  • Identifies areas of potential change and encap- sulates those into services or system building blocks

Advantages:

  • Encapsulates the use case. One use case will not affect another. No bugs due to someone working in another part of the system.
  • The design encapsulates change. (Absorbs changes in requirements easily).
  • Implementing variations of use cases / requirements are quick to do.
  • Each component can be isolated and tested.
  • Troubleshooting of performance issues are easy due to the components based design. Speed of delivery goes up as the system matures and more components are build that can be re-used.
  • Cloud cost can be managed as the only load baring components can be isolated and scaled.
  • Attempts to control the amount of traffic to and from the client.
  • As the development order of components and the dependencies are known upfront it can be used for accurate project planning and costing.
  • Results in a very stable system.

Disadvantages

  • The decomposition is not easy or quick.
  • Requires a skilled architect.
  • Takes longer to implement.
  • Development cost is high.
  • Requires developers to follow a implementation pattern.
  • Slow to deliver any features in the beginning.
  • Requires service contracts to be documented. Documentation will not only need to cover the inputs and outputs but also the internal behavior of the services.

Who should use volatility based decomposition?

Volatility based decomposition should be used for applications that:

  • Has requirements that change often.
  • Will be maintained for many years even decades.
  • Where the system is dependent on 3rd parties or sub systems.
  • The development time is open ended.
  • Requires a level of security between the front end and the back end.
  • Requires the ability to isolate use cases.

Src: http://www.waynecliffordbarker.co.za/2019/03/23/volatility-based-decomposition-for-microservices/

Technology Strategy Gaps

Things you need to do in the future to successfully implement your strategies.

  1. Develop a clear and unambiguous understanding of the current state
  2. Define the desired end state
  3. Conduct a Gap Analysis exercise
  4. Prioritize the findings from the Gap Analysis exercise into a series of gap closure strategies
  5. Discover the optimum sequence of actions (recognizing predecessor – successor relationships)
  6. Develop and Publish the Road Map

Src: https://pragmaticarchitect.wordpress.com/2013/06/11/how-to-build-a-roadmap-gap-analysis/

Useful Link