Event sourcing is a software architectural pattern that stores a log of all changes made to a system’s state as a sequence of events, allowing the system to reconstruct its current state and track the history of changes.
The bulkhead pattern helps to improve the stability and resiliency of a system by isolating components or resources into separate pools or partitions, allowing the system to continue functioning even if one part fails.
The circuit breaker pattern helps to prevent further failures in a system by tripping a circuit breaker and failing fast when failures occur, improving the system’s resiliency and stability.
CQRS (Command Query Responsibility Segregation) is a software architectural pattern that separates the responsibility for modifying data (commands) from the responsibility for reading data (queries) into separate objects or components, allowing for more efficient and scalable handling of data in a system.
Functional programming is a programming paradigm that emphasizes the use of pure functions and immutable data to create programs that are easy to reason about and maintain.
The saga pattern is a software design pattern that allows a system to coordinate the completion of long-running, complex transactions by breaking them down into a series of smaller, independent steps or “sagas,” and ensuring that each step is completed or compensated for if an error occurs.
sbt is a build tool that is designed to make it easy to manage the compilation, testing, and distribution of JVM code. It is the most widely used of the build tools for Scala projects. sbt uses a simple, declarative syntax for defining the dependencies and tasks needed to build a Scala project, and it provides a set of built-in tasks for common build operations such as compiling code, running tests, and packaging code for deployment. sbt is designed to be easy to use and highly extensible, and it is widely used in the Scala community for building and managing Scala projects.
Sharding is a database scalability technique that involves dividing a large database into smaller, independent shards or partitions and distributing the data across multiple servers or nodes, allowing the database to scale horizontally and handle a larger amount of data and queries.
The strangler fig pattern is a software design pattern that involves gradually replacing parts of a legacy system with a new system by wrapping the legacy system with a new interface and redirecting traffic to the new system over time, allowing the legacy system to be replaced without disrupting the existing system.
Software patterns are recurring solutions to common software design problems that can be used to improve the structure, maintainability, and reusability of software.
Bash (short for “Bourne-Again Shell”) is a Unix shell and command-language interpreter that is commonly used to execute commands and scripts on Unix-like operating systems such as Linux and macOS.
Scripting is the process of creating and executing a series of commands or instructions, often with the goal of automating tasks or generating output within a larger application or system, using a script language that is interpreted at runtime rather than compiled into a standalone program.
Streaming systems are computer systems designed to continuously process and analyze data as it is generated or received in real time, allowing organizations to extract insights and take action on data as it becomes available, rather than having to wait for data to be stored and processed in batch.
CRDTs (Conflict-free Replicated Data Types) are data structures that allow multiple replicas of a shared data set to be kept in sync without the need for a central authority or global clock, using techniques such as convergence, idempotence, and commutativity to resolve conflicts and ensure consistency among the replicas.
TLA+ is a language for modeling software above the code level and hardware above the circuit level. The tool most commonly used by engineers is the TLC model checker, but there is also a proof checker. TLA+ is based on mathematics and does not resemble any programming language. Most engineers will find PlusCal, described below, to be the easiest way to start using TLA+.