How to Supercharge Your App Development in the Cloud
Remember the old days of software development? It wasn’t that long ago that everything started with a carefully written requirements document, often followed by a functional specification and, after that, a technical specification. Only then did developers actually create code. After the code was deemed complete, it was turned over to the QA team for feature testing and, finally, user acceptance testing validated that the code did what was intended.
In parallel, someone worked with procurement to purchase the servers, storage and networking needed, and worked with the operations teams to ensure space and power were available in the data center. No wonder IT was often thought of as expensive and slow!
Development in the 1990s and 2000s was hamstrung by manual processes and messy handoffs. But in the past decade, a revolution in application development—driven largely by the cloud—has changed everything.
Innovation Begins with Experimentation
Software development is all about innovation, and cloud technologies make it possible to experiment, learn and innovate faster than ever before. A team that suspects, for example, that a new type of NoSQL database could provide new types of functionalities for an application at low cost can simply try it by renting that database service for a week or two, testing out the use casesit and evaluating how well it’s suited for the job.
If it works: great. If not, your team has only invested a week—and a week’s worth of charges—for use of the NoSQL database.
Recognizing the ease, low risk, and low cost of cloud experimentation, many companies have adopted innovative approaches to learning and adopting new technologies. For example, in hackathons, teams – including business partners – come together in a short, focused experience to apply a new cloud product or service to a business and determine its usefulness. Another common approach brings experienced partners in to co-develop, imparting their knowledge and experience to IT teams along the way. Yet another strategy has a focused innovation team deploy new cloud capabilities on specific low-risk applications and, if successful, evangelize them to the broader community.
Innovation Continues with Agile Software Development
Quickly iterating in an agile approach lets developers build just what the users want and need. Agile leverages partnerships between developers and end users, with quick turnarounds (sprints), ensuring that what is coded is what is needed. As a result, agile (which preceded the cloud, but enjoyed wide adoption among cloud teams) leads to much more finely tuned products that closely match user needs, even as they evolve.
Building upon agile, developers have applied principles of lean manufacturing to building software—using automated pipelines to accelerate the process. They quickly realized that the pipeline could, and should, unify the previously separate processes of development, testing and deployment.
This was the birth of what we now call DevOps.
In DevOps, the process starts when a developer checks code into a source control system, say, GitHub. That check-in kicks off a series of automated tests of the new code which, if it passes, is then packaged and made ready for deployment to the cloud application. If it fails, the code is returned to the developer for rework. With this automation of DevOps (called continuous integration/continuous deployment, or CI/CD), the cycle time of code-to-deploy can be greatly accelerated: new code is up in hours, not weeks.
And with GitHub Codespaces or AWS Cloud9, developers can code and test cloud applications entirely in the cloud—thus getting your team’s developers up and running quickly and in a consistent environment.
Infrastructure as Code (IaC)
But that’s not the end of the story. As cloud applications became more scalable and connected service configurations, such as machine learning or big data, consequently became more complex—and a single error in configuration could bring the entire system down.
With tools like Terraform, Azure Resource Manager and AWS CloudFormation, configurations are automated with declarative specifications and, like any other code, can be checked into source control. This means that a configuration change that results in an error can be rolled back to a known working version.
These days, nothing is of greater concern to IT leaders than protecting their applications and data. To that end, security has become an integral part of the development process, architected in from the beginning.
Thus, automated testing and deployments are not the only things that can be part of a DevOps pipeline. Prior to deployment, an executable image can be scanned for vulnerabilities, have antivirus injected, automate available security updates and be subjected to a battery of security-related testing, hence the scope of DevOps expands to be DevSecOps. This makes application deployment not only faster, but also more secure.
The idea of development performed in an automated, pipelined fashion has spread to other disciplines as well, with important results in improving efficiency, reducing costs and discovering new insights. For example, the critical first step in analytical work—which takes the longest—is ensuring that data is clean (free of anomalies, errors and outliers, consistent data types and so on).
Enter DataOps, which uses automated workflows, statistical analysis and other tools to accelerate the preparation of data for use by data professionals. As data exits the pipeline, it is subjected to quality tests, which determine its readiness. If it passes, the data scientist or analyst can use it; if it fails, then software or professionals can trace back to find out what the cause of the error was and adjust the process.
Similarly, MLOps takes DevOps principles and applies them to building, training and deploying machine learning applications in the cloud. As with DevOps and DataOps, a trained model is tested at the end and only deployed if it passes those tests.
The “Everything Ops” model can even be applied to non-technical disciplines—like finance. With FinOps, teams monitor the ongoing costs of a deployed application, adding or reducing the cloud resources used to optimize costs.
Things Have Changed
All these new approaches to development have great promise, and this promise has been proven in countless customer scenarios. For example, Bacardi transformed their IT environment and implemented a DevOps automation platform, resulting in 16 times greater website deployment capacity and a 42% reduction in infrastructure costs.
With low-risk proofs of concept, agile development, and DevOps and DevSecOps, you can supercharge software development, gaining remarkable new efficiencies and faster, more predictable, more secure updates with your digital presence.
Yet, to fully adopt and leverage these new capabilities requires both reskilling and culture changes at many organizations. Stay tuned for more insights…