From the course: Azure for DevOps: Dependency Management

Why componentize?

- [Instructor] As our code base grows, software development teams aim to modularize and introduce loose coupling and high cohesion. These become dependencies which are software packages our projects rely on. You may be asking yourself, why should I care about this? Let's look at an example. Say you're a game developer working for Red30 Technologies producing content for Team 1. The software you produce provides social media integration. Team 2 is working on another project and wants to do the same thing. They could write their own code for social media integration, but why not use yours? We're all on the same team, right? There are a few ways we could do this. They could just share the entire code base but that's exposing their product to unnecessary risk. Also, Team 2 doesn't need access to all the code. They only want the social media integration component. Now, let's assume Red30 also has a contract to provide their game engine to H+ Sport. According to the contract, H+ Sport can use some of the social media integration code but not the proprietary awarding of game points which is unique to Red30. Even though they could easily do so, it would be good practice for Team 1 not to provide the same level of access to H+ Sport as internal Team 2. This would expose their code unnecessarily and introduce security risks. In this case, it makes sense to split their code into separate components onto which they can control access for the various entities that need it. Some of the benefits we can derive from this process include modularization and robustness of the code. We want to follow best practices to deliver high quality code, reap the benefits of reliability, and faster time to market. We can also provide different versions to our partners depending on our licensing agreements. They may also not be ready to upgrade and can choose so when appropriate for them.

Contents