Автор: Guy Harrison, Andrew Marshall, Charles Custer
Издательство: O’Reilly Media, Inc.
Год: 2023-01-24
Язык: английский
Формат: pdf
Размер: 10.2 MB
You want the very best application performance and you don't want to be limited by the capabilities of your infrastructure. That starts with application design. In this report, you'll discover how to build distributed transactional applications that deliver reliability, scalability, resilience, and elasticity. This short but invaluable guide covers how to:
Set reliability, scalability, resilience, and elasticity goals for your applications
Plan for multiregion scale
Scale an elastic global app
Build with regional data regulations in mind
Plan for database survivability
Architect and build with distributed SQL best practices
Decide which applications should be distributed
Find the architectural "sweet spot" that provides a particularly compelling combination of economics, elasticity, and high availability
This report is an architectural guide for software professionals who are considering implementing a distributed transactional application.
A distributed application is an application implemented on multiple networked computers. A transactional application is an application that can correctly process simultaneous updates from multiple users. As we’ll see in subsequent sections, distributed applications—and increasingly transactional distributed applications—are rapidly becoming the new normal for modern software products. This is because the combination of transactional and distributed technologies allows for greater application resilience, scalability, and correctness—mandatory attributes for modern applications.
However, distributed applications pose unique challenges, and implementing transactional behavior in a distributed context is particularly tricky. The advantages of the distributed transactional architecture are undeniable—but so are the problems and the risks!
Kubernetes controls, or orchestrates, the containers that comprise a distributed application. A Kubernetes cluster consists of a number of nodes, each of which hosts one or more containers. Kubernetes provides a high-level abstraction called a Pod. A Pod consists of one or more containers with shared storage, networking, and namespaces. Although it might be possible to implement a microservice entirely in a single container, modularity is improved by allowing for containers that implement shared services across multiple Pods. Pods also often include sidecar containers. The sidecar typically provides common services across a range of Pods, such as monitoring, alerting, logging, and network abstraction.
This report is for software developers, architects, and operational staff who want to understand the benefits and challenges of distributed transactional software architecture. We try not to assume any specific technology background, but some familiarity with databases, software development frameworks, and cloud services would be advantageous.
Скачать Architecting Distributed Transactional Applications