📜 ⬆️ ⬇️

Choosing Windows Azure: Is the platform suitable for your application?

image

If you are going to use Windows Azure to host an application, the question arises: will the platform be able to provide the appropriate level of service for this application and satisfy business requirements? We will try to answer this question by considering the following topics.


The main task is to choose a platform for the application to work and determine the capabilities of Windows Azure. In most cases, you can use links to additional resources to analyze the application and decide whether to move it to the cloud.
')

Understanding the benefits of Windows Azure


Before determining whether an application can work in Windows Azure, it is necessary to consider the main advantages of the platform. A full list of benefits can be found in the Windows Azure documentation . There are also many articles and videos about Windows Azure. It is recommended to study the document Cloud Optimization - Expanding Capabilities, while Aligning Computing and Business Needs (Cloud Optimization - Empowerment in Harmonizing Computing Resources and Business Requirements).

The benefits of the platform extend the ability to manage equipment and infrastructure resources. Consider some of these benefits, and then we discuss their use cases.

Resource management


When deploying applications and services in the cloud, Windows Azure provides management of virtual machines, network bandwidth and other infrastructure resources. The application is automatically allocated new virtual machines when disconnected due to hardware updates or unexpected errors.

When you switch to a new platform, you only pay for the components and resources you use. This allows you to significantly reduce the initial costs compared with the local deployment. This option is very convenient for small companies. Such organizations do not have the necessary resources and local specialists for local deployment to create and maintain a data center. The automated infrastructure services provided by Windows Azure remove barriers to application deployment and management.

Dynamic scaling


Dynamic scaling is the ability to expand and reduce the application, depending on the allocated resources. It is also called elastic scaling . Before proceeding to the description of the principles of scaling, you need to understand the basic architecture of a Windows Azure application. In Windows Azure, the user creates roles that collectively implement the application logic. For example, one web role can provide an ASP.NET front-end server for an application; another worker role (or several roles) can perform the necessary tasks in the background. Each role is hosted in a Windows Azure data center on one or more virtual machines, called role instances. All requests are distributed between these instances. For more information about roles, see The Windows Azure Programming Model .

As resource demands increase, new role instances can be created that execute application code. These instances will handle the increased load. When you reduce needs, you can remove instances of roles so as not to pay for unnecessary computing resources. This approach differs significantly from local deployment, which requires redundant hardware to handle peak loads. In cloud deployments, scaling is not automatic, but is easily done using a web portal or a service management API. One of the ways to automatically scale Windows Azure applications is described in the article Dynamically Scaling an Application . We also recommend that you read the Autoscaling Application Block article (Functional block for automatic scaling of an application) written by the Microsoft team for creating templates and techniques.

Windows Azure allows you to use resources in accordance with the current load, even if the application needs in computing resources are often changing or unpredictable.

High availability and reliability


Windows Azure is a platform for high-availability applications. It provides secure data storage and access via storage services or a Windows Azure SQL database.

First, Windows Azure provides high availability of computing resources when there are multiple instances of each role. Role instances are tracked automatically. Automatic deployment of a new instance of the role allows you to quickly respond to restarts or equipment failures.

Secondly, Windows Azure provides high availability and reliability of stored data through the use of one of the storage services. Windows Azure Storage Services replicates all data to at least three different servers. Similarly, the SQL database replicates all data, ensuring availability and reliability.

Other Windows Azure services also provide high availability. For more information, see the Windows Azure SLA (Service Level Agreement for Windows Azure) article.

Target scenarios that take advantage of Windows Azure


With knowledge of the benefits of the Windows Azure platform, you can begin to look at the best scenarios for working in the cloud. The following sections provide some typical examples of using Windows Azure as an ideal solution for implementing specific workloads and tasks. Windows Azure Design Patterns Video ( Windows Azure Design Patterns) demonstrates the scenarios below and provides an overview of the capabilities of the Windows Azure platform.

Council This document focuses on application deployment scenarios. However, you need to understand that you can select and use individual Windows Azure services. For example, if you think that using blob storage will help solve the problem with the application, it is likely that the rest of the application will remain outside the cloud. This type of application is called a hybrid application and is discussed below.

High Availability Services


Windows Azure is ideal for hosting highly available services. Consider an online store deployed in Windows Azure. Since the online store is a source of profit, it is very important to ensure its regular work. To do this, the Windows Azure Data Center monitors the service and automatically manages the instances. In addition, the online store should respond promptly to customer requests. In Windows Azure, this is achieved using the elastic scaling feature. In the period of peak activity of buyers, new instances are connected, which handle the increased load. The online store should also eliminate the possibility of losing orders and failures of processing placed orders. Windows Azure storage and SQL database provide high availability and reliable storage capabilities, ensuring the integrity of order status information throughout their lifecycle.

Periodic workloads


Windows Azure is the best solution for periodic workloads. Some applications only need to be run from time to time. A simple example is a demonstration or service application that will be used only for a few days or weeks. With Windows Azure, you can easily create and deploy such an application, as well as make it publicly available. Once the goal is reached, the application can be removed and paid only for the time during which it was deployed.

Note. To avoid paying for computer time, you must not just suspend the application, but delete the deployment.

Consider a large company in which, at the end of each month, a complex analysis of data is carried out to evaluate sales figures. Despite the fact that this operation is resource-intensive, it takes no more than two days to complete it. In the scenario with a local application, the servers required for this work will not be fully loaded most of the time. When using Windows Azure, an enterprise only pays for the time during which the analytic application is running. The application architecture must provide parallel processing. In this case, the horizontal scaling capabilities of Windows Azure allow you to create a large number of working role instances in order to solve more complex tasks in a short time. In this example, you need to use code or script to automatically monthly deploy the application at the right time.

Unpredictable growth


The goal of any company is rapid and steady growth. However, in the traditional localization model, managing growth is very difficult. If the expected development of the company does not happen, the funds will be spent on the maintenance of inefficiently used equipment and infrastructure. But if the growth rates are significantly higher than planned, load handling can be a daunting task, leading to a loss of potential profits and a decrease in the quality of customer service. Small companies may face the problem of lack of initial capital for a quick start and dynamic development.

In this situation, the ideal solution is Windows Azure. Consider a small sports news website that makes a profit from advertising. The amount of profit is directly proportional to the amount of traffic generated by the site. In this example, the company has a limited initial capital, with no funds to install and run its own data center. Having created a website on the Windows Azure platform, you can easily deploy an existing solution as an ASP.NET application that uses an internal SQL database to store relational data and blobs for images and video. If the popularity of the website grows, the enterprise can increase the size of the SQL database or the number of instances of web roles for the front-end servers. Blob storage in Windows Azure has built-in scaling capabilities. As the number of visits decreases, unnecessary instances can be removed. Since the company's profit is proportional to the volume of traffic to the site, Windows Azure allows you to start small, grow quickly and reduce risks.

With Windows Azure, you can fully control the cost of computing resources. To create an automatic scaling mechanism that forms or deletes instances based on custom rules, use the Service Management API (Service Management API) or Autoscaling Application Block (Auto Scaling Function Block) . You can change the number of copies based on a predetermined value, for example, allocate four copies for use during working hours and two copies for use during non-working hours. You can also leave the number of copies the same and increase it manually on the web portal as the load increases. Windows Azure allows you to make flexible decisions that match your business needs.

Workload Peaks


This is another workload pattern that requires flexible scaling. Consider the previous example of a sports news website. Even with the continuous development of business, the possibility of temporary leaps and bursts of activity remains. For example, if another popular news company places a link to this website, the number of visitors to the website may increase dramatically in one day. In a more predictable scenario, activity on the site increases during sports events and championships.

An alternative example is a service that processes daily reports at the end of the day. At the end of the working day, each department sends a report, which is processed at the company's head office. Since the process runs only for a few hours, it also requires flexible scaling and deployment capabilities.

Windows Azure allows you to temporarily scale an application to handle peaks of workload and reduce resource use at the end of a period of bursts of activity.

Infrastructure unloading


As shown in previous examples, most of the common cloud scenarios take advantage of the flexible scaling of Windows Azure. However, Windows Azure can also reduce costs by using applications with invariable workload patterns. Managing your own data center is a costly process, especially if you take into account energy costs, staff costs, equipment purchases, software licensing and site maintenance. In addition, it is difficult to determine the relationship of costs with individual applications. Windows Azure helps reduce total costs and make them more transparent. Cloud Optimization - Expanding Capabilities, While Aligning Computing and Business Needs (Cloud Optimization - Empowerment in Harmonizing Computing Resources and Business Requirements) , describes the standard local allocation costs and the possibilities for reducing them using Windows Azure. Windows Azure also has a built-in calculator for determining individual costs and total cost of ownership (Total Cost of Ownership, TCO). This allows you to assess the potential for reducing costs when implementing Windows Azure. Links to calculators and other pricing information are available on the Windows Azure website .

Scripts not using Windows Azure features


Not all applications should be transferred to the cloud. Only applications that support Windows Azure functionality will work in the cloud.

An example is the personal blog website for friends and family members. On this site you can post articles and photos. To implement this project, you can use Windows Azure. However, the use of this platform is not recommended for the following reasons. Even if a small number of visitors come to the site every day, the processing of these requests will require the presence of a constantly running role instance (note that to execute the Windows Azure SLA agreement on computing resources you need two instances). The cost of cloud services Windows Azure depends on the amount of time during which each instance of the role is in an expanded state (in the Windows Azure nomenclature, this is called machine time ). Suspending an application does not mean suspending consumption (and payment) of computer time. Even if during the day only one user visited the website, payment is charged for 24 hours of machine time. In a sense, this is the leased space in the virtual machine on which the code is running. At the time of this writing, the work of even one of the smallest instances of a web role costs $ 30 per month. And if you store 20 GB of images in the BLOB storage, you need to add another $ 6 to this amount to pay for storage, transactions and bandwidth. The monthly cost of hosting this type of site in Windows Azure is higher than the cost of a simple third-party site hosting solution. More importantly, these sites do not require resource management, dynamic scaling, high availability and reliability.

Windows Azure allows you to select only those options that meet current business needs. For example, you may find that in some instances certain data cannot be placed in the cloud due to legal or legislative restrictions. In such cases, it is recommended to deploy a hybrid solution and place specific data or parts of the application on the Windows Azure platform that are not confidential and require a high level of availability.

There are other scenarios that are not suitable for Windows Azure. With knowledge of the strengths of Windows Azure, you can easily recognize applications or portions of an application that cannot take advantage of this platform. This will allow you to develop a common solution that most effectively implements the capabilities of Windows Azure.

Evaluation of architecture and development


To assess the possibility of transition to Windows Azure is not enough confidence that the application or business goals can be implemented in the cloud. It is also important to evaluate the features of the architecture and design of an existing or new application. To do this, you can use the Microsoft Assessment Tool (MAT) for Windows Azure. When working with this tool, the user will be asked to answer questions in order to identify the types of problems that may arise during the transition to Windows Azure. Next to each question is the link See full consideration, by clicking on which you can get more information about this area in Windows Azure. These questions and additional information will help identify possible changes in the project of an existing or new application in the cloud.

In addition to using the MAT tool, you must have a clear understanding of the Windows Azure platform, including general design patterns for the platform. Start with watching videos about Windows Azure or reading introductory technical documents such as The Windows Azure Programming Model . Then explore the services available in Windows Azure and think about how to use them. An overview of Windows Azure services can be found in the MSDN documentation .

A description of all the possible factors and ways to reduce risks for Windows Azure solutions is beyond the scope of this document. However, the following table describes four factors to consider when designing, as well as links to additional resources.
Region
Description
Hybrid solutions
Moving complex legacy applications to the Windows Azure platform can be challenging. It is sometimes difficult to ensure compliance with legal regulations governing the storage of certain types of data in the cloud. However, you can create hybrid solutions that link services hosted in Windows Azure with local applications and data.

There are a number of Windows Azure technologies that support this feature, including the Service Bus , the Access Control Service, and the Windows Azure Connect component . On this topic, you can view the video (October 2010): Connecting Cloud & On-Premises Apps with the Windows Azure Platform (Connecting cloud and local applications on the Windows Azure platform) . The Hybrid Architecture Guide, based on actual implementations in client companies, see Hybrid Reference Implementation Using BizTalk Server, Windows Azure, Service Bus and Windows Azure SQL Database (Hybrid Implementation with BizTalk Server, Windows Azure, Service Bus and Database Windows Azure SQL) .
Condition management
When moving an existing application to the Windows Azure platform, one of the most important factors should be taken into account, namely state management. The state of many local applications is stored on the hard disk. Other features, such as the default ASP.NET session state, use the local computer's memory resources to manage the state. Despite the fact that the roles have access to the local disk and memory of the virtual machine, Windows Azure distributes all requests between all instances of the roles. In addition, an instance of a role can be stopped and moved at any time (for example, if you want to update the computer on which the role instance is running).

This dynamic management of running role instances is important for the scalability and availability of Windows Azure. Therefore, application code in the cloud must provide remote data storage and status using services such as the Windows Azure storage service or SQL database. For more information about storage options, see the Store and Access Data section of the Windows Azure website.
Storage Requirements
SQL Database is a relational database solution in Windows Azure. If you are currently using SQL Server, the transition to the SQL database should be easy. If you are migrating from another type of database, you can use the SQL Server Migration Assistants to help you with this process. For more information about migrating data to a SQL database, see Data Migration to Windows Azure SQL Database: Tools and Techniques: Migrating Data to a Windows Azure SQL Database: Tools and Techniques .

Windows Azure Storage is a reliable, high-availability and scalable storage system. One of the typical design patterns is an effective combination of a SQL database with tables, queues, and Windows Azure blob objects. An example would be using a SQL database to store a pointer to a blob in Windows Azure storage instead of storing a blob in the database itself. This is an effective and economical way. For a discussion of storage options, see Data Storage Offerings on the Windows Azure Platform (Windows Azure Platform Storage Suggestions) .
Interoperability
The easiest application to develop or migrate to the Windows Azure platform is a .NET application. The Windows Azure SDK and Visual Studio tools greatly simplify the process of creating Windows Azure applications.

But what about using open source software or third-party tools and development languages? The Windows Azure SDK has a REST API that is compatible with many other languages. Of course, we should not forget about the problems, the solution of which depends on the chosen technology. In some cases, you can use an isolated .NET project in Visual Studio and overload the Run method for a role. Microsoft provides users with Windows Azure SDKs for Java and Node.js for developing and deploying applications. There are also community-developed SDKs that are compatible with Windows Azure. The Ineroperability Bridges and Labs Center website (Interaction Bridges and Laboratory Center) is one of the best resources in this area.

Deploying projects using open source software can also be a daunting task. For example, the following article discusses deployment options for Ruby applications in Windows Azure: http://blogs.msdn.com/b/silverlining/archive/2011/08/29/deploying-ruby-java-python-and-node-js- applications-to-windows-azure.aspx .

There are many different languages ​​available for the Windows Azure platform. Before assessing the possibility of placing an application in Windows Azure, you must select a platform option in the desired language.
To learn about potential deployment problems and get acquainted with other solutions, it is recommended to study the materials on application migration to Windows Azure. The Microsoft Pattern and Practice Team has published the Moving Applications Migration Guide for the Microsoft Windows Azure Platform on Microsoft Windows Azure . For more migration materials, see the Windows Azure website: Migrate Services and Data (Migrate Services and Data) .

Summary


Windows Azure is a platform for creating highly scalable, accessible services and managing them. You only pay for the resources you use. You can scale them at any time — grow or shrink. It does not require the purchase of equipment or related infrastructure. If you need a platform to increase flexibility, reduce costs, or reduce risk, Windows Azure is an ideal option for hosting applications. Having decided to use the platform, you can consider specific features of the architecture and choose new scenarios for developing, migrating, or deploying hybrid applications. After conducting such an analysis and obtaining the necessary information, you can effectively use Windows Azure to achieve business goals.

For more information about the Windows Azure platform in Russian, you can find on the portal azurehub.ru

Source: https://habr.com/ru/post/155617/


All Articles