Why you should and eventually will invest your time in learning about public cloud?

Posted on March 16, 2017 · 3 mins read · tagged with: #azure #cloud

TL;DR

Within 2-5 years the majority of applications will be moved to public cloud. You’d better be prepared for it.

Economies of scale

You might have heard that economy of scale does not work for software. Unfortunately, this is not the case for public cloud sector. It’s cheaper to buy 1000000 processors than to buy one. It’s cheaper to buy 1000000 disks than to buy one. It’s better to resell them as a service to the end customer. And that’s what public cloud vendors do.

Average app

The majority of applications does not require fancy processing, or 1ms service time. They require handling peaks, being mostly available and costing no money when nobody uses one. I’d say, that within 2-5 years we will all see majority of them moving to the cloud. If there is a margin, where the service proves its value and it costs more than its execution in the cloud, eventually, it will be migrated or it will die with a big IT department running through the datacenter trying to optimize the costs and make ends meet.

Pure execution

The pure execution has arrived and its called Azure Functions (or Lambda if you use the other cloud:P ). You pay for a memory and CPU multiplied. This means that when there’s nothing to work on, you’ll pay nothing (or almost nothing depending on the triggering m echanism). This is the moment when you pay for your application performing actions. If an app user can pay more than the cost of the execution, you’ll be profitable. If not, maybe it’s about time to rethink your business.

Performance matters

With this approach and detailed enough measurements you can actually can see where you spend the most money. It’s no longer profiling an app for seeing where is it slow or where it consumes most of the memory. It’s about your business burning money in different places. Whether to update one or not - it’s a decision based on money and how much does it cost to fix it. With highly profitable businesses you could even flood your less performing parts with money. Just like that.

Environments and versioning

How to version a function? Preserve signature and rewrite it. Then deploy. Nothing less nothing more. I can almost see a new wave of development approaches where Continuous Delivery looks like a grandpa trying to run with Usain Bolt. You can’t compete with this. It’s a brand new league.

Summary

If you think about areas you should invest your time, public cloud and functions are the way to go. For majority of the cases, this is going to be vital to survive in the market competing and betting for the lowest costs of infrastructure, IT and devops.


Comments

@0xMarcin

IMO more and more vendors will provide tooling for hybrid or private cloud that is coherent with their public offerings. Let me bring Azure Stack as an example. You can host it in your DC on your machines. Still, you can use the same public cloud APIs to work with it.

There won't be be any standard between platforms. As a vendor you want your users to be "vendor locked in". There's no value in providing interoperability or common API. You want your users to use you and do not make microbidding and going to a cheaper cloud without any problems. This makes clouds profitable and more resistant to small pricing changes.

You can build architecture against "vendor lock in" to provide you future options to opt out from one, and opt in for another, but at the infrastructure level of you apps, you won't escape it.

by Szymon Kulec 'Scooletz' at 2017-03-17 10:34:50 +0000

Vendor lock-in: use docker, runs virtually everywhere? If docker can be run on whichever cloud - youre good to go. Make an image and publish to your cloud repository.

As for cloud standards - OpenStack?

by Chaos Engine (@ChaosEngine) at 2017-03-17 14:02:15 +0000

You can't dockerize Amazon S3 nor Azure Storage and if you want cheap and powerful resilient storage you won't host it yourself. Pay as you go, for small low traffic businesses will be the most suitable model for small businesses. Running Lambdas or Functions over cheap services will satisfy 80-90% of all business needs. Additionally, you want to buy some integrations instead of configuring them across docker images of any kind

by Szymon Kulec 'Scooletz' at 2017-03-17 15:00:49 +0000

I would also say that ARM (AA64) cloud would or should fire up properly and start to really matter. So prepare only x86 target for your app :-)

by chengin at 2017-03-16 07:48:42 +0000

IMHO for many industries the law or some other circumstances prevent applications from quickly migrating to cloud e.g. many businesses care about their data and do not want to store them outside their HQ. I may expect that a big bank may invest in their private cloud instead of using public one. On the other hand smaller companies may find it economically justified to move their infrastructure to the cloud.

But the main problem that I see now is lack of common standard between competing cloud platforms. I do not want to bind my app to some specific vendor. Ideally I would like to have a framework that allow me to run my app in any cloud of major providers (AWS, Azure, Google Cloud) and in case of emergency to run it locally. Frameworks like these only started to appear and I am looking forward to see more progress in this direction.

Anyway cloud is only infrastructure, as a developer you should now what's in store - I am just against vendor lock in.

by 0xmarcin at 2017-03-17 10:15:46 +0000