Showing posts with label PaaS. Show all posts
Showing posts with label PaaS. Show all posts

Monday, January 11, 2016

2016 - The year of Microservices and Containers

This is the first blog post I am writing this year.
I was planning to publish this before Christmas, but I figured out it would be better to wait and reflect even more about the trends that’s currently taking place in this industry.
So what’s a better way to start the New Year other than with something I really think will be one of the big bets for the coming year(s)?

I drink a lot of coffee. In fact, I might suspect it will kill me someday. On a positive note, at least I was the one who was controlling it. Jokes aside, I like to drink coffee when I'm thinking out loud around technologies and potentially reflect on the steps we’ve made so far.

Going back to 2009-10 when I was entering the world of virtualization with Windows Server 2008 R2 and Hyper-V, I couldn’t possible imagine how things would change in the future.
At this very day, I realized that the things we were doing back then, was just the foundation to what we are seeing today.

The same arguments are being used throughout the different layers of the stack.
We need to optimize our resources, increase density, flexibility and provide fault-tolerant, resilient and highly-available solutions to bring our business forward.

That was the approach back then – and that’s also the approach right now.

We have constantly been focusing on the infrastructure layer, trying to solve whatever issues that might occur. We have been in the belief that if we actually put our effort into the infrastructure layer, then the applications we put on top of that will be smiling from ear to ear.

But things change.
The infrastructure change, and the applications are changing.

Azure made its debut in 2007-08 I remember. Back then it was all about Platform as a Service offerings.
The offerings were a bit limited back then, giving us cloud services (web role – and worker role), caching and messaging systems such as Service Bus, together with SQL and other storage options such as blob, table and queue.

Many organizations were really struggling back then to get a good grasp of this approach. It was complex. It was a new way of developing and delivering services, and in almost all cases, the application had to be rewritten to fully functional using the PaaS components in Azure.

People were just getting used to virtual machines and has started to use them frequently also a part of test and development of new applications. Many customers went deep into virtualization in production as well, and the result was a great demand from customers for having the opportunity to host virtual machines in Azure too.
This would simplify any migration of “legacy” applications to the cloud, and more or less solve the well-known challenges we were aware of back then.

During the summer in 2011 (if my memory serves me well), Microsoft announced their support of Infrastructure as a Service in Azure. Finally they were able to hit the high note!
Now what?
An increased consumption of Azure was the natural result, and the cloud came a bit closer to most of the customers out there. Finally there was a service model that people could really understand. They were used to virtual machines. The only difference now was the runtime environment, which was now hosted in Azure datacenters instead of their own. At the same time, the PaaS offerings in Azure had evolved and grown to become even more sophisticated.

It is common knowledge now, and it was common knowledge back then that PaaS was the optimal service model for applications living in the cloud, compared to IaaS.

By the end of the day, each and every developer and business around the globe would prefer to host and provide their applications to customers as SaaS instead of anything else, such as traditional client/server applications.

So where are we now?

You probably might wonder where the heck I am going with this?
And trust me, I also wondered at some point. I had to get another cup of coffee before I was able to do a further breakdown.

Looking at Microsoft Azure and the services we have there, it is clear to me that the ideal goal for the IaaS platform is to get as near as possible to the PaaS components in regards to scalability, flexibility, automation, resiliency, self-healing and much more.
For those who have been deep into Azure with Azure Resource Manager know that there’s some really huge opportunities now to leverage the actual platform to deliver IaaS that you ideally don’t have to touch.

With features such as VM Scale Sets (preview), Azure Container Service (also preview), and a growing list of extensions to use together with your compute resources, you can potentially instantiate a state-of-the-art infrastructure hosted in Azure, without having to touch the infrastructure (of course you can’t touch Azure infrastructure, but I am now talking about the virtual infrastructure itself, the one you are basically responsible of).

The IaaS building blocks in Azure is separated in a way so that you can look at them as individual scale-units. Compute, Storage and Networking are all combined to bring you virtual machines. Having this approach with having the loosely coupled, we can also see that these building blocks are empowering many of the PaaS components in Azure itself that lives upon the IaaS.

The following graphic shows how the architecture is layered.
Once Microsoft Azure Stack becomes available on-prem, we will have one consistent platform that brings the same capabilities to your own datacenter as you can use in Azure already.

  

Starting at the bottom, IaaS is on the left side while PaaS is on the right hand side.
By climbing up, you can see that both Azure Stack and Azure Public cloud – which will be consistent has the same approach. VMs and VM Scale sets covers both IaaS and PaaS, but VM Scale Sets is place more on the right hand side than VMs. This is because VM Scale Sets is considered as the powering backbone from the other PaaS services on top of it.

Also VM Extensions leans more to the right as it gives us the opportunity to do more than traditional IaaS. We can extend our virtual machines to perform advanced in-guest operations when using extensions, so anything from provisioning of complex applications, configuration management and more can be handled automatically by the Azure platform.

On the left hand side on top of VM Extensions, we will find Cluster orchestration such as SCALR, RightScale, Mesos and Swarm. Again dealing with a lot of infrastructure, but also providing orchestration on top of it.
Batch is a service that is powered by Azure compute and is a compute job scheduling service that will start a pool of virtual machines for you, installing applications and staging data, running jobs with as many tasks as you have.

Going further to the right, we are seeing two very interesting things – which also is the main driver for the entire blog post. Containers and Service Fabric is leaning more to the PaaS side, and it is not by coincident that Service Fabric is at the right hand side of containers.

Let us try to do a breakdown of containers and Service Fabric

Comparing Containers and Service Fabric

Right now in Azure, we have a new preview service that I encourage everyone who’s interesting in container technology to look into. The ACS Resource Provider provides you basically with a very efficient and low-cost solution to instantiate a complete container environment using a single Azure Resource Manager API call to the underlying resource provider. After completion of the deployment, you will be surprised to find 23 resources within a single resource groups containing all the components you need to have a complete container environment up and running.
One important thing to note at this point is that ACS is Linux first and containers first, in comparison to Service Fabric – which is Windows first and also microservices first rather to container first.

At this time it is ok to be confused. And perhaps this is a good time for me to explain the difficulties to put this on paper.

I am now consuming the third cup of coffee.

Azure explains it all

Let us take some steps back to get some more context into the discussion we are entering.
If you want to keep up with everything that comes in Azure nowadays, that is more or less a full-time job. The rapid pace of innovation, releases and new features is next to crazy.
Have you ever wondered how the engineering teams are able to ship solutions this fast – also with this level of quality?

Many of the services we are using today in Azure is actually running on Service Fabric as Microservices. This is a new way of doing development and is also the true implementation of DevOps, both as a culture and also from a tooling point of view.
Meeting customer expectations isn’t easy. But it is possible when you have a platform that supports and enables it.
As I stated earlier in this blog post, the end goal for any developer would be to deliver their solutions using the SaaS service model.
That is the desired model which implies continuous delivery, automation through DevOps, adoption of automatable, elastic and scalable microservices.

Wait a moment. What exactly is Service Fabric?

Service Fabric provides the complete runtime management for microservices and is dealing with the things we have been fighting against for decades. Out-of-the box, we get hyper scale, partitioning, rolling upgrades, rollbacks, health monitoring, load balancing, failover and replication. All of these capabilities is built-in so we can focus on building those applications we want to be scalable, reliable, consistent and available microservices.

Service Fabric provides a model so you can wrap together the code for a collection of related microservices and their related configuration manifests to an application package. The package is then deployed to a Service Fabric Cluster (this is actually a cluster that runs on one as much as many thousands Windows virtual machines – yes, hyper scale). We have two defined programming models in Service Fabric, which is ‘Reliable Actor’ and ‘Reliable Service’. Both of these models provides you with – and makes it possible to write both stateless and stateful applications. This is breaking news.
You can go ahead and create and develop stateless applications in more or less the same way you have been doing for years, trusting to externalize the state to some queuing system or some other data store, but again handling the complexity of having a distributed application at scale. Personally I think the stateful approach in Service Fabric is what make this so exciting. Being able to write stateful applications that is constantly available, having a primary/replica relationship with its members is very tempting. We are trusting the Service Fabric itself to deal with all the complexity we have been trying to enable in the Infrastructure layer for years, at the same time as the stateful microservices keep the logic and data close so we don’t need queues and caches.

Ok, but what about the container stuff you mentioned?

So Service Fabric provides everything out of the box. You can think of it as a complete way to handle everything from beginning to the end, including a defined programming model that even brings an easy way of handling stateful applications.
ACS on the other side provides a core infrastructure which provides significant flexibility but this brings a cost when trying to implement stateful services. However, the applications themselves are more portable since we can run them wherever Docker containers can run, while microservices on Service Fabric can only run on Service Fabric.

The focus for ACS right now is around open source technologies that can be taken in whole or in part. The orchestration layer and also the application layer brings a great level of portability as a result of that, where you can leverage open source components and deploy them wherever you want.

In the end of the day, Service Fabric has a more restrictive nature but also gives you a more rapid development experience, while ACS provides the most flexibility.

So what exactly is the comparison of Containers and microservices with Service Fabric at this point?

What they indeed do have in common is that this is another layer of abstraction in addition to the things we are already dealing with. Forget what you know about virtual machines for a moment. Containers and microservices is exactly what engineers and developers are demanding to unlock new business scenarios, especially in a time where IoT, Big Data, insight and analytics is becoming more and more important for businesses world wide. The cloud itself is the foundation that enables all of this, but having the great flexibility that both container – and service fabric provides is really speeding up the innovation we’re seeing.

For organizations that has truly been able to adopt the DevOps mindset, they are harnessing that investment and is capable of shipping quality code at a much more frequent cadence than ever before.

Coffee number 4 and closing notes

First I want to thank you for spending these minutes reading my thoughts around Azure, containers, microservices, Service Fabric and where we’re heading.

2016 is a very exciting year and things are changing very fast in this industry. We are seeing customers who are making big bets in certain areas, while others are taking a potential risk of not making any bets at all. I know at least from my point of view what’s the important focus moving forward. And I will do my best to guide people on my way.

While writing these closing notes, I can only use the opportunity to point to the tenderloin in this blog post:

My background is all about ensuring that the Infrastructure is providing whatever the applications need.
That skillset is far from obsolete, however, I know that the true value belongs to the upper layers.

We are hopefully now realizing that even the infrastructure that we have been ever so careful about is turning into commodity, and now handled more through an ‘infrastructure as code’ approach than ever before, trusting that it works, empowers the PaaS components – that again brings the world forward while powering SaaS applications.

Container technologies and Microservices as part of Service Fabric is taking that for granted, and from now on, I am doing the same.




Wednesday, February 12, 2014

Polljabber - Leveraging the beauty of a PaaS enabled Cloud Infrastructure

It is quite obvious that the biggest challenge that every organization face when they consider moving their applications to the cloud, is software dependencies.
A cloud is using a SOA approach where these services are loosely coupled together, and if you are familiar with Windows Azure (the architecture) you know that is a complex setup, although using commodity hardware.
During the past years, I have been involved in several software projects where we often ended up turning to the cloud for the following reasons:

·         We don’t want to own the hardware
·         We don’t want to operate the infrastructure
·         We are planning to have complete world domination – our basement is not big enough to host the infrastructure
·         It’s not worth it, we have a life

A traditional ISV (Independent Software Vendor) will make all their profit on the solutions they deliver through software. By having a generalized software and application distributed through the public cloud, they eliminate the need of a private cloud infrastructure as long as the applications are designed solely for the public cloud.

My focus has always been at the backend (I really need to know how things are put together, how to break them, fix them – and how to improve them).
But ironically, my brother who got me into this business, he has a different focus.
He is a developer and has developed this application for your iPhone/iPad (yes, he is branded).

You can grab the app from iTunes and read more about the app here: http://www.polljabber.com/

This app let you send polls, quiz and much more to your friends, and your friends are the people you have connected on facebook. Instead of sending texts, pictures and so on, we can create a poll and send to our friends. I use it a lot to find out what we should have for dinner, and my girlfriend reluctantly agrees.  And this interesting from a technical perspective.

My brother is a man with his family (two kids, I think) and he is delivering this app to hundreds or thousands of people, without having a single piece of infrastructure.
By using public API’s, SDK’s, federated services and more from Apple, Windows Azure and facebook, he can leverage the beauty of cloud computing without having any concerns about the operations of the infrastructure, at almost no cost (Pay-as-you-go).
This could not be possible without the public cloud offerings, as he would have to make a huge investment prior to any launch.

The only thing he need to focus on is:

·         Create a solid code (he don’t do any bug fixing, since he is not putting bugs in the code in the first place)
·         Decide how the app should manage its data

We are in the same business - but with a totally different focus. I am building the roads, while he is using his car on it.

Saturday, August 11, 2012

Cloud Services in Windows Azure

As a part of the new offerings in Windows Azure, Hosted Services are now replaced with Cloud Services in the new Windows Azure portal.
A hosted service was previously a service in Azure that could contain Web Roles, Worker Roles and VM Roles.
With the new Virtual Machine (persistent) in Azure, you can also add them to a cloud service so that they can communicate in their private network.

A cloud service is automatically created when you create a virtual machine. When you create your second virtual machine you will be able to add the virtual machine to the same cloud service to enable network communication, load-balancing and maintain high availability for those virtual machines.
This is important to know if you’re planning to extend your infrastructure and create connectivity between resources on-premise and in Windows Azure. Instead of going through the external IP/DNS name, you can take advantage of this private network.

So let’s repeat the PaaS service model in Windows Azure

A hosted service in Windows Azure was basically a combination of code and configuration. This does still apply for the cloud service.
A cloud service represents the PaaS service model in Azure, where you can deploy your multi-tier applications, using multiple roles and have a flexible model to scale your stateless applications.

Each role (Web or/and Worker Role) has its own code and configuration file.
So from a developer’s perspective, they only need to concentrate on their code, and let Windows Azure’s eco-system take care of the underlying architecture for the infrastructure and maintain performance, patching of the operating system and general maintenance in case of a failure.
Based on the SLA’s available in Azure, you must specify at least two instances of each role to assure you meat a satisfied SLA. This will apply to both failures and when you’re servicing your service.
This is to guarantee external connectivity to your internet-facing roles 99.95% of the time.

If you have worked with System Center 2012 – Virtual Machine Manager, you may be aware of the service concept where you can deploy distributed applications, use load balancing and scale out the stateless instances, and specify upgrade domains. Windows Azure has something similar, and provides you with two environments.

The staging environment is where you can test your cloud service before you put it into your production environment. When you are satisfied with your service, you can easily do a VIP swap (swapping the virtual IP address that’s associated with the two environments).

I’ll blog more about Azure over the next weeks.

Thursday, June 7, 2012

Virtual Machine in Windows Azure


Virtual Machine in Windows Azure

Hi all.
If you`re heading over to http://windowsazure.com – you`ll find some new features like Virtual Machine and Virtual Network.
These features are not completely new, but there are some major changes.

The Virtual Machine in Windows Azure is based on templates (extra small, small, medium, large and extra-large) and they now support states! https://www.windowsazure.com/en-us/home/features/virtual-machines/

I`ve stressed over and over that Windows Azure is Platform as a Service. It still is, but they`re open the door to the most flexible cloud service model – Infrastructure as a Service by supporting stateful VMs in their datacenter.

For a developer, this mean you can now migrate your existing applications to Windows Azure, without the need to re-write them to support the PaaS.
I`ve been working with Windows Azure for some years now, and even though you are now able to deploy infrastructure services in Windows Azure, be careful and re-think the scenario once again.
Check out the pricing for example. It`s no doubt that Windows Azure is still preferred when it comes to hosting your applications and leverage the architecture to host web and worker roles, using data storage services like blobs, tables, queues and SQL Azure. But the reason for this major change is based on customer feedback. They don’t want to re-write their applications just to make Microsoft happy. They have some applications that they can’t easily change and modify at the moment, but some parts of their distributed application are ready for Windows Azure. Well, this is actually the solution to place everything in Windows Azure in that specific scenario.

Together with network virtualization you can configure both the front-end IP and the back-end IP for your virtual machines in Azure, so that they can communicate in the cloud – and also with your on-premise resources through the service bus.

Oh, did I not mention that you can run Linux as well? Check it out here: https://www.windowsazure.com/en-us/manage/linux/

More to come – that`s for sure!

Thursday, December 1, 2011

Windows Azure and ISV`s

This blog post is aiming at the ISV`s out there, who are considering (hopefully, or at least, they should be considering) the pure blue cloud – called Windows Azure. An ISV is an Independent Software Vendor. By using Windows Azure as their cloud, they have the potential to decrease operational costs and increase revenues.

We all know that internet applications are the future. Think of it, how many apps on your devices are you actually downloading and installing today? You can access almost everything through well-known standards through the power of the internet.

Windows Azure is meant to be the platform where ISV`s can create their Software as a Service applications. This means that Windows Azure is Platform as a Service.

With a background as a CIO in an ISV company, I`ve seen an increasing interest of having applications available as a SaaS – even Line of Business Applications.

When you`re reading this, you might think that I`m actually saying that you should put all your effort in moving your applications to the cloud. But relax a bit.

Cloud computing in general is not an all-or-nothing proposition. You start by creating small achievable goals and prioritize the applications that are best suited.

This leads us to a hybrid solution that is combining the best from both worlds. With Windows Azure you can store your data in the cloud and run the applications on-premise and vice versa.

To-do list:

1.       Understand your organization

2.       Understand your very own software – what are we making, and to whom?

3.       Understand Windows Azure (PaaS)

4.       Bookmark this blog to get a better understanding of Windows Azure during this month J

I`ll cover the architecture in a technical way later in December, but I want to share some ideas regarding Windows Azure in your environment. Call it a post-decision.

When we started with Windows Azure, I wish I knew more about the architecture and the administration part. But I`ll share some thoughts right here.

Money Money Money

When you decide to take a closer look at Windows Azure, you should start by navigate  to this site: https://mocp.microsoftonline.com/site/default.aspx

Windows Azure is using a pay-as-you-go model. This mean that you`ll need access to a valid credit card and sign up for the required components using a Live ID. You will be billed monthly and that might not be supported by your organization. There are some options here and you can sign up for a larger amount and get onto the Enterprise Agreement. However, you`re more likely to start with a credit card if this is the first project/first time you are touching Windows Azure.

Administration

You sign up and you sign in with your Live ID. To access Windows Azure, you have to logon to the Windows Azure portal: http://windows.azure.com . Windows Azure is not using a role-based model for administration, so if you decide to give another human being access to your subscriptions, you`ll need to think carefully who this person is. The reason is that if you want to add a new user to your subscriptions, it will be a Co-Admin. Yup, full access. Full access means permissions to add, delete, and modify services. This includes Compute, SQL Azure and also Storage.

Stay tuned and I`ll cover the rest of Azure later this month.