Uber's Michelangelo vs. Netflix's Metaflow

  Uber's Michelangelo vs. Netflix's Metaflow Michelangelo Pain point Without michelangelo, each team at uber that uses ML (that’s all of them - every interaction with the ride or eats app involves ML) would need to build their own data pipelines, feature stores, training clusters, model storage, etc.  It would take each team copious amounts of time to maintain and improve their systems, and common patterns/best practices would be hard to learn.  In addition, the highest priority use cases (business critical, e.g. rider/driver matching) would themselves need to ensure they have enough compute/storage/engineering resources to operate (outages, scale peaks, etc.), which would results in organizational complexity and constant prioritization battles between managers/directors/etc. Solution Michelangelo provides a single platform that makes the most common and most business critical ML use cases simple and intuitive for builders to use, while still allowing self-serve extensibi...

Architectural Characteristics - Transcending Requirements

Building a system means meeting a set of requirements dictated by the customer.  But the customer isn't always going to translate what they want into engineering terms.  Even if you say please, they might not even know how.  If they ask for an online ordering system, they probably won't specify that it needs to be available 24/7 and auditable for tax purposes.  Yet these aspects could mean the difference between project success and failure.  Those unsaid aspects are called anything from 'nonfunctional requirements' to 'Architectural Characteristics'.



In their book 'Fundamentals of Software Architecture', Ford and Richards define Architectural Characteristics to have 3 criteria:

  • Specifies a nondomain design consideration
Let's dive into these bullets to better understand them.

Aspects of Architectural Characteristics

Specifies a nondomain design consideration

If you're building an ordering system, then order numbers, customers, items and prices are part of the domain.  Reliability and auditability are not, yet they can be a critical part of the system design - that's what makes them architectural characteristics.

Influences some structural aspect of the design

Let's stick with our original example - reliability and auditability.  Reliability could mean having redundancy to ensure that failures have fallbacks and auditability can mean storing data for some number of years.  So these considerations can significantly change the structure of the system.

Is critical or important to application success

If the system goes down, our customer will lose their customer and they may not come back.  And if the system fails to store tax data, then in the event of a tax audit our customer will be found negligent and could incur significant penalties.  Opportunities for project failure abound, and that confirms that these aspects are architectural characteristics in our example.

Summary


We've come up with a toy example, but hopefully it illustrates the concept at hand.  It's important to identify only critical architectural characteristics to consider for your system because there are more of them than you could incorporate into a system without adding unnecessary complexity.  A best practice is to work with your customer to identify the top 3 most important ones.  Any more and your system will become too complex than it's worth.


You can categorize architectural characteristics into 2 columns: operational and structural.  Operational ACs are things related to operating the system and keeping it running - things like availability and performance.  Structural ACs encompass anything related to how the system can be adapted for differing requirements or environments and for how engineers working on it maintain and improve it - configurability and maintainability for example.


It's a complex and nuanced concept and you'll need to wrestle with it for a while.  But as you do your work, try to distinguish design aspects that fit into the 'requirements' and ones that are 'Architectural Characteristics' using the criteria above.  The distinction will serve you as you're asked to focus more on higher and higher level design.

Comments

  1. Extremely useful information which you have shared here about Online Food Ordering Platform for us .This is a great way to enhance knowledge for us, and also beneficial for us. Thank you for sharing an article like this.

    ReplyDelete

Post a Comment

Popular posts from this blog

ChatGPT - How Long Till They Realize I’m a Robot?

Laws of Software Architecture