We are continuing to study an interesting book about Google’s culture and practices:
Chapter 2 covers:
Working in isolation vs working in a team. Amount of time that you and your team spend communicating and in interpersonal conflict. How a small investment in understanding personalities and working styles of yourself and others can go a long way toward improving productivity. If you want to work effectively with a team or a large organization, be aware of your preferred working style and that of others.
Our IT books club has started reading new book - about Software Engineering at Google - processes, culture, and tools that help Google create and maintain high-quality software. First chapter is about Software Engineering in general:
What is Software Engineering vs Software Development/Programming? Three principles Google consider: Time and Change Scale and Growth Trade-offs and Costs How these three principles are applied to Software Engineering and how it is different from Software Development/Programming Interesting opening chapter of the book:
Earlier the book club of our company has studied excellent book:
Martin Kleppmann - Designing Data-Intensive Applications
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 12 is a summary of the book and a visionary view of the future.
Data Integration. Overview of the ways we have to integrate data. Causality and why we need Total Order and Idempotency.
Earlier the book club of our company has studied excellent book:
Martin Kleppmann - Designing Data-Intensive Applications
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 11 discovers all aspects about Stream Processing. If your system needs to process some data on-the-fly then your DEV team should learn this info.
Approaches for transmitting events: Direct messaging, Messaging Systems and Partitioned Logs.
Earlier the book club of our company has studied excellent book:
Martin Kleppmann - Designing Data-Intensive Applications
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 10 discovers all aspects about big data Batch Processing. If your system needs to process some data then your DEV team should learn this info.
Unix tools for batch processing and brilliant concept of pipes.
Earlier the book club of our company has studied excellent book:
Martin Kleppmann - Designing Data-Intensive Applications
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 9 tells about Consistency and Consensus in distributed systems. It covers the following topics:
What is consistency and eventual consistency Linearizability. Why it is needed. Difference from Serializability.
Earlier the book club of our company has studied excellent book:
Martin Kleppmann - Designing Data-Intensive Applications
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 8 discovers non-database related problems of distributed systems. DEV teams should consider them when designing distributed software.
Faults and Partial Failures. The need to build a reliable system from unreliable components.
Earlier the book club of our company has studied excellent book:
Martin Kleppmann - Designing Data-Intensive Applications
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 7 is all your DEV team should know about Transactions:
The purpose of transactions The concept of transaction: ACID, BASE, single-object and multi-object transactions Weak Isolation Levels: Read Committed, Snapshot Isolation and Repeatable Read.
Earlier the book club of our company has studied excellent book:
Martin Kleppmann - Designing Data-Intensive Applications
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 6 contains everything the DEV team should consider when designing storage for big data:
Partition aka Shard aka Region aka Tablet aka vNode aka vBucket. It is another approach for storing the data in addition to Replication (reviewed in the previous chapter) How to partition key-value data (primary index).
Earlier the book club of our company has studied excellent book:
Martin Kleppmann - Designing Data-Intensive Applications
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 5:
Intro. How to scale apps. Replicating and partitioning. Three algos of replicating Single-leader Replication Leaders and Followers Sync and async replication Adding new Followers Handling node outages Technical implementations and all potential problems Multi-Leader Replication Use-cases when it is good Handling write conflicts Three topologies and potential problems Leaderless Replication Writing to the database when a node is down Quorums and problems with them Detecting concurrent writes and how to resolve them Download full mind map (PDF)