When it comes to building applications on the public cloud, you’re spoiled for storage. You’ve got SQL, NoSQL, graph databases, document databases, and even good old-fashioned file systems. Choosing the right storage is usually a simple decision, because familiar databases and file systems are only a click in a console away.
Much of how you think of about storage is dictated by the on-premises world, where you needed to consider the underlying architecture and the servers you use for applications. There, licensing economics often dictated using existing SQL storage, using the same database to hold everything from product data to images, and even videos.
Introducing cloud blobs
But with the advent of the public cloud, and services like Azure, aggregated storage stopped being necessary. Instead of one store and a file system for all your code, you have the option of using specific optimized stores that handled one type of content—and handle it well. Part of that transition was led by the NoSQL stores, with quick key-value lookups and no need for complex relational structures. With cloud services, economics drive technology choices for both users and providers, and what had been monolithic structures have been broken up and delivered as individual services.
Way back when, I was the architect of an early photo-sharing site. We built it around a large-scale distributed file system, storing user photos in a hierarchical store that mixed spinning disk and fast access tape. That model wouldn’t work today; the scale of modern systems would quickly overwhelm the file structure. Today, by breaking storage into task-specific modules, you can build systems that can quickly scale, because they’re agnostic to the underlying hardware.
That’s where blobs—binary large object storage—come in. Originally a technique for storing binary content in relational databases, standalone blob storage was part of the original release of Microsoft’s Azure Data Services. Intended to support early cloud-native applications, Azure’s blob support was designed to host application content for both mobile and desktop. That initial release has grown significantly, adding support for tiered storage and for different blob types.