There’s a new object storage server that has been introduced as an open source alternative to Amazon S3 and other API-compatible services.
Minio, written in Go and available under the Apache license, allows unstructured data (up to 5TB per object) to be stored on a pool of drives of your choosing. Included in the box are protections against data loss and an event-notification system that can be used to build AWS Lambda-like functionality.
Simple and sturdy wins the race
A guiding principle of the service is to keep things simple, because “only simple things scale,” Minio says. The standalone binary for Minio’s 64-bit Windows server is 23.5MB; the client is 10MB. It can run on a single node or can gang together pools of drives across a cluster of machines. The service runs on a variety of OS platforms: Linux, MacOS, Microsoft Windows, FreeBSD, and—in theory—any other platform that supports the Go runtime.
Minio can be accessed using the program’s own command-line utility or any Amazon S3-compatible CLI or SDK. The documentation for Minio outlines various recipes for using the server in conjunction with other services or clients. Those running FreeNAS, a FreeBSD-based storage system that supports ZFS, can run Minio directly on FreeNAS by way of the FreeBSD version of the server.
One thing common to all the language SDKs is an interface to Minio’s event notification service. According to Minio, this makes it possible to write lambda-style apps that respond to events in the filesystem, and hook notifications for “various popular frameworks (AMQP, Elasticsearch, Redis, NATS, WebHooks, Kafka and Postgres).”
Minio’s creators stress its reliability. If you have at least four drives in a pool, you can shard data across those drives to prevent data loss due to mechanical failure or random data corruption. Minio’s sharding works on the object level, rather than the drive level, which makes it easier to recover a specific piece of data. One downside is that drive pools currently cannot be larger than 16 drives, although “you may run multiple instances of Minio server on different ports” to get around this.
Let’s do this our way
Building credible alternatives to Amazon’s cloud offerings has been a theme across many open source projects compatible with AWS de facto standards. The hard part isn’t making new incarnations of those standards available, it’s giving people a reason not to embrace Amazon. That’s a tough sell given the cloud giant’s presence, its ever-expanding roster of offerings, and the loyalty of its users. Amazon provides many incentives to set up shop within its walls and stay there.
That said, people are always looking for services that complement, rather than replace, their Amazon workloads. Minio could be one piece in such a puzzle.