The Blog I started on Cloud Computing and Big Data some years ago was steadily increasing in the number of people accessing it. CloudVane is also named one of the Top 100 Blogs on Cloud Computing (Source), which is backed by the number of visits I get per day. To meet the increased traffic, I had to scale up my Blog.
There was no question that I am going to use some kind of Cloud Platform. To date, I used Amazon Web Services. As I am always keen on using the newest technology, I decided to use a Platform as a Service Provider. The reasons for that vary: the most important factor is that I don’t want to take care of VM management and alike. The most important aspect I was looking at is to have a platform that eases administration. Ideally I would have only little administration or no administration.
I looked at the 3 most common platforms: Amazon Elastic Beanstalk, Google AppEngine and Windows Azure. After playing with all 3 platforms, doing load-tests, comparing pricing and looking at the scalability aspects of the platform, I decided to use Windows Azure. To me it seemed to be the most mature platform in terms of PaaS (this is my personal opinion after doing some research and don’t represent the opinion of my employer). Windows Azure Web Sites is very easy to handle and the features it offers are great.
Moving to Windows Azure Web Sites was straight forward: I created a WordPress instance from the templates provided in the Windows Azure gallery. After 2 steps of configuration, WordPress was ready to go. I did the 1-click setup by WordPress. The hardest part of the migration was to move the existing blog entries to the new blog; thanks to the Import/Export capabilities of WordPress, this was done within short time as well. Installing the plugins and so on took some more hours, but it went smooth as well.
In the next posts, I will talk about performance and setup/architecture of WordPress on Windows Azure.
This is the last part of the interview with Mario Szpuszta, who works with Microsoft as Technical Evangelist for Windows Azure. Mario’s answers are stated with [MS], the questions are marked with [MMH]. The Interview is divided into several parts and will be published over the next weeks.
[MMH] Since you do a lot in Europe and your main partners are here as well. What problems do you see in Europe with Cloud Computing?
[MS] I think in Europe you can most often bring it down to legal and compliance. Everyone brings that on the table and very often uses that as arguments for not going to the cloud.
[MMH] Do you think that some of these problems will go away over time?
[MS] Well, I think it will get easier and it started getting easier, already! Cloud vendors are investing a lot in certifications and the like to make sure they are more compliant with regional data regulation and compliance policies. E.g. on Azure we have recently finalized the ISO 27001 certifications for our core services. There were some recent announcements on SSAE 16 (the successor of SAS70) and even HIPAA. The best way to fully understand those is to take a look at the Windows Azure Trust Center http://www.windowsazure.com/en-us/support/trust-center/.
All of these steps make it easier to drive discussions on cloud also in Europe…
[MMH] Now lets talk a little more about the technical details. I know you are more passionate about the technology. So could you give us some basic design considerations for Software Architecture with distributed Systems?
[MS] We could fill a whole interview just with that topic:)
So I need to be short and precise. First of all when it comes to web apps and web services I think most people should start with simple yet effective things. Still I see so many stateful apps and services. It is really hard to scale with those in a load balanced environment. So the first step in my opinion is to make sure that you get to a stateless design and implementation or at least outsource state into a separate state server or cache, for example. In my opinion that is the first big thing to make sure it’s in the blood of your application. That way you really scale across machines and can improve your performance simply by adding additional servers with your bits deployed.
Another design consideration trying to think and design more in an asynchronous fashion. Leverage queues and outsource complex tasks to background processes whenever possible. That really helps boosting the perceived performance of your application. And it truly helps again to distribute load across multiple nodes in your deployment effectively.
Distribution of load in your app and web server tiers is fine, but if you’re still running on one database in the backend that is going to become your bottleneck and can destroy all the efforts you’ve made on the tiers above. So you should think about distributing load by partitioning/sharding your data across multiple databases. When it comes to scalability having many small databases with load distributed across all of them (running on different servers, of course) is way more scalable than having one really big database that needs to deal with the whole load.
I think these are the practical things you can start thinking about, immediately. Of course there are many other theories that are applied by the truly big internet companies such as Facebook and the like. Many of those large scale, global players think about CAP and BASE instead of ACID transactions when it comes to writing back to the store. Just look at http://en.wikipedia.org/wiki/CAP_theorem if you want to learn more. I don’t cover them in detail because that’s (a) too complex and (b) in my opinion not relevant for most of the traditional ISVs as it goes way to far for many of them. I think most of us are really a big step forward by applying principles I mentioned before: stateless, work in load balanced environments, distribute load across multiple databases and the like. These are practical and most people can implement them sooner as compared to completely rethinking about how you deal with transactions in your system. Of course, if you want to have millions of customers on a global basis with thousands of concurrent users then you should rather think early about CAP and BASE instead of too late…
[MMH] That actually sounds like a huge effort to bring applications to Azure. How can people deal with that?
[MS] One simple thought I tend to follow: stay simple, be pragmatic and work on an architecture that is good enough for your business goals. If you want to address millions of customers then you should rather think about all of these changes and principles I mentioned before sooner. But if you want to stay, let’s say in your region, and your customer base should increase but not up to the millions or your scenario is for specific target groups then many of these CAP and BASE things are just over-engineering. As you can see – the decision on how far you need to go depends on your business goals and business plans;) And in the context of those I tend to stay pragmatic and simple…
[MMH] A final statement: what excites you most about Cloud Computing?
[MS] For me that is super-easy and comes down to one specific point: cloud computing and the principles that are being established with cloud computing brings business and technology closer together than I’ve seen it ever before. Just to give you one example: from a pure technical point-of-view in the past it was really hard, if not impossible, to differentiate an effective architecture from a less effective architecture. Of course I know many people will argue different, but at the end of the day it’s all about opinions in the world of architecture very often. In the context of cloud I can do that much better: an effective architecture leads to less monthly cost for operating an environment in the cloud as compared to a not so effective architecture. Of course that always has to be seen in the context of the business goals and is a bit simplified, but at the end of the day that’s what it is in my opinion. Breaking efficiency of architecture down at that level has been tremendously hard in the past – and now we’re moving into that direction. That excites me most!!
This is the second part of the interview with Mario Szpuszta, who works with Microsoft as Technical Evangelist for Windows Azure. Mario’s answers are stated with [MS], the questions are marked with [MMH]. The Interview is divided into several parts and will be published over the next weeks.
[MMH] So a major feature was the persistent VM Role. This is basically Infrastructure as a Service. Why is Microsoft now also providing an IaaS Platform?
[MS] The official name is Windows Azure Virtual Machines. Well, we decided to provide IaaS capabilities to make it easier for many companies with legacy applications to also move to the cloud. Still the primary strategy is PaaS as we believe that is the most effective way for operating your own applications in the cloud. But for many companies and ISVs it is hard to make the direct move to PaaS with all the implications. IaaS enables them to move to the cloud faster and think about approaching PaaS in a step-by-step fashion.
There’s one thing I’d like to highlight specifically: we put really lots of efforts to enable mix-solutions of IaaS and PaaS deployments. That essentially enables customers to use PaaS and benefit from the advantages of PaaS wherever possible while at the same time leverage IaaS where PaaS is not easy to implement short time and integrate those two world together. One example: let’s assume you have built a web application with a SQL Server database in the back-end. Further assume in that SQL database you make heavy use of SQL Server features such as .NET integration by writing most of your stored procedures in .NET using SQL CLR. When moving that solution to Azure you’ll quickly notice that SQL CLR is not supported in Windows Azure SQL Databases (as some other features aren’t supported). Now you have the choice: wait with your path to the cloud until you’ve re-written all that stored procedures. Or move to the cloud now, leverage PaaS for your web applications and put the SQL database in a full SQL Server running in Windows Azure Virtual machines connected with your PaaS deployment through virtual networks. That is a pretty powerful scenario! By leveraging PaaS for the web sites you don’t need to take care of managing those web servers anymore (patching, updating, load balancing) thus saving lots of operational overheads. At the same time you can re-use your existing efforts in the SQL database (your SQL CLR procedures) through operating SQL Server in a Virtual Machine on Azure that is in the same virtual network as your PaaS instances.
And exactly these are the scenarios we’re thinking about to support by introducing Virtual Machines. In our opinion it’s still all about the app and the service you want to provide and IaaS will make the on-boarding into the cloud much easier.
Of course there are some other scenarios we are thinking about when it comes to IaaS. One thing is, for example, the installation and operation of demo environments or test environments. Such environments can be setup quickly through IaaS in the cloud without big investments upfront and without waiting until new hardware and software orders are shipping to your company. That is of course another area where we see tremendous benefits by offering IaaS…
Want to read more about the interview? Subscribe to the Newsletter to get updates when new topic is available!
[MMH] I hear a lot of people saying that the persistent VM Role is made for SharePoint (among others, of course). What opportunities do you see with Azure and SharePoint 2013, as there is now an app store? What great things are now possible for ISVs?
[MS] SharePoint is definitely one scenario we’re addressing with Azure Virtual Machines. The other three primary scenarios we’ve been testing for are SQL Server and Active Directory. So you can operate all three on top of Virtual Machines on Azure. Of course in addition to those you essentially can operate any other software you can install on either Windows or Linux (these are the guest operating systems we do support with Azure Virtual Machines). But SQL, AD and SharePoint are specifically tested by us and we will provide guidance for how-to best operate those and where the limits of Azure VMs will be with regards to operating those (in terms of load, performance etc).
[MMH] Another big release this year was Windows 8. Are there any great opportunities for Developers and ISVs to utilize Windows Azure?
[MS] Windows 8 is going to be a big opportunity for service providers that do offer a cloud-based version of their product. For me it’s really a big channel to become well-known with your service and win new customers in a large scale. If you build an app for the market place you will get visible on millions of devices in the upcoming year thus introducing a big opportunity for you as a software vendor. That way Windows 8 is a perfect front-end for a cloud based offering and a great marketing-channel. I’d recommend everybody to leverage that opportunity!! For developers we do also offer specific SDKs for Windows 8 that make the integration between Win8 and Azure a peace-of-cake and leverage services such as notifications and the like. So also from that perspective it’s looking really good and it’s just going to be a fun experience for developers building new kinds of apps on-top of their services;)
[MMH] Talking about the future; do you see that the Worker and Web Roles (Compute) will become commodity? What will it mean to customers?
[MS] In my personal opinion (yes, my personal opinion) I would guess that compute power in the cloud will become a commodity service long-term. I think compute will be something that everybody expects to get from the cloud for a fairly cheap price. That of course brings up the question how cloud-vendors such as Microsoft or Amazon will still be able to make money out of cloud services because essentially at the moment compute-power is the biggest source of income for them!? And here I think it’s going to come from higher-level platform services. Platform services that do offer true functionality instead of just providing infrastructure. Just like, for example, Windows Azure Media Services where you get e.g. encoding services and you will pay (as soon as preview is over;)) for the number of GB you encoded. But this is my personal opinion, and we’ll see if that becomes a truth or not:)
This is the first part of the interview with Mario Szpuszta, who works with Microsoft as Technical Evangelist for Windows Azure. Mario’s answers are stated with [MS], the questions are marked with [MMH]. The Interview is divided into several parts and will be published over the next weeks.
[MMH] Hi Mario, Thanks for your time to do this interview with you. Can you briefly explain the audience what your job with Microsoft is about?
[MS] Hey Mario! It’s great to get the chance for an interview with the Cloud Computing Journal and to meet you for that purpose again. Currently I am working as a Platform Strategy Advisor and Technical Evangelist for the EMEA Windows Azure ISV Incubation Team. In my role I do work with independent software vendors (ISV) to build new or migrate their existing products to cloud-based offerings running on top of Windows Azure. I work with the ISVs from both, a business as well as a technical perspective to help them being more successful in both areas! It’s indeed a very interesting job content-wise as we typically do see lots of different business scenarios our ISVs are thinking about as well as of course many different types and styles of architecture applied to their products.
[MMH] We see some Applications are fast when it comes to Cloud adoption, others are rather slow. What types of Applications do you see moving to the Cloud faster than others?
[MS] It’s hard to say, the world is very versatile. But reflecting a bit on the work we have done in the past year I see some characteristics with those ISVs who are able to move with their offerings to the cloud faster than others.
In case of ISVs you always have to look at their existing product portfolio. In that case I’d say if they have a big product portfolio that exists for a while now and they want to move with those products to the cloud it takes rather longer. It’s pretty clear because they need to look at their portfolio first and foremost from a business perspective. They need to see and learn, if and how they need change pricing models, payments, marketing and sales channels etc. Then there’s of course the technical side. Products that are on the market for a while do have some legacy that might be hard to be migrated to cloud-based environments. Of course Infrastructure-as-a-Service might help here but then it brings up the question if that’s really the most efficient way from a business perspective.
Then I’ve seen ISVs that complement their products with small, cloud-based add-ons. This is an extremely powerful way of moving to the cloud for several reasons in my opinion: it helps starting fast and small with a move to the cloud, it brings value to the existing customer base, it potentially will attract new customers and it can be done with a lower level of risk as opposed to migrating the existing product portfolio completely. Finally also for the technical teams it’s easier as that way they can get familiar with the cloud platform they’ve chosen in small steps while at the same time gaining valuable insights for eventual future migrations of existing products.
Finally there are startups. And here I can’t say which apps move faster to the cloud than others. Many of them are really fast in moving to the cloud as they most often start right away from the cloud.
Of course being successful is another topic…
Want to read more about the interview? Subscribe to the Newsletter to get updates when new topic is available!
[MMH] Referring back to my last question; what in your opinion makes some of those Applications more successful than others?
[MS] Well, there are many factors that are in the play for influencing success. Definitely I don’t know all of them but those cases I’ve seen being successful as opposed to not so successful ones there were a few differentiators:
Maybe apply different, broader approaches for sales and marketing.
Going international and global instead of staying local.
Go live fast and constantly deliver new, small features in short time intervals.
Let me try to find an example for each of the points I’ve mentioned. For example in Switzerland I’ve been working with a start-up where the investor itself is a marketing agency. Of course that’s great luck for them, because that agency is really good. Right before they went even live with a public beta they put an announcement-page live and applied Twitter, Youtube, Facebook and the like for true global digital marketing. It’s really cool as you find fairly funny yet professional videos on Youtube about their online service offering. Smart usage of wording and SEO got viewers to those videos and finally attracted people to sign-up quickly when they went live last spring with their offering. I think it’s really important to go beyond the traditional sales and marketing channels and approaches and apply such cool, creative ways. Of course that’s said easy. I mean, I would not be able to do that either. So you’d better work with a well-chosen agency that is good with such things.
Looking at Austria we’ve been working with a number of ISVs in very similar environments. For some of them it was too hard to go international or even global while others did. Although there were several reasons to not go international or global for some of those ISVs. But what I can definitely observe is that those who did the jump to the international market and that built up relationships with partners in other countries that help them selling their solution are more successful. It sounds obvious, but one thing these companies did when going international is to work with partners in the countries where they want to enter. Local resellers that do understand the culture, the local people and their expectations.
Finally one example for the last case I mentioned above. A story from a startup-ISV who entered in a very traditional branch with their software – logistics. In the country where they started this market was ruled by a small number of very well-known, traditional ISVs. They way how they put those traditional ISVs under pressure and really started becoming a true, important and competitive player on the market was simple. Go out with the fundamental set of features very fast with aggressive prices (cloud enabled them to offer aggressive prices through the low initial investment costs). Then deliver additional features in nearly a monthly basis. Small features, not big junks. But in a way where when their customers refreshed the browser the next time they just spotted a new functionality in their menus. That is pretty impressive and it truly helped them moving forward on the market fast and successful. Now, only less than 2 years after they’ve launched they are a known player on the market. I was so impressed by this approach – really cool.
Of course these are just some examples. Maybe others have different opinions on what makes someone successful or not. And these are for sure not the only factors, but in my opinion these are factors that do matter!
[MMH] There was a major release on Windows Azure lately. Can you give us a brief overview of the most exciting features and news in the new release?
[MS] Recently, in June 2012 we released the 2012 spring release of Windows Azure. Compared to the previous release in December 2012 it was truly a big step forward. Apart from many details such as load balancer probes, dedicated caching or new Visual Studio tools with side-by-side support for multiple SDKs there were a number of new services that we introduced.
First and foremost many people definitely realized, that we have introduced Windows Azure Virtual Machines, which is essentially true Infrastructure-as-a-Service on Windows Azure. It was formerly called persistent VM role because, obviously, the hard disks are now persisted across the lifetime of single instances or machines (as it should be for IaaS).
Together with Virtual Machines we introduced Virtual Network capabilities. These allow you to (a) create your own, virtual network for compute instances running in the Windows Azure data center incl. capabilities such as a private DNS and (b) enable you to create VPN tunnels between your virtual network in Azure and professional VPN routers such as those from CISCO (that is just one example of a vendor we do support). It’s fairly cool as that allows you to also build mixed environments where you combine Platform-as-a-Service with IaaS or even you on-premises services.
Then we have Web Sites, an offering for all of those that do build typical web site solutions with ASP.NET, PHP, node.js or Python for example. Web sites is a highly scaleable PaaS offering for typical web applications that do have the web app tier directly connecting to the database. So whenever you, for example, just have a PHP web site that directly connects to MySQL as a database and not through some kind of middle-tier components or app servers, then web sites is for you.
Did I say MySQL? Yes – indeed. Web Sites allow you to work with both, Windows Azure SQL Database as well as MySQL. Both available as a service where you just request the database and don’t care about the database server infrastructure at all. But where’s that MySQL-as-a-service coming from? Well, that’s another thing we introduced alongside with the spring release. In the past year we formed a number of what we call “platform gap partnerships” for Azure. One of that platform-gap partners is ClearDB (www.cleardb.com). ClearDB offers MySQL-as-a-Service on Windows Azure. So they do take care of operating MySQL in a highly available fashion in our data centers and allow you to just consume certain sizes of MySQL databases. And Azure Web sites are using that service from ClearDB to provide the MySQL databases. Another of those platform gap partners, for example, is AppDynamics. They do provide a monitoring and diagnostics service that can be used together with Azure-based solutions every developer can build. These are just two examples and we’re working with others to continue improving in areas where we don’t deliver services and components by ourselves.
Alongside with these platform gap partnerships we also invested a lot into the SDKs as I mentioned before. One thing I’d like to highlight here is the availability of an Azure SDK for Python. That SDK now makes it easier for Python developers to leverage some of the Windows Azure services, especially storage including BLOB, Table and Queue as well as Service Bus messaging.
Then there’s Windows Azure Media Services. Although announced a few weeks earlier, it belongs to the spring 2012 release. Media services is a platform that can be leveraged by all parties that do require professional media content production pipelines. In it’s first release it comes with an encoding service that developers can use to create different formats of videos to be provided to a variety of devices through their application. In addition the current preview of media services comes with on-demand streaming capabilities.
Finally we also announced Windows Azure Active Directory which will become the primary identity management service in the cloud. The formerly known Access Control Service (ACS) that is used to enable federated authentication across different security domains using standardized protocols such as WS-Federation or OAuth is still available and now is positioned as a part of Windows Azure AD. While ACS of course is GA released, Windows Azure AD services such as graph API are still in preview. Also Virtual Machines and Web Sites are still in preview.