Embrace Modular Technology & Agile Process to Deliver Business Impact (Section 6)
Organization Strategy and Modularity
The ways in which informed choices around modularity can play a vital role in helping the effectiveness of software development has been explored. From an organizational viewpoint, there are some ways in which teams can support the maintenance of well kept, modular code, namely:
· Let the vocabulary of the most strategic elements of architecture permeate conversations at high levels. Where costs must be incurred to arrive at an efficient base level of technology, technology stakeholders need to understand the nature of the investment.
· Give recognition to infrastructural wins as well as to the more tangible and user-facing achievements.
· Product owners and platform owners must work in partnership. A product excelling in its development cycles yet leaving the technology platform weaker as it does so, is a short-term gain but a longer-term risk.
A healthy technical platform which has embraced service level modularity may also become supportive of a mix-and-match product offering approach. Organizations may wish to deliver offerings in new and innovative ways either to better support existing customers, or to appeal to new categories of customers. Adapting technology to support such a requirement in the short term can be limited in its success, and will often involve compromises in functionality, design, maintainability, and speed of deployment. A technical platform whose boundaries are readily understood should already provide a semantic backbone to allow modular solutions to be designed and built.
Security and Modularity
It is a common experience in the enterprise for security concerns to be a prioritization which waxes and wanes as threat awareness grows either internally or in the media. Beyond quick fixes, software development can only promote security through the longer-term application of best practices.
Modularization can help by encouraging the use of up-to-date technology, hiding older technologies where necessary behind tightly confined boundaries, and keeping software complexity in check. Still, the security strategy of a microservices system must be kept in mind during all development, and its assumptions validated or invalidated as RESTful services are designed. Simple definition of internal versus external facing endpoints, while useful, should not preclude an application of defense-in-depth as it relates to modular components.
Development Operations and Agile
DevOps is an integral partner in enabling software frameworks, Agile methodologies, and software modularity concepts to become a reality. DevOps enables improved security by being the nexus between infrastructure and software teams enabling software to be delivered reliably and automatically for the user of the application or system.
Further, DevOps is a key partner in modular software, providing the tools and components to deliver fit for purpose software components securely and at scale in an automated fashion. When applied together Agile and DevOps better empower organizations to deliver technology with greater speed and reliability, while simultaneously driving customer needs to the top of the priority list.
Modern DevOps practices, in the cloud as well as in on-premise environments, help make service-based modularity a practical reality. Tooling such as docker allows developers to explore and build complex multi-service environments within a single machine. In turn, modularity which is well-thought out and documented can help to contain the complexity and stability of the DevOps processes needed to support the platform.