A bit about me • Ivan Čuljak • Shouting at clouds since 2012??? • Salvaging wrecks/putting out fires for a living • Freelancer & Azure MVP • Cloud Solutions Architect & owner @ Celeste Maze • Founder @ Cloud Bootstrap
First thing to do was: • rewrite the desktop app into a web app • host the web app somewhere in the cloud • create a service out of the "engine" • "host" the service on those same VMs • connect those two through a queue in the cloud
Rewriting the engine into functions will turn out great, mhmmm: • a function can run for 10 minutes • func => func calls going through queues • retaining state between executions • hard to catch and react to an exception • processing of a ticket could "spill" to another instance
Evolution of "app hosting" [2/2] • VMs running containers • Containers orchestrator running on top of VMs • Let's just forget it's all there and do our dev job...
We listed out some "issues" • paying for the infrastructure 24/7 • depending on proxies • some proxies were really slow • performance bottlenecks with our infrastructure • not automatically scaleable
We listed out some "issues" • paying for the infrastructure 24/7 • depending on proxies • some proxies were really slow • performance bottlenecks with our infrastructure • not automatically scaleable
We listed out some "issues" • paying for the infrastructure 24/7 • depending on proxies • some proxies were really slow • performance bottlenecks with our infrastructure • not automatically scaleable
We listed out some "issues" • paying for the infrastructure 24/7 • depending on proxies • some proxies were really slow • performance bottlenecks with our infrastructure • not automatically scaleable
Here's the workflow [1/2]: • "conductor" checks if there's the right container available • if not, we generate a GUID and a container • in addition to connection strings, that GUID is passed to the container
Here's the workflow [2/2]: • container subscribes to a topic with that GUID as a filter • container sends a message to "conductor" saying "ready: GUID" • "conductor" sends requests as messages down the "queue" (topic)
We listed out some "issues" • paying for the infrastructure 24/7 • depending on proxies • some proxies were really slow • performance bottlenecks with our infrastructure • not automatically scaleable