A significant percentage of large-scale enterprises experience performance issues with their business-critical applications. Most of the production systems have been built on top of legacy, monolith technologies. The recent popularity of micro-services will not fulfill its promise of decoupled, scalable, and fault-tolerant systems, unless “done right”. While entering the world of micro-services, engineers start building distributed applications, where robust remote procedure calls and cluster coordination are a must.
You will look at various technologies, algorithms, and design patterns here. Some of them are Service Registry and Discovery, Service Mesh, Apache Cassandra ETCD (coordinator managing Kubernetes clusters), Apache Kafka, Idempotent service design, retry logic, Sharding, and Consistent Hashing, Client-side Load Balancing, Distributed Tracing, Canary Deployment, Sidecar Pattern, Circuit Breaker, and many more. Finally, you will also see the principles of various distributed systems designs; for example, master-less versus with leaders, poll-based versus push-based, immediate versus eventual consistency.
After completing the course, learning new distributed database technology would be easier, because you will know the commonly reused techniques, including their pros and cons.
All the resource files are available on the GitHub repository at https://github.com/PacktPublishing/Building-Modern-Distributed-Systems-…
Look at the concepts of distributed systems
Understand synchronous and asynchronous communication patterns
Study service meshes and Idempotent service design
Differentiate between traditional RDBMS systems and NoSQL
Learn deployment requirements for strongly consistent distributed systems
Build distributed URL-shortening services like Tiny-URL
You will need proficiency in Java programming language, and an open mind to discover the challenges of distributed computing. Beginner-level knowledge in the Spring Boot framework will help you get along with the course easily.