Architectural Principles 

Rationale

In today's technology environment, we must make rapid yet appropriate decisions that incorporate Duke's strategic direction, resource allocation, technical priorities, industry trends, and other concerns. A core set of architectural principles will establish a common language and framework to guide OIT's technical decision-making. Further, they will foster cultural norms that lead to greater technical alignment.

These principles will provide a mechanism for establishing, stating, and updating the strategic technology direction of OIT. Such an approach ensures coherency in our fundamental technical direction. The principles will not be stagnant; we expect they will change over time through this process. In fact, review of the principles will be inherent in their design. Finally, we expect there to be cases where solutions will, by necessity, not follow these principles.

As a result of establishing architectural principles, the following benefits will be seen:

  • Good decision making
    • This will ensure that projects make coherent and informed technical decisions that incorporate industry trends and solve the right problem. This facilitates project justification and alignment with overall technology directions. It makes sure that our resources are used wisely.
  • Strategic technology leadership for OIT
    • Ensures that projects serve long-term direction in addition to addressing tactical needs. It further encourages innovation in line with technical strategy. Additionally, ongoing technical forecasting will ensure that OIT is positioned to take advantage of future industry trends.
  • Alignment with Duke's mission
    • Our technical decisions must be responsive to Duke's business requirements and strategic direction. Further, we aim to identify specific opportunities for new technology to further Duke's missions. Finally, adhesion to architectural principles will ensure that we're good stewards of Duke's resources.
  • Sustainable technology
    • Our systems should be technically coherent with current and forecast infrastructure. Disciplined long range planning and industry forecasting will enable an alignment between current and future infrastructure. Areas of jeopardy will be identified and addressed, not ignored.

An effort is underway to identify an initial set of architectural principles. This will involve outreach and discussion across OIT, and we encourage feedback at any time regarding the principles. The Technology Architecture Group will be responsible for maintaining and updating the principles over time, with significant input from staff throughout OIT.

Dimensions

The following terms are used throughout the principles to refer to different aspects of our solutions.

  • Data: The information we are tasked with storing, managing, transmitting, and otherwise handling.
  • Infrastructure: The underlying servers, networks, and facilities that enable us to provide services.
  • Services: The applications and other systems that deliver data, through our infrastructure, to our users.
  • Support: The people, process, and organizations that facilitate the delivery and maintenance of our solutions.

Principles

1. Create robust, secure systems

Robust systems are designed to tolerate failure of individual components without service interruptions. By building systems with independent, redundant components we can achieve high availability in an interdependent application environment. We consider potential component failure modes when engineering systems, and validate our designs' security and fault tolerance as part of pre-deployment testing. Unanticipated failures of deployed systems are studied so that we adapt and improve our architecture over time.

Read more...

2. Link, don't duplicate

On both micro and macro scales, modular, loosely coupled architectures ensures that solutions are reusable, testable, adaptable, manageable, and supportable. The use of standards ensures that we will leverage the largest base of available knowledge while achieving the highest level of inherent interoperability. Reusable implementations of data, infrastructure, and service needs are preferred to duplication of efforts. To avoid duplicate entry of data, systems of record should be established and linked to rather than copied.

Read more...

3. Design for scalability

Systems should perform well, even in the face of rapidly-expanding demand. We can prepare for the future by designing systems to accommodate growth in usage over time - allowing for easy and economical scaling when demand rises. In general, horizontally-scaled solutions are better able to adapt to changes in load and provide better overall performance than vertically-scaled solutions. Similarly, modular solutions can provide more flexibility in scaling than monolithic architectures.

Read more...

4. Design for information lifecycles

Our system designs explicitly address the "cradle to grave" lifecycle migration of data and application technologies. We avoid strategies that make upgrade or replacement of a solution more difficult. By designing for decoupled, independent solutions, we are prepared for future technical and data migrations.

Read more...

5. Adapt to realities of people and technology resources

Solutions and services should leverage Duke's existing intellectual and technological resources whenever possible. These resources define our environment and shape our organizational capabilities. Realizing the capabilities of existing staff and our technical environment, we can more effectively meet our projects' technical goals. Creating services that work with existing human and technical investments allow us to maximize the return on these investments.

Read more...