云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)

云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
2020-06
ISBN: 9787564188801
定价: 78.00
装帧: 其他
5人买过
  •   开发者在一次接触云计算的时候往往感到非常困难。既需要学习分布式系统,熟悉诸如容器和函数之类的技术,还得知道如何将这些东西组合在一起,过程实在令人生畏。通过这本实用的指导书,你将了解构建云原生应用程序的模式以及消息传递、事件处理和DevOps等常见任务的实践。


      作者Boris Scholl、Trent Swanson和Peter Jausovec为你阐述了现代云原生应用程序的架构模块。你将了解如何使用微服务、容器、无服务器计算、存储类型、可移植性和函数。你还将探索云原生应用程序的基础知识,包括如何设计、开发和操作它们。 Preface


    1. Introduction to Cloud Native


    Distributed Systems


    Fallacies of Distributed Systems


    CAP Theorem


    The Twelve-Factor App


    Availability and Service-Level Agreements


    Summary


    2. Fundamentals


    Containers


    Container Isolation Levels


    Container Orchestration


    Kubernetes Overview


    Kubernetes and Containers


    Serverless Computing


    Functions


    From VMs to Cloud Native


    Lift-and-Shift


    Application Modernization


    Application Optimization


    Microservices


    Benefits of a Microservices Architecture


    Challenges with a Microservices Architecture


    Summary


    3. Designing Cloud Native Applications


    Fundamentals of Cloud Native Applications


    Operational Excellence


    Security


    Reliability and Availability


    Scalability and Cost


    Cloud Native versus Traditional Architectures


    Functions versus Services


    Function Scenarios


    Considerations for Using Functions


    Composite of Functions and Services


    API Design and Versioning


    API Backward and Forward Compatibility


    Semantic Versioning


    Service Communication


    Protocols


    Messaging Protocols


    Serialization Considerations


    Idempotency


    Request/Response


    Publisher/Subscriber


    Choosing Between Pub/Sub and Request Response


    Synchronous versus Asynchronous


    Gateways


    Routing


    Aggregation


    Offloading


    Implementing Gateways


    Egress


    Service Mesh


    Example Architecture


    Summary


    4. Working with Data


    Data Storage Systems


    Objects, Files, and Disks


    Databases


    Streams and Queues


    Blockchain


    Selecting a Datastore


    Data in Multiple Datastores


    Change Data Capture


    Write Changes as an Event to a Change Log


    Transaction Supervisor


    Compensating Transactions


    Extract, Transform, and Load


    Microservices and Data Lakes


    Client Access to Data


    Restricted Client Tokens (Valet-Key)


    Database Services with Fine-Grained Access Control


    GraphQL Data Service


    Fast Scalable Data


    Sharding Data


    Caching Data


    Content Delivery Networks


    Analyzing Data


    Streams


    Batch


    Data Lakes on Object Storage


    Data Lakes and Data Warehouses


    Distributed Query Engines


    Databases on Kubernetes


    Storage Volumes


    StatefulSets


    DaemonSets


    Summary


    5. DevOps


    What Is DevOps?


    Collaboration


    Automation


    Lean Principles and Processes


    Measurement


    Sharing


    Testing


    Test Doubles


    Test Automation Pyramid


    When to Run Which Types of Tests


    Testing Cadence


    Testing in Production


    Development Environments and Tools


    Development Tools


    Development Environments


    Local Development Environments


    Local Development with a Remote Cluster


    Skaffold Development Workflow


    Remote Cluster Routed to Local Development


    Cloud Development Environments


    CI/CD


    Source Code Control


    Build Stage (CI)


    Test Stage (CI)


    Deploy Stage (CD)


    Release Stage (CD)


    Post-Release Stage


    Monitoring


    Collecting Metrics


    Observable Services


    Confguration Management


    Single-Environment Variable


    Multiple-Environment Variables


    Adding ConfigMap Data to a Volume


    Storing Secrets


    Deployment Configuration


    Sample CI/CD Flows


    Summary


    6. Best Practices


    Moving to Cloud Native


    Breaking Up the Monolith for the Right Reasons


    Decouple Simple Services First


    Learn to Operate on a Small Scale


    Use an Anticorruption Layer Pattern


    Use a Strangler Pattern


    Come Up with a Data Migration Strategy


    Rewrite Any Boilerplate Code


    Reconsider Frameworks, Languages, Data Structures, and Datastores


    Retire Code


    Ensuring Resiliency


    Handle Transient Failures with Retries


    Use a Finite Number of Retries


    Use Circuit Breakers for Nontransient Failures


    Graceful Degradation


    Use a Bulkhead Pattern


    Implement Health Checks and Readiness Checks


    Define CPU and Memory Limits for Your Containers


    Implement Rate Limiting and Throttling


    Ensuring Security


    Treat Security Requirements the Same as Any Other Requirements


    Incorporate Security in Your Designs


    Grant Least-Privileged Access


    Use Separate Accounts/Subscriptions/Tenants


    Securely Store All Secrets


    Obfuscate Data


    Encrypt Data in Transit


    Use Federated Identity Management


    Use Role-Based Access Control


    Isolate Kubernetes Pods


    Working with Data


    Use Managed Databases and Analytics Services


    Use a Datastore That Best Fits Data Requirements


    Keep Data in Multiple Regions or Zones


    Use Data Partitioning and Replication for Scale


    Avoid Overfetching and Chatty I/O


    Don't Put Business Logic in the Database


    Test with Production-like Data


    Handle Transient Failures


    Performance and Scalability


    Design Stateless Services That Scale Out


    Use Platform Autoscaling Features


    Use Caching


    Use Partitioning to Scale Beyond Service Limits


    Functions


    Write Single-Purpose Functions


    Don't Chain Functions


    Keep Functions Light and Simple


    Make Functions Stateless


    Separate Function Entry Point from the Function Logic


    Avoid Long-Running Functions


    Use Queues for Cross-Function Communication


    Operations


    Deployments and Releases Are Separate Activities


    Keep Deployments Small


    CI/CD Definition Lives with the Component


    Consistent Application Deployment


    Use Zero-Downtime Releases


    Don't Modify Deployed Infrastructure


    Use Containerized Build


    Describe Infrastructure Using Code


    Use Namespaces to Organize Services in Kubernetes


    Isolate the Environments


    Separate Function Source Code


    Correlate Deployments with Commits


    Logging, Monitoring, and Alerting


    Use a Unified Logging System


    Use Correlation IDs


    Include Context with Log Entries


    Common and Structured Logging Format


    Tag Your Metrics Appropriately


    Avoid Alert Fatigue


    Define and Alert on Key Performance Indicators


    Continuous Testing in Production


    Start with Basic Metrics


    Service Communication


    Design for Backward and Forward Compatibility


    Define Service Contracts That Do Not Leak Internal Details


    Prefer Asynchronous Communication


    Use Efficient Serialization Techniques


    Use Queues or Streams to Handle Heavy Loads and Traffic Spikes


    Batch Requests for Efficiency


    Split Up Large Messages


    Containers


    Store Images in a Trusted Registry


    Utilize the Docker Build Cache


    Don't Run Containers in Privileged Mode


    Use Explicit Container Image Tags


    Keep Container Images Small


    Run One Application per Container


    Use Verified Images from Trusted Repositories


    Use Vulnerability Scanning Tools on Images


    Don't Store Data in Containers


    Never Store Secrets or Configuration Inside an Image


    Summary


    7. Portability


    Why Make Applications Portable?


    The Costs of Portability


    Data Gravity and Portability


    When and How to Implement Portability


    Standardized Interfaces


    Common Services and Features


    Abstractions and Layers


    Managed Services from Other Vendors


    Portability Tooling


    Kubernetes as a Portability Layer


    Summary


    Index
  • 内容简介:
      开发者在一次接触云计算的时候往往感到非常困难。既需要学习分布式系统,熟悉诸如容器和函数之类的技术,还得知道如何将这些东西组合在一起,过程实在令人生畏。通过这本实用的指导书,你将了解构建云原生应用程序的模式以及消息传递、事件处理和DevOps等常见任务的实践。


      作者Boris Scholl、Trent Swanson和Peter Jausovec为你阐述了现代云原生应用程序的架构模块。你将了解如何使用微服务、容器、无服务器计算、存储类型、可移植性和函数。你还将探索云原生应用程序的基础知识,包括如何设计、开发和操作它们。
  • 目录:
    Preface


    1. Introduction to Cloud Native


    Distributed Systems


    Fallacies of Distributed Systems


    CAP Theorem


    The Twelve-Factor App


    Availability and Service-Level Agreements


    Summary


    2. Fundamentals


    Containers


    Container Isolation Levels


    Container Orchestration


    Kubernetes Overview


    Kubernetes and Containers


    Serverless Computing


    Functions


    From VMs to Cloud Native


    Lift-and-Shift


    Application Modernization


    Application Optimization


    Microservices


    Benefits of a Microservices Architecture


    Challenges with a Microservices Architecture


    Summary


    3. Designing Cloud Native Applications


    Fundamentals of Cloud Native Applications


    Operational Excellence


    Security


    Reliability and Availability


    Scalability and Cost


    Cloud Native versus Traditional Architectures


    Functions versus Services


    Function Scenarios


    Considerations for Using Functions


    Composite of Functions and Services


    API Design and Versioning


    API Backward and Forward Compatibility


    Semantic Versioning


    Service Communication


    Protocols


    Messaging Protocols


    Serialization Considerations


    Idempotency


    Request/Response


    Publisher/Subscriber


    Choosing Between Pub/Sub and Request Response


    Synchronous versus Asynchronous


    Gateways


    Routing


    Aggregation


    Offloading


    Implementing Gateways


    Egress


    Service Mesh


    Example Architecture


    Summary


    4. Working with Data


    Data Storage Systems


    Objects, Files, and Disks


    Databases


    Streams and Queues


    Blockchain


    Selecting a Datastore


    Data in Multiple Datastores


    Change Data Capture


    Write Changes as an Event to a Change Log


    Transaction Supervisor


    Compensating Transactions


    Extract, Transform, and Load


    Microservices and Data Lakes


    Client Access to Data


    Restricted Client Tokens (Valet-Key)


    Database Services with Fine-Grained Access Control


    GraphQL Data Service


    Fast Scalable Data


    Sharding Data


    Caching Data


    Content Delivery Networks


    Analyzing Data


    Streams


    Batch


    Data Lakes on Object Storage


    Data Lakes and Data Warehouses


    Distributed Query Engines


    Databases on Kubernetes


    Storage Volumes


    StatefulSets


    DaemonSets


    Summary


    5. DevOps


    What Is DevOps?


    Collaboration


    Automation


    Lean Principles and Processes


    Measurement


    Sharing


    Testing


    Test Doubles


    Test Automation Pyramid


    When to Run Which Types of Tests


    Testing Cadence


    Testing in Production


    Development Environments and Tools


    Development Tools


    Development Environments


    Local Development Environments


    Local Development with a Remote Cluster


    Skaffold Development Workflow


    Remote Cluster Routed to Local Development


    Cloud Development Environments


    CI/CD


    Source Code Control


    Build Stage (CI)


    Test Stage (CI)


    Deploy Stage (CD)


    Release Stage (CD)


    Post-Release Stage


    Monitoring


    Collecting Metrics


    Observable Services


    Confguration Management


    Single-Environment Variable


    Multiple-Environment Variables


    Adding ConfigMap Data to a Volume


    Storing Secrets


    Deployment Configuration


    Sample CI/CD Flows


    Summary


    6. Best Practices


    Moving to Cloud Native


    Breaking Up the Monolith for the Right Reasons


    Decouple Simple Services First


    Learn to Operate on a Small Scale


    Use an Anticorruption Layer Pattern


    Use a Strangler Pattern


    Come Up with a Data Migration Strategy


    Rewrite Any Boilerplate Code


    Reconsider Frameworks, Languages, Data Structures, and Datastores


    Retire Code


    Ensuring Resiliency


    Handle Transient Failures with Retries


    Use a Finite Number of Retries


    Use Circuit Breakers for Nontransient Failures


    Graceful Degradation


    Use a Bulkhead Pattern


    Implement Health Checks and Readiness Checks


    Define CPU and Memory Limits for Your Containers


    Implement Rate Limiting and Throttling


    Ensuring Security


    Treat Security Requirements the Same as Any Other Requirements


    Incorporate Security in Your Designs


    Grant Least-Privileged Access


    Use Separate Accounts/Subscriptions/Tenants


    Securely Store All Secrets


    Obfuscate Data


    Encrypt Data in Transit


    Use Federated Identity Management


    Use Role-Based Access Control


    Isolate Kubernetes Pods


    Working with Data


    Use Managed Databases and Analytics Services


    Use a Datastore That Best Fits Data Requirements


    Keep Data in Multiple Regions or Zones


    Use Data Partitioning and Replication for Scale


    Avoid Overfetching and Chatty I/O


    Don't Put Business Logic in the Database


    Test with Production-like Data


    Handle Transient Failures


    Performance and Scalability


    Design Stateless Services That Scale Out


    Use Platform Autoscaling Features


    Use Caching


    Use Partitioning to Scale Beyond Service Limits


    Functions


    Write Single-Purpose Functions


    Don't Chain Functions


    Keep Functions Light and Simple


    Make Functions Stateless


    Separate Function Entry Point from the Function Logic


    Avoid Long-Running Functions


    Use Queues for Cross-Function Communication


    Operations


    Deployments and Releases Are Separate Activities


    Keep Deployments Small


    CI/CD Definition Lives with the Component


    Consistent Application Deployment


    Use Zero-Downtime Releases


    Don't Modify Deployed Infrastructure


    Use Containerized Build


    Describe Infrastructure Using Code


    Use Namespaces to Organize Services in Kubernetes


    Isolate the Environments


    Separate Function Source Code


    Correlate Deployments with Commits


    Logging, Monitoring, and Alerting


    Use a Unified Logging System


    Use Correlation IDs


    Include Context with Log Entries


    Common and Structured Logging Format


    Tag Your Metrics Appropriately


    Avoid Alert Fatigue


    Define and Alert on Key Performance Indicators


    Continuous Testing in Production


    Start with Basic Metrics


    Service Communication


    Design for Backward and Forward Compatibility


    Define Service Contracts That Do Not Leak Internal Details


    Prefer Asynchronous Communication


    Use Efficient Serialization Techniques


    Use Queues or Streams to Handle Heavy Loads and Traffic Spikes


    Batch Requests for Efficiency


    Split Up Large Messages


    Containers


    Store Images in a Trusted Registry


    Utilize the Docker Build Cache


    Don't Run Containers in Privileged Mode


    Use Explicit Container Image Tags


    Keep Container Images Small


    Run One Application per Container


    Use Verified Images from Trusted Repositories


    Use Vulnerability Scanning Tools on Images


    Don't Store Data in Containers


    Never Store Secrets or Configuration Inside an Image


    Summary


    7. Portability


    Why Make Applications Portable?


    The Costs of Portability


    Data Gravity and Portability


    When and How to Implement Portability


    Standardized Interfaces


    Common Services and Features


    Abstractions and Layers


    Managed Services from Other Vendors


    Portability Tooling


    Kubernetes as a Portability Layer


    Summary


    Index
查看详情
相关图书 / 更多
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生测试实战
孙高飞
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生Kubernetes全栈架构师实战
杜宽
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生网关Traefik:入门、进阶与实战 李杰
李杰
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生应用开发实战——基于.NET开发框架及Kubernetes容器编排技术 51Aspx
51Aspx
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生安全技术实践指南
张福
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生开发实践(计算机技术开发与应用丛书)
高尚衡 著
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生安全
李学峰 编著
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生构建数字世界
丁振海 宋立桓
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生Spring实战 Spring Boot与Kubernetes实践
(美)托马斯·维塔莱(Thomas Vitale)
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生时代的可观测系统最佳实战
罗梦婷 蒲实 著
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生技术中台:从分布式到云平台设计
陈涛 索海燕
云原生开发:使用容器、函数和数据构建下一代应用程序(影印版英文版)
云原生落地:企业级DevOps实践
应阔浩 李建宇 付天时 赵耀 著