Fruit Salad or Fruit Basket?

Good platforms are more than a collection of services.

Sire, this is the market-fresh fruit, as you requested
Sire, this is the market-fresh fruit, as you requested

Most platforms comprise a collection of individual pieces such as components or services. However, the value of the platform doesn’t just derive from its scope—that is, how many components it contains—but also from how these pieces come together to form a meaningful whole. Given my knack for applying real-life metaphors to IT architecture, we find design guidance in a rather unexpected location: the produce section of a supermarket.

Summing Up the Parts

Platforms combine elements into a meaningful whole. Those elements can be purpose-built components or, as is likely for in-house platforms, existing elements from a cloud or data platform. For example, a modern application delivery platform might include a CI/CD build and deployment pipeline, a serverless container runtime, observability services, and a service mesh for communication.

It’s tempting to describe such a platform by the list of services or projects that it comprises, in this example perhaps Bamboo, Jenkins, Nexus, Spinnaker, Kubernetes, Prometheus, and Istio. But equating a solution to the list of its components would be a vast oversimplification and miss the core purpose of architecture. It’s not only important that your platform includes Jenkins and Prometheus, but also how the platform presents the combination of these packages. After all, the platform should be more than just an installation script.

A non-car analogy highlights the importance of how systems are put together:

An icon indicating this blurb contains information

Architects are like chefs. Good ingredients help, but a great meal comes from how they’re put together.

Simply listing ingredients, whether it’s for dinner or for building a platform, isn’t a useful expression of the final system. You could prepare many dishes from flour, cheese, and tomatoes, ranging from pizza to lasagna to a grilled cheese sandwich. You’d want the restaurant to state which one you’re ordering.

The same holds true for IT platforms. If you tell folks that your platform contains a CI/CD pipeline, they will have a pretty decent idea about what this component does. But they won’t know how they will interact with the component or whether the platform centrally tracks all builds or collects key metrics like successful deploys. To make matters worse, platforms built from open-source projects suffer from the “creative” name choices that tend to confuse even the most well-meaning audience.

Thinking about a platform as a bill of materials also ignores the primary source of value for building it in the first place: if the platform is simply a collection of readily available tools, why wouldn’t application teams just use their own Bamboo and Jenkins instances instead of adopting your platform? Hosted services like GitLab CI/CD make this approach even more appealing because no installation is required. Teams might even feel that using individual services gives them more freedom than your perhaps overly prescriptive platform.

Your platform therefore must equate to more than an installation script or a catalog of already existing services. Another food metaphor helps you express this design aspect vividly.

Fruit Baskets

Fruit baskets are really just baskets with fruit
Fruit baskets are really just baskets with fruit

Platforms that are compilations of individual pieces can be compared to fruit baskets: they collate several items into a convenient collection. However, in the end, all the customer gets is fruit. A fruit basket makes for a nice decoration, but it’s largely a convenience. People aren’t much worse off if they just buy the fruit itself, and they may actually be better off because the basket might lack their favorite fruit or, vice versa, includes fruit that they dislike. That pattern is well known from discounted bundle sets, which invariably include items that you wouldn’t buy individually (luckily the lid of the yet-to-be-used 6-liter stock pot from my cooking set fits one of my saucepans).

Because purchasing bulk fruit at the supermarket is a vital alternative, fruit baskets can’t command much of a margin over the ingredients, aside from affording a nicer presentation for special occasions. Japanese fruit baskets have taken that particular aspect to whole new levels of sophistication (and pricing), but it will prove difficult to replicate with IT services.

Serving Fruit Salad

Platform designers should therefore aim beyond fruit baskets. There’s a much more platform-esque way of consuming fruit: the fruit salad.

A fruit salad opens up new opportunities
A fruit salad opens up new opportunities

Just like fruit baskets, fruit salads are collections of fruit; however, the fruit is cut up and packaged into a ready-to-eat meal. What might appear like a minor convenience allows the fruit salad to deliver much more value than just the sum of its parts by:

Supporting use cases that fruit baskets or fruit cannot

They’re easy to carry and perfect for a picnic, for eating on the go, or for having lunch at your desk. Fruit baskets, by contrast, are great for decoration but not for eating on the go.

Offering an enhanced user experience

They balance texture and sweetness independent of the size of the fruits. In contrast, if you buy one pear and one watermelon, you’ll struggle to achieve much of a balance in your basket. You could say, fruit salads are more cohesive—they create a balanced whole.

Scaling down

They’re available in small portions, regardless of the fruit size, in unlike a fruit basket containing watermelons. Their fine-grained, usage-based pricing model matches the customer’s needs. Because scaling down is more difficult than scaling up, the compact format is a distinct advantage.

Reducing toil

Customers don’t need to peel or cut the fruit, and the ingredients don’t crush in a bag or your luggage. Not needing to cut up the fruit can be very handy, for example, when boarding an airplane where knives aren’t allowed.

So, although a fruit salad might appear as not much more than cut-up fruit, it’s actually a new product with a different value proposition. That’s why it also fetches a significantly higher margin: many fruit salads clock in at more than 10 Euros per kilogram, whereas apples and oranges, the main ingredients, go for 2.49 (pre-inflation).

IT Fruit Salads

Platform builders should be inspired by fruit salads and not just define their platform by the tools and products it comprises.

An icon indicating this blurb contains comments

When someone tells you that they built a GitLab/Spinnaker or Bitbucket/Bamboo platform, that’s a fruit basket. All the customer gets are fruits, and increasingly those fruits can also be had directly from the vendor.

To make your platform more than just the sum of the pieces, the pieces need to be well integrated or automated, so that it becomes noticeably easier for platform customers to use the whole platform instead of the individual pieces. Sane default settings can get people going more quickly, as can better integration between the tools; for example, through shared account settings or by defining consistent version numbering across tools. Such integrations may seem trivial but can be surprisingly powerful in large systems. For example, relating changes in metrics back to a software release and the associated source changes can save endless hours of debugging. As with any product, the measure isn’t how difficult it was to build the feature, but how valuable it is for users.

Every good thing can also be overdone. Platform teams may be tempted to overlay a complete abstraction over the individual tools, perhaps in the pursuit of a vendor-independent, universally pluggable software delivery engine. Sadly, such attempts tend to face the same fate as the Grim Wrapper. Let the fruit salad be a salad of fruits—don’t try to make it a “nutrition-optimized breakfast supply with interchangeable Rutaceae”.

Having Opinions

Naturally, a fruit salad–style platform will be more opinionated, meaning it doesn’t intend to be all things to all people. Customers will be more likely to accept the constraints that the salad imposes since they benefit from a smooth integration and ease of use. In the worst case, customers can still pick out individual pieces of fruit and thereby get value by consuming only part of the “platform”.

In comparison, opinionated fruit baskets are a tougher sell, as the benefit won’t outweigh the perceived lack of choice. A beautiful wrapping might get customers’ attention, but that initial attraction will wear off rather quickly.

Making Fruit Salad From Fruit Baskets

When I shared the fruit basket metaphor with a friend of mine who’s running a platform tool company, he quickly concluded:

An icon indicating this blurb contains comments

Cloud platforms are more like fruit baskets. We refine them into in-house fruit salads.

Cloud platforms exhibit a good degree of cohesiveness; for example, through unified provisioning APIs, consoles, monitoring, or security. But a cloud vendor needs to build for the whole world to make the economies of scale work. That means, it’s harder for the provider to offer opinionated fruit salads tailored to your specific needs and tastes. That’s where in-house platforms shine as they can make more assumptions and can be more opinionated.

Making fruit salad (in-house platforms) from fruit baskets (cloud platforms) is a common enough situation that some cloud platforms come with a knife and chopping board, so to speak. For example, in 2021 AWS introduced Proton, described as a “deployment workflow tool for modern applications”, which roughly translates into a fruit salad builder service.

Being more than the sum of the parts is particularly important when a platform lives on top of another platform, such as a cloud platform. Cloud service providers and other vendors continuously adding and integrating new tools into the base platform challenges the value-add of “fruit basket”–style platforms. Platform teams should therefore decide at the outset whether their platform should be floating or sinking.

Remixing Salads

In the case of in-house IT fruit salads, you face the unusual situation that new fruits come along fairly regularly in the form of new services released by the base platform providers. This poses a challenge as customers will demand those fruits to be swiftly included in your (or rather, their) salad. However, the more balanced your current salad is—in other words, the more cohesive and well-integrated the services are—the more difficult it becomes to seamlessly integrate new services. Fruit salads face this classic architecture trade-off of optimizing for today versus optimizing for the future.

Although I am not fond of military analogies, one product that is frequently labeled as a near-perfect combination of desirable properties is the Japanese “Zero” fighter plane. The combination of excellent maneuverability, long range, low stall speed for use on aircraft carriers, and significant firepower made it extremely effective. However, modifying this design, for example, to achieve higher speed or add armor, proved challenging because any addition in weight would negate the other properties. The best fruit salads are perhaps seasonal.

Learning From the Real World

Knowing that Starbucks isn’t the only place to learn about IT architecture and strategy, the next time you visit the supermarket, spend extra time pondering the produce section! It isn’t just healthy but also insightful.