DevOps Tools Introduction #02: Modern Software Development
The DevOps Tools Engineer exam starts with objective 701.1 which covers modern software development, including aspects of architecture and team organization. These are broad topics but, since LPI expects candidates to be experienced IT professionals, you will probably already have some background in this area. Therefore, we’ll focus on those aspects which are explicitly mentioned in the exam objectives.
The context of the exam is applications that follow modern approaches to software development. One of the most quoted sources related to this kind of applications is the Twelve-Factor App. This manifesto explains twelve best practices for designing software that runs in containers and clouds. These tips apply to any programming language and development ecosystem. After reading them, you should think about how to implement these best practices with your preferred language and platform. Try to reflect upon how your software handles the Twelve Factors.
When getting more detailed in your learning, Martin Fowler's website is a great place to learn about software architecture. He and his co-authors offer articles on application architectures, SOA and microservices, immutable servers as well as monoliths and coupling.
A topic of special interest in the world of services are application programming interfaces; APIs for short. The exam objectives explicitly mention REST APIs and JSON data. A great introduction to APIs can be found on restful.io. Likewise, jsonapi.org illustrates how to represent data in JSON and links to documents explaining JSON in greater detail.
The exam objectives also mention a number of security aspects of applications. A good learning source is the Open Web Application Security Project. They cover the terms mentioned in the objectives such as cross-site scripting, SQL injections, web service security, authentication, transport encryption, CORS and CSRF, and error reports. Make sure you get an overview of the materials offered by OWASP and take a good look at their collection of cheat sheets.
Two other terms mentioned in the exam objectives are ACID properties and CAP theoremes. Although there are many explanations, a number of answers to the question of the relationship of these terms are given in a quora thread. This discussion also covers properties of relational and NoSQL databases; a field that we will shortly meet again when talking about cloud services.
Finally, topic 701.1 also expects you to understand agile software development and DevOps. The Manifesto for Agile Software Development is the canonical source for a lot related techniques. Again, Martin Flower’s website hosts articles on the agile manifesto and DevOps culture as well as some hints on how to become fluent in agile.
Learning about architectures and development techniques involves a lot of reading and almost no coding. It is a dusty topic for sure. However, the contents of this topic build the base upon which all of the other topics of the exam can be placed. In their own way, each technology covered in the exam supports the architectures and collaboration models explained in this objective. Having this big picture in mind helps you to recognize the relationships between the tools and explains design decisions made by the creators of the tools covered in the exam. Therefore, bookmark the most useful texts you found when working through the links above. Review them at the end of your studies and see how the technologies you’ve learned in the meantime fit in.