The ephemeral composable stack - Cloudinary: Modularity with opinionated clarity
The is a guest post for the Computer Weekly Developer Network written by Doron Sherman in his capacity as VP of developer relations at Cloudinary.
Cloudinary is known for its cloud-based image and video management technology that allows users to upload, store, manage, manipulate and ‘deliver’ images and video for websites and applications.
Sherman is upbeat and suggests that at long last, the enterprise software industry has reached the point where it can say composable IT is thriving.
There are several aspects to composable IT, but what benefits Cloudinary’s developer-led company the most is being able to build solutions from a function-specific point of view or services that stem from a fundamentally buyer-friendly (and indeed support-friendly) perspective, rather than having to accept software created through a one-stop-shop pre-integrated solution or suite.
Although this progress is cause for celebration, Sherman warns that we’re not completely there yet.
Why is that?
In practice, it’s still difficult to manage services from multiple vendors and ensure that customised solutions operate reliably. If something goes wrong – especially in production – it can be hard to pinpoint the source of failure quickly and accurately.
Sherman writes as follows…
The driving force behind functionally-optimised software development is the relentless need to build in flexibility and scalability.
Modularity with clarity
It’s easier to configure, program with and customise software modules and services that have specific purposes. We’ve seen time and time again that to build applications with a high degree of flexibility and scalability requires these same qualities at the modular level. This is made easier by the fact that each module is focused on a specific purpose: in the case of our software that specific purpose is media (image and video) management.
It’s also easier to avoid deployment bottlenecks (overall performance given increased load) when each module/service can be scaled and tuned independently. For example, on the infrastructure level, we use multiple CDNs (Content Delivery Networks) to optimally deliver media assets and mitigate risk. When the recent Fastly outage happened, our customer impact was minimal because our solution includes a multi-CDN component that automatically fails over to an alternate CDN.
Crucially, it’s also essential to apply the right architecture to build these modules so that they can be combined without creating unintended bottlenecks to flexibility and scalability.
Architecture: open to opinionated
Many would refer to this an ‘open architecture’ approach, which sounds nice but is something of a misnomer. In reality, what’s required are new ‘opinionated’ architectures that provide a prescription for what’s required of modules and how to put them together, along with design patterns and best practices. A great example of a new opinionated architecture for flexibility and scalability is Jamstack, combining elements of serverless computing, meta frameworks and headless services/platforms as modules that combine to deliver modern web apps.
Along with implementing software solutions, developers are increasingly asked to recommend or make outright technology buying decisions.
Blueprints are on the rise to help developers gain confidence and predictability in this enhanced role. Especially those blueprints aimed at opinionated stacks and target application domains like the MACH Alliance, which focuses on applying Jamstack/serverless, expanded authority and responsibility, and in implementing enterprise e-commerce solutions.
DX (Developer eXperience)
Finally, let’s not overlook the important role that a great DX (Developer eXperience) plays.
Vendors need to provide excellent learning resources, tooling and analytics, plus, of course, technical support, to enable developers to build functionally superior, optimised services that can be used in numerous contexts.
The aim here is to ensure that services are easy to adopt, test and troubleshoot. The beauty of providing a great DX is that it almost invariably leads to a great UX.