The influence of DevOps on software development cannot be understated. By focusing on iterations and sprints it effectively gets functioning applications to clients faster and it greatly reduces the time needed to fix bugs. However, DevOps is more than just an environment for engineers to work with a set of methods. It’s a philosophy that demands a different way of thinking about what makes applications great. That way of thinking is key to Modern Application Design.
Development teams are used to working under pressure. Clients demand their applications to answer their current and future needs fully, free of glitches and bugs, integrated with their existing application landscape, and -most jarringly- completed yesterday. Selling internal and external customers on the advantages of the more iterative and flexible approach is, therefore, a crucial step. That approach is Modern Application Design, which goes with DevOps, as basil goes with tomatoes.
What is Modern Application Design?
Modern Application Development seeks to make applications more modular. Instead of having large teams building monolithic applications that offer a certain set of features, developers build smaller elements at a time. Also called microservices, these building blocks integrate using APIs, but a key element is that they are in themselves a functioning part of the whole. However, the whole idea of modern software development encompasses more than just the end result. The building blocks should be automatically deployable as microservices to every platform type. The process should enable small, agile teams to work in parallel with each other in small, manageable steps.
Sounds like DevOps? That is because Modern Application Design is the Dev-part of the DevOps philosophy.
The Twelve-Factor app
Knowing what Modern Application Design means is already a huge step. But it still needs to be implemented. One great way to rethink app development for this is the so-called Twelve-Factor App. The result is that teams can deploy applications on any platform. Coined in 2012 by Adam Wiggins of Heroku, it is a set of principles for building applications native to the cloud that are delivered as a service:
- A single-tracked codebase for many different deploys
- Explicit declared and isolated dependencies
- Config stored in the environment
- Backing services that are treated as attached resources
- Strict separation of build and run
- Apps executed as a single stateless process or a multiple of those
- Port binding
- Processes run fully concurrently
- Processes are fully disposable
- Parity of development and production
- Logs as event streams
- Admin and management tasks are one-off processes
Because of these attributes –of which some have become common sense in app development in general- the Twelve-factor App is ideal for work within the confines of the DevOps philosophy.
Agile
It’s not just the development process that must adapt to DevOps. The way engineers collaborate is just as important. Concurrency and iterative design only shine if people can work on multiple features simultaneously. That is why Agile is often married to DevOps as well. Teams that work Agile are:
- Small
- Work in iterations
- Put people above processes
- Value collaboration with the customer over the develop-feedback cycle
Teams of up to seven are ideal for this. And since each team works on its own application, they get things done faster. When those applications are deployed as microservices, they can freely deploy without fear of breaking the things someone else made.
Picking the right tools
At Leafcloud, we are warm proponents of modern application development, especially seeing much value in picking the right tools for the job. Open source is, for us, the default go-to. It avoids possible vendor lock-in, but more importantly, it allows for integration into a fully functional and customizable infrastructure. Once you know the essential components -Servers, Storage, Networking (routers, Load Balancers, virtual private networks), Kubernetes, and Object Storage- and can manage them as code with, for example, Terraform, you can build anything.
Please feel free to contact us at Leafcloud. We'll gladly discuss what suits your needs and how to start building Modern Applications today.