Every principle below answers the same question from a different angle: when this piece fails — not if — what stops the failure from spreading to everything connected to it? That's what a circuit breaker does. That's what decoupling does. That's the actual job of application architecture.
Co-Founder Taliferro
Application architecture is a key deliverable of a project. This post covers three things architects, application designers, and developers need:
If this API work needs to hold up under production pressure, API design support shows how Taliferro turns integration work into working execution, and the Momentum System keeps the work tied to outcomes instead of activity.
Time-based snapshot - A requirement to display asset state at particular points in time.
The right level of granularity - Ensure the right level is considered for data, services, and user display consumption.
Don't break subscribers - Any subscribers to a web service exposed should not break the subscriber's code.
Horizontal data growth - Based on plans to import data from various systems, ensure there is a path for flat data growth.
Decouple - Decouple the view from the middleware, and the middleware from the data. Avoid tight coupling wherever possible.
State rebuild - The system's current state should be able to be rebuilt at any point.
Data consistency across services - Data accessed through web services must be consistent regardless of the consumer.
Serve only data needed by the Client - Avoid retrieving or gathering data the client did not request. Totals, lists, and other queries should not exceed the initial request by the client.
Prepare and ensure data is available - Set up triggers to prepare data before the information is needed; for example, when a user logs in, retrieve and persist in advance only the data required by the user IF the data is not currently persisted.
Use the Materialized View Pattern - The materialized view pattern is used to prepopulate views of data to avoid unnecessary query operations. A materialized view can significantly improve performance.
Use the Circuit Breaker Pattern - In some cases, the services a user needs may not be available, or the data may not be available. Resource threads might be consumed by the caller while waiting for the other service to respond. This could lead to resource exhaustion, which would make the calling service unable to handle other requests. The failure of one service can potentially cascade to other services. The client should invoke a remote service via a proxy similar to an electrical circuit breaker. When the number of consecutive failures crosses a threshold, the circuit breaker trips and all attempts to invoke the remote service will fail immediately. After the timeout expires, the circuit breaker allows a limited number of test requests to pass through. If those requests succeed the circuit breaker resumes normal operation. If there is still a failure, the timeout period begins again.
API Gateway - Allows clients to access individual services at a micro level. The granularity of the API should be fine-grained to allow clients to interact with multiple services as, typically, the services that are provided are different than the client's needs.
A project's technical architecture comprises multiple environments. These environments include integration, staging, and production, where separate resource groups isolate each domain.
The staging group is not an active environment but is designed to mirror the production environment and assume its activities for real-world testing. Azure provides redundancy and failover capabilities through the use of a configuration setup. Details on configuration and setup will be defined during an Operations Architecture and Deployment Planning phase.
In addition, the external systems used for development and System tests do not belong to a project but are active environments within a company operated by various stakeholders.
Through a set of web services, the architecture should empower developers to assemble new business applications that combine the functionality from multiple systems within a company, providing the end-user with new cross-functional network-enabled applications. The architecture should meet the challenges of:
Turn the article into action with API consulting, connect it to the momentum system, or show us the integration problem.
Want this fixed on your site?
Tell us your URL and what feels slow. We’ll point to the first thing to fix.
Explore Taliferro's free tools: Ask TODD · Find · Email Signature Builder · SayIt · Lead Vault · Meet Maya — or become an affiliate.
More from the blog