How to deliver software faster
|Richard Harris in Programming Friday, June 28, 2019|
How to deliver software faster, a discussion with Dan Garfield of Codefresh about the crushing pressure of code delivery in today's insatiable market and what you can do to survive.
Driven by the trend of microservices creating complexity in code delivery and every company becoming a technology company, the software development community is under enormous pressure to deliver high-quality, leading-edge, and scalable code to an insatiable market.
Data from a new survey by Codefresh exposed the relentless pressure, with 32 percent reporting they were not using any CI/CD tools at all, and about 60 percent agreeing that their organizations are “not using the right amount of automation to enable individual developers to increase velocity, including Devops.”
ADM: What are the biggest obstacles to timely code delivery?
Garfield: Our Codefresh survey revealed the biggest obstacle to timely code deliver was the lack of automation. Respondents indicated most teams have only partially automated their code delivery process from getting code into production and that is hampering the overall code delivery process.
ADM: Why should developers use CI/CD tools?
Garfield: Developers love a good CI/CD tool and hate bad ones for obvious reasons. Good CI/CD tools make developers lives easier. If a CI/CD tool is helping by automating various processes, developers can focus more of their attention on writing great code.
ADM: What benefits can automation deliver to developers?
Garfield: Automation tools can take care of the heavy lifting of testing and deploying, and free up developers’ time to write more code into their applications. The secret is to use great automation tools that are reliable, so developers will not have to constantly leave their workflow to fix bad code.
ADM: What are the benefits of microservices?
Garfield: Microservices have been gaining in popularity because they solve some of the fundamental problems of software development. Developers can scale services independently, which is very valuable, and developers can split up the workload for maintaining an application to the different microservices. So, a team can own a specific microservice or set of microservices and allow them to expand the number of engineers working to complete the project.
ADM: How have the addition of microservices made code delivery more difficult to deliver?
Garfield: While microservices solve many fundamental problems of software development, they also introduce new challenges, and make testing applications more complex. For example, if a developer wants to test a single monolithic application, he or she can run the test and call it a day. But if the developer has 150 different microservices, each one of these may have its own deployment method and managing the automation process can be immensely more complex when it comes to validating and testing the application. The more microservices added, the more complex validation and testing become. Development teams need to update these services independent of one another. A change in one microservice may not have any impact on the second microservice unless that second microservice also implements a change and those changes happen at the same time.
ADM: Why are more companies actively adopting serverless technologies?
Garfield: Serverless technologies are gaining in popularity because of the simplicity of the format. With serverless technology, developers can write a function and understand implicitly how that function should be available. And, it’s also very cost-effective. However, as functions take up more and more resources the cost goes up. Once you're using the equivalent of a full node, you will need to transition out of serverless because it’s not going to be as cost-effective. So, as service grows, it often gets to the point where developers decide they don’t want to be running that as a function any longer, and it's time to scale it out into its own application. That’s why some companies are reluctant to adopt serverless technologies.
ADM: What were the most exciting developments over the last month in the CI/CD space?
Garfield: The most important trend over the last few years has been the total embrace of infrastructure as code, often powered by Kubernetes, but also by Terraform and Pulumi. This means organizations will have a lot more ability to manage the deployment process and validate applications in a deeper way because they can represent it as code. Companies can stand up short-lived instances to run full test and can iterate on that infrastructure. If you look at the majority of big cloud provider outages the last couple of years, most of these providers weren’t using infrastructure as code and didn’t have automation in place to make changes. So if someone made a manual error, the number of replicas a service had caused a cascading effect of failures that could have been avoided with good CI/CD tools and using the infrastructure of code to validate the changes before full deployment.
About Dan Garfield
Dan Garfield is a full-stack engineer, kubernaut, and has long running experience with Istio and Helm. He's contributed to a number of open source projects. As a Google Developer Expert, and ex-Atlassian, he's traveled the globe teaching and guiding teams adopting Kubernetes. Ask him about his raspberry-pi powered chicken coop.