- Cloud Native Development Patterns and Best Practices
- John Gilbert
- 364字
- 2021-06-30 18:43:04
Data
The topics of single responsibility, independent DURS, bounded context, and isolation come up over and over again in the context of microservices. I cover these topics at length in this book as well. The topic of a database per service also comes up over and over again in the same context. It's the combination of these topics that is rarely covered, though that is beginning to change. Earlier in this chapter, we discussed the critical idea of turning the database inside out and in turn how the cloud is the database. Bounded isolated data, as a part of the whole of a component, is fundamental to building cloud-native systems that are responsive, resilient, and elastic. Unfortunately, there is a tendency to gravitate toward shared monolithic databases. This is in part because that is the way it has always been. The other reason for this tendency towards monolithic databases is that managing and operating a database in the cloud at a large scale is hard. Managing a sharded database is more difficult and managing Polyglot Persistence is even more difficult. We have already covered this briefly, but as a core tenet of this book it bears repeating.
The result of this shared monolithic database model is that we have no bulkheads for our data. More and more tables are added to the monolithic database, ever increasing the probability that these tables will be competing for the same, scarce resources. In the best case, the database requests only increase in latency as they compete for the available memory, I/O throughput, and CPU cycles. Or worse, lack of disk space causes the database to crash and results in an outage across the entire system. Ultimately, if we have no isolation at the persistence layer then we effectively have no isolation at the component layer. Instead, each component must have its own isolated databases. Taking this one step further, we discussed how mature cloud-native systems are multi-regional, because they need to be resilient to regional outages. This means that mature cloud-native data must also be multi-regional. Thus, the persistence layer is an example of where we need a different way of thinking and reasoning about software architecture.
- 樂高機(jī)器人:WeDo編程與搭建指南
- Splunk 7 Essentials(Third Edition)
- 平面設(shè)計初步
- Mastering VMware vSphere 6.5
- 手把手教你玩轉(zhuǎn)RPA:基于UiPath和Blue Prism
- Hands-On Machine Learning with TensorFlow.js
- 最簡數(shù)據(jù)挖掘
- Mastering Machine Learning Algorithms
- 系統(tǒng)安裝與重裝
- 運(yùn)動控制系統(tǒng)應(yīng)用與實踐
- Implementing AWS:Design,Build,and Manage your Infrastructure
- 愛犯錯的智能體
- TensorFlow Reinforcement Learning Quick Start Guide
- Visual Studio 2010 (C#) Windows數(shù)據(jù)庫項目開發(fā)
- ZigBee無線通信技術(shù)應(yīng)用開發(fā)