Tuesday, October 20, 2015

My (Short) Wish List For Windows Azure


These are some of the features that I want(ed) to see in Windows Azure.

Ditch Web Role and Worker Role: These two services were a half-hearted attempt at Platform as a Service (PaaS), while trying to retain the control afforded by Virtual Machines (VM). Also, the debugging and deployment of these services were complex and time consuming. Microsoft has finally rectified this with Web Sites and Scheduler (previously called Web Jobs. can't believe the name is dead already!) to replace them. Hopefully the web and worker roles will be sunset soon.

I told my friend a few years ago that PaaS will succeed only if there is mobility, i.e., a developer is able to write code once, then take it to any cloud provider and run it without any modifications. That day seems to have arrived with the new technology called "containers". As usual the hype is deafening. Never mind that containers are promising the same portability that Java did, circa 1995, they are the rage now. Docker is the front-runner in the container space. This is what the Docker web site states: "With Docker, developers can build any app in any language using any toolchain. “Dockerized” apps are completely portable and can run anywhere". Sounds familiar? If a developer codes his/her application to a container, then theoretically, they can move their application to any cloud provider as long as that provider supports that container.

If I'm allowed to oversimplify, containers provide the child processes (the applications) with, ahem, a "container" or a "virtual shell" that captures their standard input (stdin), standard output (stdout) and standard error (stderr). The containers can run only command line programs, no GUI, at least not yet. That is how they remain lightweight (Of course, don't quote me on this one, I'm no container expert)

Docker (in fact, all containers) are targeted only at Linux operating system. This could be a disadvantage to Docker, or a sinister implication for Microsoft. I'm worried that latter is the case and the world is ignoring Windows. Even then, if the containers live up to their promise of "write once, run anywhere", then the industry would be well served.

I digressed. Let me continue with my list.

Rationalize Compute Power: Remember the days when computer manufacturers used to one-up each other with mega FLOPS, giga flops and tera flops? Today nobody cares, even a wrist watch can provide a few hundred mega FLOPS of compute power. FLOPS could be a good way of rationalizing the compute power of the hundreds of CPUs available in the market. Of course, the net compute power could vary based on the amount of memory, address and data bus size, solid state disks etc..., but a formulae can be evolved to take them in to account.
In any case, CPU power has to be rationalized, somehow, for better CPU utilization and better profits! Once that is done, we can allocate guaranteed max CPU percentage to a process.

Containerize IIS: I believe this should be the next step in creating containers for Windows. Given that vast majority of the applications are going to be web (and mobile, of course!) applications in future (yes, I get it, the future is already here), instead of porting Docker, IIS should be converted to a container. The IIS Application Pool might already offer this functionality to some extent. This container should be settable with max CPU percentage (as discussed above), and can be sold instead of web sites. This is essentially process virtualization.

Once process virtualization succeeds, may be VMs will become redundant and everyone will start using physical machines again?

Let me know your thoughts. Thanks for reading.

No comments :

Post a Comment