本书介绍了构建现代云原生应用的架构模块,包括如何使用微服务,容器,无服务器架构,函数计算等技术,并挑选合适的存储类型,同时考虑可移植性等问题。 l 探讨设计云原生应用所需的技术 l 介绍容器和函数计算的区别,并学习它们的适用场景 l 有针对性地设计应用来满足数据相关的需求 l 学习DevOps的基础知识和一些开发、测试、运维实践 l 学习一些构建和管理云原生应用的技巧、方法和实践 l 理解构建一个具有可移植性的应用所需的代价,并且学会对需求做出取舍
AI Reading Assistant
Whole-book reading guide from stratified index samples; jump to passages in the text
AI guide
【One-Line Pitch】
A practical architecture guide for developers and architects who need to design, build, and operate cloud-native applications using containers, serverless functions, and cloud data services—without being tied to one vendor's cookbook.
【Book Arc】
- **Opening (~0%–11%)**: Frames the shift from traditional servers to cloud-native thinking—distributed-system fallacies, the twelve-factor mindset, and why containers plus orchestration (Kubernetes) become the new baseline.
- **Early (~11%–33%)**: Covers the core building blocks: microservices, containers vs. functions (FaaS), service communication, API compatibility, messaging protocols (MQTT/AMQP), pub/sub, and gateways for ingress/egress traffic control.
- **Middle (~33%–56%)**: Turns to data: object/file/block storage choices, change data capture, GraphQL data services, CDN caching, data lakes vs. warehouses, and running stateful systems on Kubernetes.
- **Late (~56%–78%)**: Moves into DevOps practice—test pyramids, local-to-remote development workflows, slim container images, observability with Prometheus/Grafana, health/readiness probes, and configuration via ConfigMaps.
- **Ending (~78%–100%)**: Closes with migration patterns (strangler/anti-corruption layer), security and shared responsibility, scaling stateless services, deployment hygiene, and the real trade-offs of portability across clouds.
【Key Takeaways】
- **Cloud-native design starts with distributed-system realities** (Opening): network unreliability, latency, and partial failure must shape architecture from day one, not be patched later.
- **Containers and functions solve different problems** (Early): containers suit long-running, stateful-ish services; FaaS suits event-driven, short-lived work—but FaaS cost and network overhead can surprise you.
- **Loose coupling via messaging is a first-class pattern** (Early): pub/sub, MQTT, and AMQP enable event-driven designs; choose based on simplicity vs. feature richness and vendor compatibility.
- **Data storage is a design decision, not an afterthought** (Middle): object storage is the default for files; file and block storage cost more; change data streams let you sync search indexes, analytics, and legacy systems.
- **Testing follows a pyramid, and testability drives design** (Late): unit tests with mocks, service-level tests, and minimal UI tests; if mocking is hard, refactor the code.
- **Small images and small deployments reduce risk** (Late): multi-stage builds and slim base images shrink attack surface and speed up scaling; keep functions single-purpose.
- **Observability must be prepared before release** (Late): define health/liveness/readiness endpoints and a small metric set with rollback rules before routing production traffic.
- **Portability has a price** (Ending): standards like OpenAPI, SMI, and MongoDB-compatible APIs help, but you may lose vendor-specific features and pay for third-party services separately.
【Reading Tips】
- Deep-read Chapters 2–3 for containers, orchestration, and service communication—these are the conceptual spine.
- Skim the data chapter if you already know storage tiers; focus instead on change data capture and GraphQL sections.
- Treat the DevOps and observability chapters as a checklist to apply to your own pipeline, not just theory.
- The portability chapter is best read last, after you understand the trade-offs of the earlier patterns.
【Coverage Limits】
This guide is based on stratified excerpts covering roughly the first through final chapters; some mid-book details on specific cloud provider services and code examples are not fully represented.
Excerpt 1
书名: 云原生:运用容器、函数计算和数据构建下一代应用 ([美] 鲍里斯·肖勒(Boris Scholl) etc.) (Z-Library) 作者: [美] 鲍里斯·肖勒(Boris Scholl), [美] 特伦 特·斯旺森(Trent Swanson), [美] 彼得·加索维 奇(Peter Jausove...
View in text
Excerpt 2
以使应用从故障中 恢复。如前面介绍的那样,微服务架构中每个服务都是独立的,当某 个服务发生故障时,不会导致整个应用故障。对于服务本身而言,你 应当考虑通过水平扩展来提高整个系统的可用性。比如说,一个应用 程序的所有服务都有两个实例在运行,那么无论什么原因导致某个服 务的一个实例失效,整个系统还可以继续工作,这样就...
View in text
Excerpt 3
,可能会有对当前状态进行归档的需求。这个归档 数据很少被访问到,因此它更适合存储在成本较低的存储系统中。 历史遗留系统 替换一个历史遗留系统有时会要求把数据存放到多个存储中。数 据更改的数据流可以用来更新遗留系统中的数据。 在图4-2中,我们看到一个应用程序正在往数据库中写入一个更 改。然后这个更改被计入了更改日...
View in text
Excerpt 4
元测试来解决。在做单元测试时,通常需要模拟和伪造来解决依 赖关系,以便为运行单元测试用例创造条件。比如你现在要为登录服 务编写单元测试,这时候你不需要使用真实的授权服务。你可能还想 测试在授权服务不可用时的情形,或者你想测试无法登录或用户不存 在的情况,类似这些情况下你都需要用到模拟和伪造。 如果你使用模拟服务代...
View in text
Excerpt 5
的服务定义存活性探针。 livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 3 通过这段代码,你告诉Kubernetes平台在第一次开始检查前先等 待5秒钟,然后每3秒钟做一次检查。如果/h...
View in text
Excerpt 6
er API)是标准接口的另 一个示例,平台可以使用它通过Kubernetes这样的平台来创建和管理 云服务商的资源。 服务网格接口(Service Mesh Interface,SMI)定义了一个接 口,你可以使用该接口来实现多种服务网格技术间的互通性,比如 Istio、Consul和Linkerd等不同的服务...
View in text
Tags
AI categories
Cloud NativeDevOpsSoftware
Text Preview (First 20 pages)
Registered users can read the full content for free
Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.
Generating text preview…
Loading comments...
Reply to Comment
Edit Comment