On a Cloud: Deployment & MQC
During my last start-up our team started extremely lean. We utilized Azure Web Apps and wanted to build our site fast, and respond to user feedback in near real-time. By using Git (GitHub) as our deployment mechanism and Web Apps, 2 of us were able to push upwards of 220 builds to production a day. The point of this video is not deploying 220 builds to production a day. The point is that today you are able to choose the cadence that is right for your business, using commonly available tools.
Model Queue Controller
An idea that I was lead to through the building of message buses for organizations; if you had no issues with latency, would it not be better to introduce a queue for every method call? Having a queue gives you the ability to retry and you can also rate control and monitor throughput. All of these things combined typically lead to more easily testable code, as well as more fault tolerant code. The biggest downside is that you are introducing latency, which in typical website development might not equate to a worse user experience.
This video goes through my thought process on why I came to this solution, and what the interesting characteristics are that make it appealing.
During the development, I broke down my solution into two pieces:
- Route: allows code to be routed from source to a method in a class; the biggest benefit with this is that it is really easily tested, and your classes do not become coupled
- MQC: introduces queue's between specific routes; currently an in memory queue acts as the separator between source and destination
For more information check on these Open Source projects on GitHub
- Route: https://github.com/jefking/King.Route
- Model Queue Controller: https://github.com/jefking/King.MQC
These are also available for download via NuGet
- Route: https://www.nuget.org/packages/King.Route
- Model Queue Controller: https://www.nuget.org/packages/King.MQC/