Explore DevOps Architecture
A well-designed architecture is like a highway that can rapidly deliver business value to the end user. When it's not done right, it’s like a washed-out bridge blocking you from your end goals.
Introduction to software architecture
The long-term viability of any architecture requires its design, implementation, upgrade, and inevitable change to be successful.
Architecture is abstract until operationalized, when it becomes a living thing.
William LeMessurier, one of the United States' most distinguished structural architects, served as design and construction consultant on the innovative Citicorp headquarters tower in New York. The tower was completed in 1977. The next year, after a college student from Princeton studying the tower design had called him to point out a possible deficiency, LeMessurier discovered that the building was indeed structurally deficient.
The building would not be able to withstand 70 mile per hour winds – which, according to weather tables, would occur at least once every 55 years in New York City. In that circumstance, the joints would fail, and the building would collapse, starting on the 13th floor. The tower was fully occupied at the time. LeMessurier had to break the news to the owners and city officials.
LeMessurier faced a complex and difficult problem of professional responsibility. He had to alert a broad group of people to the structural deficiency and enlist their cooperation in repairing the deficiency before a hurricane brought the building down.
That summer, Hurricane Ella made its way toward the city. The building was secured. The Citicorp tower has stood solidly ever since.
Software architecture is about making fundamental structural choices which are costly to change once implemented.
Its characteristics include:
- Stakeholders, which can include business stakeholders, application teams, QA teams, operations, security, and users.
- Separation of concerns: to reduce complexity, separate the concerns that drive the design.
- Quality-driven attributes: including scalability, extensibility, reliability, maintainability, and security.
- Conceptual integrity: software architecture represents an overall vision of what it should do and how it should do it to maintain architecture, data, and process integrity.
- Cognitive constraints: organizations are constrained to produce designs that are copies of their communication structures.
- Recurring styles: the software architecture discipline requires us to develop standard ways to address recurring concerns.
Any architecture addresses "-ilities":
When building software, architects must determine the most important of these “-ilities.” However, many of these factors oppose one another.
For example, achieving both high performance and extreme scalability can be difficult because it requires a careful balance of architecture, operations, and many other factors.
This decision-making process is a balancing act; balancing the pros and cons of each architectural decision leads to the tradeoffs so commonly lamented by architects.
In the last few years, incremental developments in core engineering practices for software development have laid the foundation for rethinking how architecture changes over time, and how to protect important architectural characteristics as this evolution occurs.
Gene Kim is a renowned DevOps researcher, author, and visionary. He identifies three things that are required to make DevOps happen:
"One is the cultural component. Certainly, the other part is tools and technology. The third part is architecture. You need great technology practices, which includes automation. You need a high-trust culture. And, it is architecture that enables you to get there."
Research presented in the book Accelerate demonstrates no signification correlation between system type and delivery performance for many types of systems, including new systems, systems of record, packaged commercial software, mainframe software, and embedded software. What is important is deployability and testability.
Good architecture facilitates deployability and testability.
Architecture and organization
Conway's law is named after computer programmer Melvin Conway, who introduced the idea in 1967. It acknowledges that system design is affected by the communications structures of the organizations that design the systems:
Conway's law: Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
The law is based on the reasoning that for a software module to function, multiple authors must communicate frequently with each other.
Therefore, the software interface structure of a system will reflect the social boundaries of the organization(s) that produced it, across which communication is more difficult.
Architect skills in Enterprise DevOps
Architects develop and refine a broad variety of skills such as:
- big picture thinking
- systems thinking
- business knowledge
- interpersonal skills
- influencing and leadership skills
- understanding of technical architecture
- IT financial management experience
- time management
- exposure to Enterprise Architecture (EA) Frameworks
- ability to explain IT to executives
- presentation skills
- coaching skills
- understanding of data architecture and IT operations
But what is the most important skill for 21st century success?
A willingness and ability to learn.