Application Security Testing: An Integral Part of DevOps
Cloud Computing is a buzzword these days. It may be defined as a phenomenon that promises to increase business agility by increasing the speed with which applications are deployed while lowering the costs. Note that Cloud Computing is not a technology revolution. Rather, it is a business and process evolution. The Microsoft Azure platform is Microsoft's Framework used for Cloud Computing that provides a wide range of internet services that are consumable from both on-premises environments and even the Internet. The most important benefits of using Cloud Computing Infrastructure include the following: Reduced Cost, Scalability, Flexibility and Efficiency. This article discusses the concepts of Cloud Computing and shows how you can leverage the Microsoft Azure Services Platform and become an Azure Developer.
Cloud Computing - A Paradigm Shift?
Cloud Computing is the hottest, popular and often misunderstood topic in IT these days. Cloud Computing is now well set to transform the way applications are built and deployed--it promises reduced cost of maintenance, reduced complexity and better scalability and greater flexibility. The need of a huge initial expenditure for designing, developing and deploying applications is now eliminated. Business houses can now run applications on a Cloud Computing environment thereby moving the capital expenditure to operational expenditure, i.e., the business houses can now design, develop and deploy more and more applications based on the demand. How does Cloud Computing model differ from its earlier counterparts? Well, you can simply say that Cloud Computing is a model that uses Information Technology as a service over a network. These services are encapsulated and are made available over the network using APIs. This new paradigm offers you a platform that can be used to design, develop and deploy applications in the cloud without the need of a high initial cost.
- An abstract execution environment
- Support for a Shared file system
- A platform for resource allocation and programming
Microsoft defines Azure as: "Windows Azure is a cloud services operating system that serves as the development, service hosting and service management environment for the Windows Azure platform. Windows Azure provides developers with on-demand compute and storage to host, scale, and manage web applications on the internet through Microsoft datacenters." Reference
Here is a list of some popular Cloud Computing Providers:
- Amazon Web Services
- Microsoft Live Mesh
- Google Apps
Cloud Computing - The Delivery Models
Here are the three major delivery models that can be used to provide support for Cloud Computing:
- Cloud Software as a Service (SaaS) - This is a delivery model that provides an infrastructure where you have a single instance of a software running on the cloud but serving multiple end users or clients. The most widely popular example of this type of a model is SalesForce.com
- Cloud Platform as a Service (PaaS) - This is a delivery model that encapsulates a layer of software and provides it as a service that can can in turn be used to create other services. A good example of this type of a delivery model is Google Apps Engine.
- Cloud Infrastructure as a Service (IaaS) - This is a delivery model in which the basic storage and compute capabilities are provided as services over the network. Such services may include, processing, storage, networking, etc. In essence, this is a delivery model that provides computer hardware (servers, networking technology, storage, and data center space) as a service.
Cloud Computing - The Deployment Models
There are various deployment models for Cloud Computing. Each has its trade-offs and the model that you choose entirely depends on what your requirements are. You can have any one of the following deployment models for your Cloud Computing Platform:
- Private Clouds - Private Clouds are also known as Internal Clouds and are privately owned or leased by a particular organization. In essence, such clouds are maintained by the organization, by a cloud provider, or even by a third party.
- Public Clouds - A Public Cloud infrastructure is used by an organization to make cloud services available to the public. It can be accessed by multiple consumers.
- Community Clouds - A Community Cloud is one that can be shared amongst a community of organizations.
- Hybrid Clouds - A Hybrid Cloud infrastructure is one that comprises of two or more clouds that are bound together. Such clouds can in turn be comprised of internal, community or public cloud infrastructures.
What is Microsoft Azure?
Windows Azure (originally known as the Azure Services Platform) is a platform that provides you a Windows-based environment that you can use to execute applications and store data on cloud servers. It provides you a flexible and easy to use environment with which you can create cloud applications and services. You can use the Windows Azure Platform to build applications that reside in the cloud or those that can enhance existing applications with cloud-based capabilities. Note that the Windows Azure Platform supports Microsoft's .NET languages, such as C#, as well as Java, PHP, Python and Ruby. Moreover, the Windows Azure platform now provides support for Ruby on Rails and other open-source technologies too. It should be noted that on the Windows Azure environment, an application can have multiple instances with each instance running a copy or a part of the application's code inside the context of its own Virtual Machine.
Microsoft Azure - The FeaturesBasically, the Windows Azure platform is an operating system for the cloud that provides an infrastructure to support applications, data, and infrastructure in the cloud. It is a paradigm shift from the old deploy on server concept to deploy on the cloud. Windows Azure has the following major features:
- Support for Service management
- Support for Computing and Storage
- Developer experience
It also provides support for certain utility services, like: 24/7 operation, Pay for what you use and also an excellent support for seamless, transparent administration.
Components of the Windows Azure Platform
The Windows Azure Platform is comprised of the following components:
- Windows Azure: Provides a Windows-based environment for running applications and storing data on servers in Microsoft data centers.
- SQL Azure: This is the name given to a group of technologies that provide data services in the cloud. In essence, the basic goal of SQL Azure is to provide data access and data services in Internet-accessible servers that reside in the cloud. Note that to access data residing in the SQL Azure Database; applications make use of Microsoft's TDS protocol. This enables these applications to use ADO.NET and other common data interfaces to access data in the cloud environment.
- .NET Services: Provides distributed infrastructure services to cloud-based and local applications. In essence, the basic goal of .NET Services is to provide a cloud-based infrastructure that can be used by applications that reside in the cloud or outside of it. .NET Services in turn is comprised of two components, namely, Access Control and Service Bus. While the former relates to identity resolution and claims transformation for users accessing a cloud system, the later enables cloud applications to expose its services through endpoints and handles network address translation and other related issues.
What are Roles?Roles in Microsoft Azure are discreet, scalable components built using managed code. A Windows Azure application can have either a Web role instance or a Worker role instance with each instance running in its own Virtual Machine environment. Here is what these roles imply:
- Web role - A web role instance of a Windows Azure application is typically implemented using ASP.NET or any other web technology that makes use of IIS web server and its services and accepts incoming requests through the IIS.
- Worker role - A worker role instance of a Windows Azure application is a batch job and gets its input through the Windows Azure storage.
Cloud Computing - The Challenges and Risks Involved
Cloud Computing has lot of benefits. So, should all businesses use Cloud Computing? Well, it depends. There are a lot of risks and technological challenges involved in using a Cloud Computing model for your applications. These include: data security of the enterprise data stored in the cloud, performance issues, capital expenses, ability of the applications deployed on Cloud Computing platforms to integrate with the legacy systems, etc.
Here are a few good links to resources on this topic for further study:
Cloud computing is fast emerging as a popular platform for enterprises to leverage the features and benefits of shared infrastructure, lower costs and lower management overhead. Cloud Computing is an infrastructure that enables you to develop and deploy your applications in the cloud, i.e., in remote servers. Microsoft's Windows Azure platform is the operating system for the Cloud and is comprised of a group of cloud technologies with each of them providing a specific set of services. It should be noted that the Microsoft Azure Platform can be used both by applications that reside and run in the cloud environment and also by applications that reside and execute out of the cloud environment, i.e., those that reside and run in the local systems. This article has had a look at the basics of Cloud Computing and how the Windows Azure Platform can be used to design, develop and deploy applications that can reside in the cloud.