Build Hyperscale open source (and other) apps

Speaker: Clemens Vasters, @clemensv

Microsoft has been busy.

  
Microsoft is a major player in many open source areas, even though it is not perceived this way. Big effort to make .Net work well also on Mac and Linux, it’s a major undertaking. Microsoft lives off intellectual property (worries in the legal department :)) but Microsoft is so confident with open source. Microsoft has become an open source company. Microsoft has progressed to a lot of open source software and keeps opening up more.

Azure is a very open cloud and Microsoft believes in the decisions that its customers make. Microsoft embraces the choices the people make and Microsoft brings everything to cloud. No preferences for operating system and services. Support everything in equal ways. Microsoft is working with vendors so the products become azure and cloud friendly. Microsoft often works nd collaborates closely and even goes in with a proposal on how vendors can do better and to help people solve problems better.

Microsoft makes a lot of effort to make every service in Azure compatible with whatever operating service, language, runtime you prefer.

When to use what?

On Premises. First step is IaaS. Build on PaaS. Last SaaS.

Public cloud and IaaS is shared responsibility, you come with the application and data and control the runtime, the middleware and OS. Microsoft manages everything else for you, like virtualization, servers, storage and networking. You can come with whatever OS you like and we put everything on top of that. Microsoft is no longer the company that says that everything has to be Windows. Use what you like. Bring it.

From a cost and operations perspective, PaaS should be considered. You bring our applications and the data, Microsoft manages everything and runs it for you. Availability is much higher. PaaS is less work for you and also cheaper.

Why use Azure for open source? Why not use something else, that was even built on open source? Microsoft believes that provides a great cloud ecosystem with same level of tooling for all OS. Microsoft leads across a number of different areas.

What is Hyperscale?

Systems that scale limitlessly and effortlessly. Across regions, across any requirements that you might have. Germany is at the center of the next software revolution, where the machines get connected. Germany makes cars, the best in the world. Germany does industrial automation. Digitalization means that all these will be hooked up to capable systems. Every car gets connected. Companies ship digitally connected product by the millions. You have to build systems that are very large. These systems have to work 24/7. That’s hyperscale. You run systems on clusters or logical grouping of servers and you span multiple data centers. Microsoft’s job is to make the tooling better.

Example: 2 trillion messages per month, several million requests per second, several billion requests per day. A different way to how you look and deal at a system from a scale perspective. If a cluster dies, a new one kicks in.

If you know your server by name, that’s a pet. Hyperscale is cattle, not pets.

Linux is cheaper from an OS perspective if you run your own infrastructure. No license costs. A lot of the foundational software are Linux based. Microsoft says, that’s ok.

You want to be able to scale up and down based on load triggers and patterns. When do you need to have the most capacity? e.g. for cars, during the night and daytime you can lay low but when people drive to work and home, that’s when you have to scale up.

The world is scaling in different ways and you have to react to these. Often follow the CAP theorem: you can only have 2 of 3 between consistency, availability and partition tolerance. Siding on Eventual consistency as a scale tradeoff. If you have a system that is always available you have to make tradeoffs at how consistent your data is.

Every service in Azure is a hyperscale service.

When do you choose what in Azure?

You use virtual machines when you have pets. Cattles are scale sets. Then you have the container service to deploy scale sets from preset image. Last Service Fabric.

A scale set is set up like a single VM but managing multiple VMs. The scale set will take care of everything. If a machine in scale set dies, that machine will be replenished. It’s important to understand that machines can be easily replaced and you don’t care about a machine in particular.

What are Microservices?

A monolithic app has most of its functionality within a single process and scales by cloning the app on multiple servers/VMs/Containers.

A microservice app separates functionality into separate smaller services and scales out b deploying each service independently creating instances of these services across servers/VMs/Containers.

A microservice app is when you take your monolithic app and break it into pieces. Azure is a great example with more than 200 services, independently operated. 24 hours ops, no downtime. Every service has its own responsibility and versions, deploys and runs as they like. Breaking changes with 1 year of warning.

A microservice approach carves up into several concerns. It’s the next step coming from modularization. The service own all of its services, it has its own database. You have the agility to run systems 24/7 in a large scale.

Managing microservices: services will be distributed into clusters. You need to have at least 3 instances for availability. If you take one away (e.g. due to upgrade), you still need redundancy. 50% capacity would be very bad. The 3 instances would be shredded across clusters, on the VM or application level. Availability sets allow your application to adapt with the platform: how you want your VMs to distributed across the clusters? How to span the fault domains? Define the upgrade domains?

A single VM with a name will experience sometimes downtime. For other infrastructures you can use the availability sets to help manage them.

Microsoft Azure Service Fabric

  
Service Fabric is for managing clusters, a platform for reliable, hyperscale, microservice-based applications. With Service Fabric the only thing you need to worry about is writing your code.

How do you distribute? Having container images, e.g. Docker, can be useful for this. VM is a full image and a Container is isolated, shares the resources and quicker to deploy. Containers Service in preview managing all this for you.

Support for Cloud Foundry.

You can do hyperscale on Linux on Azure.

Check “azure-quickstart-templates” on GitHub, a great foundation to build things. Deploy to Azure and Visualize directly on GitHub.

One thought on “Build Hyperscale open source (and other) apps

Comments are closed.