Approaches for Designing and Implementing Applications in Microsoft Azure Hybrid Scenarios - 1
If you’re like most organizations today, aspiring to provide the best of benefits and values while optimizing your costs, cloud could be a core part of your IT strategy. Consider your line of business applications; there could be various reasons for you to consider cloud as a model for your applications. Among those reasons would be scalability, cost-efficiency, and flexibility of running application in various parts of the world to optimize for network performance or compliance. Now, some of the obvious questions are whether we run an existing on-premises application in Azure as it is? How do we decide whether the workload is really suitable for cloud? How about licensing and security? What about the cost?
I will discuss the key considerations for different approaches here and address the different approaches to designing and implementing applications in Microsoft Azure Hybrid Scenarios part-2 of this blog
Any application may run in Azure but it should meet the expectations and fulfill the needs that led you to consider cloud in the first place. Otherwise, chances are that the application will be brought back to on-premises or will fail to meet the purpose of moving to cloud. This makes it adequately clear that it is critical to design and model your deployment with a hybrid cloud model. This will mitigate the challenges and enable you to take advantage of the right model rather than having a model that is just trendy. This blog discusses these key aspects and design considerations for Microsoft cloud hybrid scenarios.
Different kind of cloud models
If we look into on-premises application deployment scenario, we are responsible for everything from network, storage, servers, virtualization, operating systems (OS) and applications. However, business users are primarily interested in the application and the data. Microsoft Azure cloud platform offers solution to this through different models – the technology stack is managed by Microsoft depending on the model and the complexity is hidden from the users. The user can then focus on the application rather than the underlying technologies. Figure 1 depicts different Azure cloud models.
Key design considerations
Though technology understanding is key, this does not decide the design. Good understanding of usage scenario is crucial for a successful design. So, let us take a look at some important aspects that need to be considered while designing for a cloud scenario:
- Users – If the user experience is not good ultimately, the objectives would not be met! Therefore, understanding the number of users; their frequency of access; spread by geographical location; how they access – internally or externally, timings of access, and so on are key data points that will decide the design for network, high availability, disaster recovery, and other critical aspects
- Licensing– This is another important consideration for the design, and it is going to be based on the cloud model. For example, in the case of Infrastructure as a Service (IaaS) model, the customer should take care of the licensing. However, in the case of Platform as a Service (PaaS) and Software as a Service (SaaS) the service comes with licenses. Costs, versions, and the usage of licenses on the cloud are aspects that needs to be discussed with your cloud/application software vendors and understood in detail. Understanding the licensing model is critical
- High Availability (HA) – High Availability means eliminating a single point of failure. Whether it is your SQL Server or web server, you would want it to be available for 99.999% of the time. However, this will double the cost because we need, at a minimum, two of everything in case you go with the IaaS model. In case of PaaS, this may be well taken care of by the provider and the pain of setting up and maintaining will be eliminated – so will be the costs. It is important to ensure seamless user experience regardless of the state of the underlying resources or components that make up the application. In a cloud ecosystem, there are points only for serving users, not for maintaining servers. This makes HA a key point for design consideration
- Disaster Recovery (DR) – Design Recovery is determined by the business importance of the application and the costs involved could at times be prohibitive. So, a lesser used application of lower importance does not need an expensive DR. Normal manual recovery processes should suffice. For example, this process can involve creating a virtual machine, configuring it and restoring the backup. However, for critical systems we can have automated recovery or even have a continuity strategy by spreading the underlying infrastructure of your applications on multiple data centers or regions. The key parameters to be considered for DR, which impacts the design are RTO (Recovery time objective) and RPO (recovery point objective). Determine how fast that the system needs to be up and running after an outage. The recovery point defines how much data the business is prepared to lose. Together, this will determine what your design should be
- Cost – Every service that you use in cloud incurs a cost – be it computing, storage, network, bandwidth, or any other IaaS or PaaS services. Therefore, cloud is not going to be a cheaper solution unless you design it to efficiently consume the services. For example, instead of provisioning a high computing VM, which is required to handle a peak workload, you could opt for a normal VM that can scale up or out on peak times. This will make a world of difference when it comes to cost. However, will your application support a scale out architecture? Building capacity assessment periodically should be included in your cloud practice to ensure optimized spending in cloud and thus bring in financial efficiency and user experience
- Security and Compliance: Security and Compliance on cloud is probably the biggest concern of stakeholders. In case of IaaS model, Microsoft responsibility for security ends at the virtualization layer. We must take care of it from the OS level, and in case of PaaS, anything above the OS level the responsibility falls on users. Even in PaaS, access to your environment has to be addressed by you! Microsoft will deliver and manage the virtualization, server, storage, and networking in a far better way than we can do it in our DCs. Microsoft has taken care of four of nine layers of security and the rest of the layers of technology are our responsibility. Figure 2 gives you an idea of the responsibility shared by each stakeholder.
Read part-2 of this blog to know more about different approaches to designing and implementing applications in Microsoft Azure Hybrid Scenarios