Capriza Open Source
We’re happy to announce that the Capriza open source projects have a shiny new home at https://capriza.github.io.
All of the projects we’ve decided to open source are used in production at Capriza, some more heavily than others; our Relay service for example, which is based on busmq, is currently delivering more than 1.5 million messages a day over 7 globally distributed AWS regions.
Our projects are all licensed under the MIT license as we believe it’s one of the most permissive licenses that exist.
The Road to Open
With all the good things that come with a healthy growth in your customer base, there tends to be another aspect that comes with it; you’re forced to take a step back and look hard and long at your architecture. Can it keep up to the expected amount of traffic? Will performance degrade over time? Can you scale up as you expand even more?
One of the main components of the Capriza architecture is our Relay service. It’s a cloud component that’s responsible for relaying encrypted messages between user mobile devices and our runtime servers. The initial version was too fragile and we wanted a better solution that could grow and scale as traffic increased, as well as be as resilient as possible to network hiccups.
We quickly came to the conclusion that what we’re looking for was a message bus that offers some heavy duty features:
- guaranteed delivery
- guaranteed order of delivery
- message persistency
- message timeouts
- globally distributed
- cross region
- network resilient
- easily scalable
We weren’t asking for much ;-)
The full details of the story can be found here, suffice to say that we ended up creating our own solution based on node and redis we dubbed busmq. Right from the get-go, we developed busmq with the intent of open sourcing it, and after several months of running in our production environment, we officially released it to the community to join another open source project we previously released, node-proxying-agent.
As time progressed, we open sourced a few more projects and decided it was time to give them a cozy home of their own. We encourage you to take a look and try them out, and don’t hesitate to file an issue or open a pull request if needed.
node-busmq — A high performance, highly-available and scalable, message bus and queueing system for node.js backed by…github.com
precompile-handlebars — A webpack plug-in to precompile handlebar templates directories into concatenated filesgithub.com
syswide-cas — Enable node to use system wide certificate authorities in conjunction with bundled root CAsgithub.com