Excellent book, Very useful reference
Rather than being a boring book , Beautiful Architecture, is a well-written and very informative collection of interesting example from real life that should be known by anyone with interest in this field. Even if the systems presented in the book are on different platforms, using totally different technologies, and developed in different periods of time, all share some important aspects related to the architecture.
The book is divided in five parts. The first part is a general presentation on what is an architecture and an example of two software systems, very similar from many aspects like size, appliance, programming language, operating system and even so, one was aborted and one is used in our days. The first one was abandoned mainly because the lake of the design from the binging, hard to add new features, and the amount of effort required to rework, refactor, and correct the problems with the code structure had become prohibitive. The second one, is still in production, still being extended and changed daily. The actual architecture for the second one it is remarkably similar to the original design, with a few notable changes, and a lot more experience to prove the design was right.
The second part is about the "Enterprise Application Architecture". In this part is 4 systems are presented: the scaling problem faced in case of a massively multiplayer online games, the grow of a system for image storage and retrieval for retail offerings of portraits, an example resource-oriented system in which is presented the importance of Web Services in an enterprise application, and in the last chapter the Facebook application system is presented, and how the Facebook Platform was created.
Part three is about System Architecture. It starts by presenting the Xen virtualization platform that has grown from an academic research effort to major open source project. A large part of its success is due to it being released as open source. Then a fault tolerance system is presented, by reviewing the Tandem Operating System designed between 1974 and 1976 and shipped between 1976 and 1982. Chapter nine presents JPC, an x86 PC Emulator in Pure Java. Another Java implementation is presented in chapter ten: Jikes RVM is a successful research virtual machine, providing performance close to the state-of-the-art in a flexible and easy-to-extend manner.
In the fourth part, the End-User Application Architectures are presented. The GNU Emacs text editor architecture is described, and also a comparison with other software like Eclipse and Firefox is provided. Then the KDE project, one of the biggest Free Software, is presented in chapter twelve.
Languages and Architecture are presented in the last part of the book. This parts starts with a comparison between functional and object-oriented programming, continue with some examples of object-oriented programming and ends with some thoughts on beautiful buildings with problems.
From the beginning of a project is very important to have a clear view of the architecture and technologies used, because after some iterations is really hard, or in some situation impossible, to change the entire architectures and in some cases ignoring the architecture can lead to a project fail. A good conclusion for the book would be that: "An architecture influences almost everything that comes into contact with it, determining the health of the codebase and also the health of the surrounding areas."