Application Holotypes: A Guide to Architecture Decisions

submited by
Style Pass
2022-05-21 20:00:20

Analyzing the characteristics of real-world applications is difficult. We often make generalizations about applications we see in the wild, both anecdotal and statistical: "Single-Page Applications are slower than multipage" or "apps with low TTI loaded fast". However, the extent to which these generalizations hold for the performance and architectural characteristics we care about varies. I believe one of the primary determinants of this variability are a product's features and design constraints, and classifying applications based on their features & constraints can enable more targeted and impactful solutions to the problems faced by each.

Constructing a set of named categories into which applications can be effectively grouped presents a challenge: it's difficult to predict all possible groups, and the boundaries set by each are subjective and likely to change over time. Furthermore, abstract groupings like this can be difficult to reason about or visualize. For example, what performance optimization techniques might we recommend to developers of "thick-client, page-centric rich media applications with offline browsing and user contribution"? It's much easier to frame discussions in the concrete, asking instead what we might recommend to developers of "Instagram-like apps".

In order to establish this framing, we can construct a list of holotype applications. These can either be representative of the web as it exists today, or predicated on changes we foresee developers making in response to trends and platform initiatives. To make things easier, holotypes representing portions of the web's long tail of historical and legacy content can be more general, whereas those representing current and upcoming applications can be more narrowly scoped to allow for more specific recommendations.

Leave a Comment