Core principles of system design  |  Cloud Architecture Center  |  Google Cloud (2024)

Last reviewed 2024-05-30 UTC

This document in theGoogle Cloud Architecture Framework describes the core principles of system design. A robust system design issecure, reliable, scalable, and independent. It lets you make iterative andreversible changes without disrupting the system, minimize potential risks, andimprove operational efficiency. To achieve a robust system design, we recommendthat you follow four core principles.

Design for change

No system is static. The needs of its users, the goals of the team that buildsthe system, and the system itself are constantly changing. With the need for changein mind, build a path to production that enables teams to regularly deliver small changes and get fast feedback on those changes. Consistently demonstratingthe ability to deploy changes is one way to build trust with stakeholders,including the teams responsible for the system, and the users of the system.UsingDORA's software delivery metrics can help your team monitor the speed, ease, and safety of changing the system.

Document your architecture

When you start to move your workloads to the cloud or build your applications, amajor blocker to success is lack of documentation of the system. Documentationis especially important for correctly visualizing the architecture of yourcurrent deployments.

Quality documentation isn't achieved by a specificamount of documentation, but by content that is clear, useful, andmaintained as the system changes.

A properly documented cloud architecture establishes a common language andstandards, which enable cross-functional teams to communicate and collaborateeffectively. It also provides the information that's necessary to identify andguide future design decisions. Documentation should be written with your usecases in mind, to provide context for the design decisions.

Over time, your design decisions will evolve and change. The change historyprovides the context that your teams require to align initiatives, avoidduplication, and measure performance changes effectively over time. Change logsare particularly valuable when you onboard a new cloud architect who is not yetfamiliar with your current system design, strategy, or history.

Analysis by DORA has found a clear link between documentation quality and organizational performance — the organization's ability to meet their performance and profitability goals.

Simplify your design and use fully managed services

Simplicity is crucial for system design. If your architecture is too complex tounderstand, it will be difficult to implement the design and manage it overtime. Where feasible, use fully managed services to minimize the risks, time,and effort associated with managing and maintaining baseline systems.

If you're already running your workloads in production, test with managedservices to see how they might help to reduce operational complexities. Ifyou're developing new workloads, then start simple, establish a minimal viableproduct (MVP), and resist the urge to over-engineer. You can identifyexceptional use cases, iterate, and improve your systems incrementally overtime.

Decouple your architecture

Research from DORA shows that architecture is an important predictor for achieving continuousdelivery. Decoupling is a technique that's used to separate your applicationsand service components into smaller components that can operate independently.For example, you might separate a monolithic application stack into individualservice components. In a loosely coupled architecture, an application can runits functions independently, regardless of the various dependencies.

A decoupled architecture gives you increased flexibility to do the following:

  • Apply independent upgrades.
  • Enforce specific security controls.
  • Establish reliability goals for each subsystem.
  • Monitor health.
  • Granularly control performance and cost parameters.

You can start decoupling early in your design phase or incorporate it as part ofyour system upgrades as you scale.

Use a stateless architecture

A stateless architecture can increase both the reliability and scalability ofyour applications.

Stateful applications rely on various dependencies to perform tasks, such aslocally cached data. Stateful applications often require additional mechanismsto capture progress and restart gracefully. Stateless applications can performtasks without significant local dependencies by using shared storage or cachedservices. A stateless architecture enables your applications to scale up quicklywith minimum boot dependencies. The applications can withstand hard restarts,have lower downtime, and provide better performance for end users.

The system design category describes recommendations to make your applicationsstateless or to utilize cloud-native features to improve capturing machine statefor your stateful applications.

What's next

  • Select geographic regions to support your business applications.
  • Manage cloud resources.
  • Choose and manage compute resources.
  • Design your network infrastructure.
  • Select and implement a storage strategy.
  • Optimize your database.
  • Analyze your data.
  • Implement machine learning.
  • Design your cloud workloads for sustainability.
Core principles of system design  |  Cloud Architecture Center  |  Google Cloud (2024)
Top Articles
Latest Posts
Article information

Author: Manual Maggio

Last Updated:

Views: 6386

Rating: 4.9 / 5 (49 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Manual Maggio

Birthday: 1998-01-20

Address: 359 Kelvin Stream, Lake Eldonview, MT 33517-1242

Phone: +577037762465

Job: Product Hospitality Supervisor

Hobby: Gardening, Web surfing, Video gaming, Amateur radio, Flag Football, Reading, Table tennis

Introduction: My name is Manual Maggio, I am a thankful, tender, adventurous, delightful, fantastic, proud, graceful person who loves writing and wants to share my knowledge and understanding with you.