Best Computer Hardware Design & Architecture Books
If you want to know what the best computer architecture books are, then this article is for you.
1. Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
Author: by Robert Martin
Practical Software Architecture Solutions from the Legendary Robert C. Martin (Uncle Bob) By applying universal rules of software architecture, you can dramatically improve developer productivity throughout the life of any software system. Now, building upon the success of his best-selling books Clean Code and The Clean Coder, legendary software craftsman Robert C.
Martin (Uncle Bob) reveals those rules and helps you apply them. Martin’s Clean Architecture doesn’t merely present options. Drawing on over a half-century of experience in software environments of every imaginable type, Martin tells you what choices to make and why they are critical to your success.
As you’ve come to expect from Uncle Bob, this book is packed with direct, no-nonsense solutions for the real challenges you’ll facethe ones that will make or break your projects. Learn what software architects need to achieveand core disciplines and practices for achieving it Master essential software design principles for addressing function, component separation, and data management See how programming paradigms impose discipline by restricting what developers can do Understand what’s critically important and what’s merely a detail Implement optimal, high-level structures for web, database, thick-client, console, and embedded applications Define appropriate boundaries and layers, and organize components and services See why designs and architectures go wrong, and how to prevent (or fix) these failures Clean Architecture is essential reading for every current or aspiring software architect, systems analyst, system designer, and software managerand for every programmer who must execute someone else’s designs.
2. Software Engineering at Google: Lessons Learned from Programming Over Time
Author: by Titus Winters
Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering. How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life?
Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world’s leading practitioners construct and maintain software. This book covers Google’s unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization.
You’ll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code:How time affects the sustainability of software and how to make your code resilient over timeHow scale affects the viability of software practices within an engineering organizationWhat trade-offs a typical engineer needs to make when evaluating design and development decisions.
3. Web Scalability for Startup Engineers
Author: by Artur Ejsmont
Publisher’s Note: Products purchased from Third Party sellers are not guaranteed by the publisher for quality, authenticity, or access to any online entitlements included with the product. Design and build scalable web applications quicklyThis is an invaluable roadmap for meeting the rapid demand to deliver scalable applications in a startup environment.
With a focus on core concepts and best practices rather than on individual languages, platforms, or technologies, Web Scalability for Startup Engineers describes how infrastructure and software architecture work together to support a scalable environment. You’ll learn, step by step, how scalable systems work and how to solve common challenges.
Helpful diagrams are included throughout, and real-world examples illustrate the concepts presented. Even if you have limited time and resources, you can successfully develop and deliver robust, scalable web applications with help from this practical guide. Learn the key principles of good software design required for scalable systemsBuild the front-end layer to sustain the highest levels of concurrency and request ratesDesign and develop web services, including REST-ful APIsEnable a horizontally scalable data layerImplement caching best practicesLeverage asynchronous processing, messaging, and event-driven architectureStructure, index, and store data for optimized search Explore other aspects of scalability, such as automation, project management, and agile teams
4. Building Microservices: Designing Fine-Grained Systems
Author: by Sam Newman
Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.
Microservice technologies are moving quickly. Author Sam Newman provides you with a firm grounding in the concepts while diving into current solutions for modeling, integrating, testing, deploying, and monitoring your own autonomous services. You’ll follow a fictional company throughout the book to learn how building a microservice architecture affects a single domain.
Discover how microservices allow you to align your system design with your organization’s goalsLearn options for integrating a service with the rest of your systemTake an incremental approach when splitting monolithic codebasesDeploy individual microservices through continuous integrationExamine the complexities of testing and monitoring distributed servicesManage security with user-to-service and service-to-service modelsUnderstand the challenges of scaling microservice architectures.
5. Computer Architecture: A Quantitative Approach (The Morgan Kaufmann Series in Computer Architecture and Design)
Author: by John L. Hennessy
Computer Architecture: A Quantitative Approach, Sixth Edition has been considered essential reading by instructors, students and practitioners of computer design for over 20 years. The sixth edition of this classic textbook from Hennessy and Patterson, winners of the 2017 ACM A.M.
Turing Award recognizing contributions of lasting and major technical importance to the computing field, is fully revised with the latest developments in processor and system architecture. The text now features examples from the RISC V (RISC Five) instruction set architecture, a modern RISC instruction set developed and designed to be a free and openly adoptable standard.
It also includes a new chapter on domain specific architectures and an updated chapter on warehouse scale computing that features the first public information on Google’s newest WSC. True to its original mission of demystifying computer architecture, this edition continues the longstanding tradition of focusing on areas where the most exciting computing innovation is happening, while always keeping an emphasis on good engineering design.
6. Architecture Patterns with Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices
Author: by Harry Percival
As Python continues to grow in popularity, projects are becoming larger and more complex. Many Python developers are taking an interest in high-level software design patterns such as hexagonal/clean architecture, event-driven architecture, and the strategic patterns prescribed by domain-driven design (DDD).
But translating those patterns into Python isn’t always straightforward. With this hands-on guide, Harry Percival and Bob Gregory from MADE. Com introduce proven architectural design patterns to help Python developers manage application complexityand get the most value out of their test suites.
Each pattern is illustrated with concrete examples in beautiful, idiomatic Python, avoiding some of the verbosity of Java and C# syntax. Patterns include:Dependency inversion and its links to ports and adapters (hexagonal/clean architecture)Domain-driven design’s distinction between Entities, Value Objects, and Aggregates Repository and Unit of Work patterns for persistent storageEvents, commands, and the message busCommand-query responsibility segregation (CQRS)Event-driven architecture and reactive microservices
7. Patterns of Enterprise Application Architecture
Author: by Martin Fowler
Developers of enterprise applications (e. G reservation systems, supply chain programs, financial systems, etc. Face a unique set of challenges, different than those faced by their desktop system and embedded system peers. For this reason, enterprise developers must uncover their own solutions.
In this new book, noted software engineering expert Martin Fowler turns his attention to enterprise application development. He helps professionals understand the complex – yet critical – aspects of architecture. While architecture is important to all application development, it is particularly critical to the success of an enterprise project, where issues such as performance and concurrent multi-user access are paramount.
The book presents patterns (proven solutions to recurring problems) in enterprise architecture, and the context provided by the author enables the reader to make the proper choices when faced with a difficult design decision.
8. Terraform: Up & Running: Writing Infrastructure as Code
Author: by Yevgeniy Brikman
Terraform has become a key player in the DevOps world for defining, launching, and managing infrastructure as code (IaC) across a variety of cloud and virtualization platforms, including AWS, Google Cloud, Azure, and more. This hands-on second edition, expanded and thoroughly updated for Terraform version 0.
12 and beyond, shows you the fastest way to get up and running. Gruntwork cofounder Yevgeniy (Jim) Brikman walks you through code examples that demonstrate Terraform’s simple, declarative programming language for deploying and managing infrastructure with a few commands. Veteran sysadmins, DevOps engineers, and novice developers will quickly go from Terraform basics to running a full stack that can support a massive amount of traffic and a large team of developers.
Explore changes from Terraform 0.9 through 0. 12, including backends, workspaces, and first-class expressionsLearn how to write production-grade Terraform modulesDive into manual and automated testing for Terraform codeCompare Terraform to Chef, Puppet, Ansible, CloudFormation, and Salt StackDeploy server clusters, load balancers, and databasesUse Terraform to manage the state of your infrastructureCreate reusable infrastructure with Terraform modulesUse advanced Terraform syntax to achieve zero-downtime deployment
9. Understanding Distributed Systems: What every developer should know about large distributed applications
Author: by Roberto Vitillo
Learning to build distributed systems is hard, especially if they are large scale. It’s not that there is a lack of information out there. You can find academic papers, engineering blogs, and even books on the subject. The problem is that the available information is spread out all over the place, and if you were to put it on a spectrum from theory to practice, you would find a lot of material at the two ends, but not much in the middle.
That is why I decided to write a book to teach the fundamentals of distributed systems so that you don’t have to spend countless hours scratching your head to understand how everything fits together. This is the guide I wished existed when I first started out, and it’s based on my experience building large distributed systems that scale to millions of requests per second and billions of devices.
If you develop the back-end of web or mobile applications (or would like to!, this book is for you. When building distributed systems, you need to be familiar with the network stack, data consistency models, scalability and reliability patterns, and much more.
10. Become an Effective Software Engineering Manager: How to Be the Leader Your Development Team Needs
Author: by Dr. Stanier, James
Software startups make global headlines every day. As technology companies succeed and grow, so do their engineering departments. In your career, you’ll may suddenly get the opportunity to lead teams: to become a manager. But this is often uncharted territory.
How can you decide whether this career move is right for you? And if you do, what do you need to learn to succeed?Where do you start? How do you know that you’re doing it right? What does “it” even mean?
And isn’t management a dirty word? This book will share the secrets you need to know to manage engineers successfully. Going from engineer to manager doesn’t have to be intimidating. Engineers can be managers, and fantastic ones at that. Cast aside the rhetoric and focus on practical, hands-on techniques and tools.
You’ll become an effective and supportive team leader that your staff will look up to. Start with your transition to being a manager and see how that compares to being an engineer. Learn how to better organize information, feel productive, and delegate, but not micromanage.
11. Building Event-Driven Microservices: Leveraging Organizational Data at Scale
Author: by Adam Bellemare
Organizations today often struggle to balance business requirements with ever-increasing volumes of data. Additionally, the demand for leveraging large-scale, real-time data is growing rapidly among the most competitive digital industries. Conventional system architectures may not be up to the task.
With this practical guide, you’ll learn how to leverage large-scale data usage across the business units in your organization using the principles of event-driven microservices. Author Adam Bellemare takes you through the process of building an event-driven microservice-powered organization. You’ll reconsider how data is produced, accessed, and propagated across your organization.
Learn powerful yet simple patterns for unlocking the value of this data. Incorporate event-driven design and architectural principles into your own systems. And completely rethink how your organization delivers value by unlocking near-real-time access to data at scale. You’ll learn:How to leverage event-driven architectures to deliver exceptional business valueThe role of microservices in supporting event-driven designsArchitectural patterns to ensure success both within and between teams in your organizationApplication patterns for developing powerful event-driven microservicesComponents and tooling required to get your microservice ecosystem off the ground
12. A Practical Guide to SysML: The Systems Modeling Language (The MK/OMG Press)
Author: by Sanford Friedenthal
A Practical Guide to SysML, Third Edition, fully updated for SysML version 1. 4, provides a comprehensive and practical guide for modeling systems with SysML. With their unique perspective as leading contributors to the language, Friedenthal, Moore, and Steiner provide a full description of the language along with a quick reference guide and practical examples to help you use SysML.
The book begins with guidance on the most commonly used features to help you get started quickly. Part 1 explains the benefits of a model-based approach, providing an overview of the language and how to apply SysML to model systems. Part 2 includes a comprehensive description of SysML that provides a detailed understanding that can serve as a foundation for modeling with SysML, and as a reference for practitioners.
Part 3 includes methods for applying model-based systems engineering using SysML to specify and design systems, and how these methods can help manage complexity. Part 4 deals with topics related to transitioning MBSE practice into your organization, including integration of the system model with other engineering models, and strategies for adoption of MBSE.
13. Backyard Foundry for Home Machinists (Fox Chapel Publishing) Metal Casting in a Sand Mold for the Home Metalworker; Information on Materials & Equipment, Pattern-Making, Molding & Core-Boxes, and More
Author: by B. Terry Aspin
Fox Chapel Publishing
Create your own home foundry for custom casting! Includes information for:PatternsPlate patternsCores, core boxes, and core makingCasting locomotive cylindersWheelsMetal, the furnace, and meltingDesign for a solid-fuel furnaceThe process of casting metal in a sand mold, a craft which has been practiced for centuries, is actually very simple.
Most towns of any size once had a small foundry to perform small-scale casting jobs. Today’s home shop machinist must either adapt commercially available castings or send away to a specialist foundry at considerable expense and delay. The alternative is to make your own custom patterns and castings, which is much easier and rewarding than you may think!
This handy book will show you how. Backyard Foundry for Home Machinists is essential reading for anyone interested in getting started in foundry or casting work. It provides a wealth of useful information on materials and techniques, pattern-making, molding boxes, cores and core-boxes, and melting metals.
14. Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services
Author: by Brendan Burns
Without established design patterns to guide them, developers have had to build distributed systems from scratch, and most of these systems are very unique indeed. Today, the increasing use of containers has paved the way for core distributed system patterns and reusable containerized components.
This practical guide presents a collection of repeatable, generic patterns to help make the development of reliable distributed systems far more approachable and efficient. Author Brendan BurnsDirector of Engineering at Microsoft Azuredemonstrates how you can adapt existing software design patterns for designing and building reliable distributed applications.
Systems engineers and application developers will learn how these long-established patterns provide a common language and framework for dramatically increasing the quality of your system. Understand how patterns and reusable components enable the rapid development of reliable distributed systemsUse the side-car, adapter, and ambassador patterns to split your application into a group of containers on a single machineExplore loosely coupled multi-node distributed patterns for replication, scaling, and communication between the componentsLearn distributed system patterns for large-scale batch data processing covering work-queues, event-based processing, and coordinated workflows
15. Technology Strategy Patterns: Architecture as Strategy
Author: by Eben Hewitt
Technologists who want their ideas heard, understood, and funded are often told to speak the language of businesswithout really knowing what that is. This book’s toolkit provides architects, product managers, technology managers, and executives with a shared languagein the form of repeatable, practical patterns and templatesto produce great technology strategies.
Author Eben Hewitt developed 39 patterns over the course of a decade in his work as CTO, CIO, and chief architect for several global tech companies. With these proven tools, you can define, create, elaborate, refine, and communicate your architecture goals, plans, and approach in a way that executives can readily understand, approve, and execute.
This book covers:Architecture and strategy: Adopt a strategic architectural mindset to make a meaningful material impactCreating your strategy: Define the components of your technology strategy using proven patternsCommunicating the strategy: Convey your technology strategy in a compelling way to a variety of audiencesBringing it all together: Employ patterns individually or in clusters for specific problems; use the complete framework for a comprehensive strategy
16. Compilers: Principles, Techniques, and Tools
Author: by Alfred Aho
Compilers: Principles, Techniques and Tools, known to professors, students, and developers worldwide as the “Dragon Book,” is available in a new edition. Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published.
The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development.