There are no easy decisions in software architecture. Instead, there are many hard parts: difficult problems or issues with no best practices that force you to choose among various compromises. With this book, you'll learn how to think critically about the trade-offs involved with distributed architectures.