Designing models that scale

edited March 13 in Blog

Author: Arun Thakar, Certified Master Anaplanner and Vice President in the banking industry.

One of the aspects which determine whether a model will meet the need of the business is how well it can scale. Whether the constraint is balancing numerous concurrent users, or having dimensions with high indices, or both and more, its important to design the model to ensure that it can function well as it’s user base and complexity increase. Consider these five ideas throughout the design and implementation process to achieve better results and evade growing pains:

  1. Avoid applying multiple lists that grow applied to the same line item. If two or more dimensions that are unconstrained which are anticipated to increase indefinitely and with dense intersections, are applied to one or more line items, rapidly you may run into model size scalability issues.
  2. Design modular features for multiple deployed models with the same source. Modular design is concept of product design that suggests that a new feature can be bolted on to an existing product without changing the core build of what already exists. When working with multiple deployed models of a single source model, which have varying features, being able to collapse a production list that is only used in one instance will save the all the space those modules would have otherwise taken up in the other model.
  3. Use prefixes and indices for app pages when maintaining multiple apps. Syncing to multiple apps can be tricky when each app is customized for a different set of features. Try adding prefixes to pages that need to go only to specific apps. It also helps to have a good alphanumeric index on each page which are consistent in all instances.
  4. Drive reporting off one granular output module. If your model is calculation intensive and combines multiple data sources to produce a single output, try storing all the reporting inputs in a single place at the lowest level. There are numerous benefits to this, such as facilitating tie out, reducing replicating the same calculation and avoiding the temptation to use SUM and LOOKUP in the same mapping.
  5. A custom users list can be used to subset users. While it’s tricky to pull off a custom users list, if you design a way to assign certain users to a list subset, you can then use the module blueprint (show all users set to off) and a UX filter on a context selector to force the custom user to the current user on the page. When your model starts getting used by a larger user base it could make all those smart filters they are asking for a win for the end users.

Remember a model that scales will likely garner applause from your clients and stakeholders. Future-proofing a model so that it can grow isn’t really a choice, rather, the more thought one puts into designing a scalable model, the smoother things will go later down the journey.

Questions? Leave a comment!