本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
图书基本信息 | |
图书名称 | 云原生开发:使用容器、函数和数据构建下一代应用程序 |
作者 | Boris,Scholl,Trent,Swanson,Pet |
定价 | 78元 |
出版社 | 东南大学出版社 |
ISBN | 9787564188801 |
出版日期 | 2020-06-01 |
字数 | |
页码 | 213 |
版次 | |
装帧 | 平装 |
开本 | 16开 |
商品重量 |
内容提要 | |
开发者在一次接触云计算的时候往往感到非常困难。既需要学习分布式系统,熟悉诸如容器和函数之类的技术,还得知道如何将这些东西组合在一起,过程实在令人生畏。通过这本实用的指导书,你将了解构建云原生应用程序的模式以及消息传递、事件处理和DevOps等常见任务的实践。n 作者Boris Scholl、Trent Swanson和Peter Jausovec为你阐述了现代云原生应用程序的架构模块。你将了解如何使用微服务、容器、无服务器计算、存储类型、可移植性和函数。你还将探索云原生应用程序的基础知识,包括如何设计、开发和操作它们。 |
目录 | |
Prefacen 1. Introductioto Cloud Nativen Distributed Systemsn Fallacies of Distributed Systemsn CAP Theoremn The Twelve-Factor Appn Availability and Service-Level Agreementsn Summaryn 2. Fundamentalsn Containersn Container IsolatioLevelsn Container Orchestrationn Kuberes Overviewn Kuberes and Containersn Serverless Computingn Functionsn From VMs to Cloud Nativen Lift-and-Shiftn ApplicatioModernizationn ApplicatioOptimizationn Microservicesn Benefits of a Microservices Architecturen Challenges with a Microservices Architecturen Summaryn 3. Designing Cloud Native Applicationsn Fundamentals of Cloud Native Applicationsn Operational Excellencen Securityn Reliability and Availabilityn Scalability and Costn Cloud Native versus Traditional Architecturesn Functions versus Servicesn FunctioScenariosn Considerations for Using Functionsn Composite of Functions and Servicesn API Desigand Versioningn API Backward and Forward Compatibilityn Semantic Versioningn Service Communicationn Protocolsn Messaging Protocolsn SerializatioConsiderationsn Idempotencyn Request/Responsen Publisher/Subscribern Choosing BetweePub/Sub and Request Responsen Synchronous versus Asynchronousn Gatewaysn Routingn Aggregationn Offloadingn Implementing Gatewaysn Egressn Service Meshn Example Architecturen Summaryn 4. Working with Datan Data Storage Systemsn Objects, Files, and Disksn Databasesn Streams and Queuesn Blockchainn Selecting a Datastoren Data iMultiple Datastoresn Change Data Capturen Write Changes as aEvent to a Change Logn TransactioSupervisorn Compensating Transactionsn Extract, Transform, and Loadn Microservices and Data Lakesn Client Access to Datan Restricted Client Tokens (Valet-Key)n Database Services with Fine-Grained Access Controln GraphQL Data Servicen Fast Scalable Datan Sharding Datan Caching Datan Content Delivery Networksn Analyzing Datan Streamsn Batchn Data Lakes oObject Storagen Data Lakes and Data Warehousesn Distributed Query Enginesn Databases oKuberesn Storage Volumesn StatefulSetsn DaemonSetsn Summaryn 5. DevOpsn What Is DevOps?n Collaborationn Automationn LeaPrinciples and Processesn Measurementn Sharingn Testingn Test Doublesn Test AutomatioPyramidn Wheto RuWhich Types of Testsn Testing Cadencen Testing iProductionn Development Environments and Toolsn Development Toolsn Development Environmentsn Local Development Environmentsn Local Development with a Remote Clustern Skaffold Development Workflown Remote Cluster Routed to Local Developmentn Cloud Development Environmentsn CI/CDn Source Code Controln Build Stage (CI)n Test Stage (CI)n Deploy Stage (CD)n Release Stage (CD)n Post-Release Stagen Monitoringn Collecting Metricsn Observable Servicesn ConfguratioManagementn Single-Environment Variablen Multiple-Environment Variablesn Adding ConfigMap Data to a Volumen Storing Secretsn Deployment Configurationn Sample CI/CD Flowsn Summaryn 6. Best Practicesn Moving to Cloud Nativen Breaking Up the Monolith for the Right Reasonsn Decouple Simple Services Firstn Learto Operate oa Small Scalen Use aAnticorruptioLayer Patternn Use a Strangler Patternn Come Up with a Data MigratioStrategyn Rewrite Any Boilerplate Coden Reconsider Frameworks, Languages, Data Structures, and Datastoresn Retire Coden Ensuring Resiliencyn Handle Transient Failures with Retriesn Use a Finite Number of Retriesn Use Circuit Breakers for Nontransient Failuresn Graceful Degradationn Use a Bulkhead Patternn Implement Health Checks and Readiness Checksn Define CPU and Memory Limits for Your Containersn Implement Rate Limiting and Throttlingn Ensuring Securityn Treat Security Requirements the Same as Any Other Requirementsn Incorporate Security iYour Designsn Grant Least-Privileged Accessn Use Separate Accounts/Subscriptions/Tenantsn Securely Store All Secretsn Obfuscate Datan Encrypt Data iTransitn Use Federated Identity Managementn Use Role-Based Access Controln Isolate Kuberes Podsn Working with Datan Use Managed Databases and Analytics Servicesn Use a Datastore That Best Fits Data Requirementsn Keep Data iMultiple Regions or Zonesn Use Data Partitioning and Replicatiofor Scalen Avoid Overfetching and Chatty I/On Don't Put Business Logic ithe Databasen Test with Production-like Datan Handle Transient Failuresn Performance and Scalabilityn DesigStateless Services That Scale Outn Use Platform Autoscaling Featuresn Use Cachingn Use Partitioning to Scale Beyond Service Limitsn Functionsn Write Single-Purpose Functionsn Don't ChaiFunctionsn Keep Functions Light and Simplen Make Functions Statelessn Separate FunctioEntry Point from the FunctioLogi Avoid Long-Running Functionsn Use Queues for Cross-FunctioCommunicationn Operationsn Deployments and Releases Are Separate Activitiesn Keep Deployments Smalln CI/CD DefinitioLives with the Componentn Consistent ApplicatioDeploymentn Use Zero-Downtime Releasesn Don't Modify Deployed Infrastructuren Use Containerized Buildn Describe Infrastructure Using Coden Use Namespaces to Organize Services iKuberesn Isolate the Environmentsn Separate FunctioSource Coden Correlate Deployments with Commitsn Logging, Monitoring, and Alertingn Use a Unified Logging Systemn Use CorrelatioIDsn Include Context with Log Entriesn Commoand Structured Logging Formatn Tag Your Metrics Appropriatelyn Avoid Alert Fatiguen Define and Alert oKey Performance Indicatorsn Continuous Testing iProductionn Start with Basic Metricsn Service Communicationn Desigfor Backward and Forward Compatibilityn Define Service Contracts That Do Not Leak Internal Detailsn Prefer Asynchronous Communicationn Use Efficient SerializatioTechniquesn Use Queues or Streams to Handle Heavy Loads and Traffic Spikesn Batch Requests for Efficiencyn Split Up Large Messagesn Containersn Store Images ia Trusted Registryn Utilize the Docker Build Cachen Don't RuContainers iPrivileged Moden Use Explicit Container Image Tagsn Keep Container Images Smalln RuOne Applicatioper Containern Use Verified Images from Trusted Repositoriesn Use Vulnerability Scanning Tools oImagesn Don't Store Data iContainersn Never Store Secrets or ConfiguratioInside aImagen Summaryn 7. Portabilityn Why Make Applications Portable?n The Costs of Portabilityn Data Gravity and Portabilityn Wheand How to Implement Portabilityn Standardized Interfacesn CommoServices and Featuresn Abstractions and Layersn Managed Services from Other Vendorsn Portability Toolingn Kuberes as a Portability Layern Summaryn Index |