Better Application development with Cloud Computing | IBM
The Cloud, a unique opportunity
For many companies, the advent of #cloud computing represents a unique opportunity to reduce the costs of developing and operating applications (essential to the smooth running of business). Beyond the expertise and technology that IBM brings to its customers to implement cloud computing, it is essential to support our customers in the transformations required to adopt this new model of resource consumption. computer. Because to fully benefit from Cloud Computing, changes are needed, especially in application development. This article tries to show how transformations in the management of the development cycle of applications make it possible to benefit from the contributions of Cloud Computing.
Evolution of Application developments
For the last ten years, companies developing applications serving their customers have made the development process evolve towards agile methods. This transition has largely contributed to improving the functional richness of the applications, allowing to better align the services rendered with the needs of the users, and to deliver the necessary innovations faster to the conquest of market shares. For non-functional requirements, agile methods did not have significant impacts on operating costs or compliance with application service commitments.
Although agile methods make it possible to better address functional needs by involving contractors and users more in development activities, they have often failed to improve the procedures for putting production into practice. exploitation of applications. Because the agile methods fail to involve the operators (engineers and production personnel) in the development process. The constraints of the production (hardware / software strategy, acquisitions & disposals …) strongly impact the exploitability of the applications. To be exploitable, an application must support the governance processes of a production, such as:
- increase / decrease in capacity
- backup / restore, archiving
- change or update of hardware / software
In most cases, this implies that the applications are specifically designed to support these operations. But developers are generally unaware of the constraints of production. Obviously, a good project will include a precise definition of non-functional requirements. But formal development processes have shown their limits in providing a good understanding of need only from formal documents, such as the specifications or the expression of needs. In comparison, agile methods have shown that close, lively and continuous collaboration between contractors and developers makes it possible to better cover functional requirements, through prototypes and concrete implementations of functionalities.
How the cloud changes the game
The most common issue around the deployment and usability of applications is the inability to test early in the development cycle the operational architecture designed to meet those needs. In Figure 1, we observe that in the reality of projects, it is often prohibitive to provide developers and testers environments equivalent to production from the integration test phases. Indeed, for deployments on physical machines, this represents a cost of resources too high.
This means that the actual operational architecture is not tested until the application reaches the pre-production and production environments later in the cycle.
Thanks to Cloud Computing, this situation can change:
- Resources are available on demand
- Resources are available very quickly (automated provisioning)
- Resources can be decommissioned
As a result, the Cloud makes it possible to test the applications from the first test phases in environments that are close to or identical to the production, and to discover applications or architectural anomalies very early in the cycle.
From the users’ point of view, Cloud offers the ability to provision hardware resources through a portal or APIs. This characteristic has allowed the emergence of a new paradigm, called “software-defined environments”. It makes it possible to programmatically define the infrastructures needed to deploy an application. As a result, you can fully automate application deployment from machine provisioning to application installation and middleware implementation. It becomes possible to instantiate complete environments to deploy end-to-end applications.
Beyond the benefits related to reproducibility, knowledge and mastery of end-to-end deployment processes, it also makes it possible to instantiate applications on demand, according to the needs, and especially to de-provision these instances during the numerous and long periods of inactivity. Because traditional test environments are very often inactive, their manual implementation being complex and not very reproducible.
With this new approach, users will be able to realize significant savings on resources by eliminating downtime from test and development environments.
Adopting Software-Defined Environments
The IBM SmartCloud Continuous Delivery solution provides the functionality to implement the software-defined environments paradigm and automate end-to-end deployments. It therefore enables the implementation of continuous deployment processes, in which applications can automatically transfer from one test environment to the next, all the way to production.
The development and delivery cycle therefore becomes continuous, with all the advantages that this implies:
- Accelerated time to market
- Mastery and reproducibility of deployments
- Significant reduction in resources required for the development cycle
The cloud is revolutionizing IT in depth, with implications for a multitude of activities. The development and testing are not immune to this revolution, the cloud to greatly improve application delivery processes.
This article is sponsored by IBM.com . If you want to sponsor or contribute a blog post please reach us at email@example.com