Understanding how to accelerate development in the cloud can prevent typical challenges that developers face in a traditional enterprise. While there are many benefits to switching to a cloud-first model, the most immediate one is accelerated development and testing. The road blocks that software engineers face can be overcome by equipping them with the correct tools for the task.
In order to correctly harness the cloud-first tools, a cultural shift toward DevOps needs to begin. In this article, we’ll cover the following topics:
To dive deeper into the basics of DevOps, Cloud Academy offers foundational DevOps Learning Paths to get started with the tools and technologies.
A change in process
The practice of DevOps has been around for over a decade now and has gone through many iterations — but let’s break it down. In its most basic form, DevOps and cloud is about allowing software teams to quickly and safely spin-up their own services to run the company’s development and testing. In a traditional large enterprise, software development has many stages and stakeholders — all of which introduce communications gaps and slow downs.
Imagine these scenarios that can all be potentially streamlined:
- A developer is looking to test a new piece of software and submits a ticket to the IT team for a development node. Despite this request being fulfilled in less than 24 hours, the developer had to stop working on that mental-stream and start on something new.
- The same developer has done some testing and somehow altered the operating systems so that it is no longer in a healthy state. The developer now needs to either attempt to fix it or wait another 24 hours for a new node.
- An Apache Kafka is needed for a new deployment. The company must read the administration manual, develop a best practice installation, and deploy it before the project can move forward.
Through development on the cloud, we can eliminate many traditional blockers in the application lifecycle. In all of these examples, the software engineering team had to stop work and wait for a request to be processed. There are several ways to overcome this through automation, but in my opinion using the cloud is one of the best.
Developers are free to self-provision servers from default or homemade images that fit their specific needs. This leads to the ability to quickly replace malfunctioning servers or deploy new variants without any delays. The simplicity of being able to delete and replace a server with a clean state in minutes cannot be under-valued.
Johan S., Head of Software at Syft Technologies, recently started using AWS to accelerate his team’s development.
By eliminating the need to build the plumbing every time our developers start a project, they can now focus the time saved on solving the problem for which the solution is being built. – Johan S., Head of Software, Syft Technologies
With AWS, his team was able to leverage the pre-made nature of the cloud to quickly and easily provision the required infrastructure and get back to the scientific analysis the company is known for.
Cloud-available software provides access to pre-done functionality and cloud-first services. This benefit is realized when entire points of software selection can be skipped in favor of the cloud provider’s prebuilt solution. For example, with databases on Amazon’s RDS, change data capture can be configured out of the box to help with disaster recovery. Solutions like Google’s DataPrep, Amazon’s Sagemaker and Azure’s Eventhubs all provide extremely low barrier to entry utilities that would otherwise need to be independently planned for.
On a more personal level, Rob P, an SVP Business Development, and I were tasked with designing a system that could do streaming natural language processing. There were several groups of Data Scientists developing custom models, but they would not be ready for several weeks.
[The availability of cloud-native natural language APIs allows us to] shorten the gap between theory and concept, enabling us to put demos in front of clients weeks if not months faster. – Rob P., SVP Business Development.
The ability to have data engineers work with models from day one turned a serial execution task into a parallel execution.
The expression “it works on my computer” has been used so much that it is a joke. The best way to eliminate this is to develop on common, shareable environments. Much like the cloud is fantastic in that it can give everyone a customized environment, it also enables people to share that environment when appropriate. This leads to a dynamic where knowledge transfer flows more freely between developers and leads to quicker resolution of issues.
Scenarios with streamlined development
Imagine the same developer as before facing issues of interrupted workflow:
- A development team is looking to test a new piece of software. Already familiar with AWS offerings, they know that Simple Queue System or Managed Kafka could solve the need. The team submits a ticket to IT for an architectural review and begins integration testing. A developer is able to test, vet, and even prototype the project while waiting for IT’s feedback.
- The same development team managed to crash the development environment due to their “overzealous” testing of new frameworks. Instead of spending time rebuilding or repairing the image, they can self service a new EC2 instance. This instance is built off an IT-approved AMI and able to sync all the source code down from GitHub. The ability to seamlessly continue development saves them hours of waiting and no interrupt to their focus
- The development team and IT both agree Kafka is the correct choice moving forward. With out-of-the-box Managed Kafka, IT is able to skip many of the back-end steps related to installations and management. This extra bandwidth allows them to work with the developers increasingly closely on use-case development and best practices.
In all three of these scenarios, development is streamlined and accelerated through the availability of cloud software. IT is able to work closer with the development teams and focus on providing direct support. This is an improvement over simply managing a ticket queue of requests, enabling the company to focus on delivery vs administration.
The cloud offers many options to accelerate the development of applications. Through the ability to super-charge traditional DevOps practices and make technology available, developers are able to quickly get work done.
Any company looking to shorten the application development time should strongly consider using the cloud. A cloud-first approach to development requires companies to rethink many of the long standing assumptions about development. Traditional ticket queues and VM management is replaced with an engaged IT department.
The cloud-first approach requires developers to increase their skillset to understand the cloud and expand their competency to include basic IT processes. The good news is that Cloud Academy provides Learning Paths— from the fundamentals to advanced — to quickly learn the cloud. If you need to work on putting a cloud-first approach into practice, consultant companies, like Calculated Systems, can help you with data strategy and data migration.