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.
Architecture veterans and practicing consultants Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani discuss strategies for choosing an appropriate architecture. By interweaving a story about a fictional group of technology professionals--the Sysops Squad--they examine everything from how to determine service granularity, manage workflows and orchestration, manage and decouple contracts, and manage distributed transactions to how to optimize operational characteristics, such as scalability, elasticity, and performance.
By focusing on commonly asked questions, this book provides techniques to help you discover and weigh the trade-offs as you confront the issues you face as an architect.
Interested in developing embedded systems? Since they don't tolerate inefficiency, these systems require a disciplined approach to programming. This easy-to-read guide helps you cultivate good development practices based on classic software design patterns and new patterns unique to embedded programming. You'll learn how to build system architecture for processors, not for operating systems, and you'll discover techniques for dealing with hardware difficulties, changing designs, and manufacturing requirements.
Written by an expert who has created systems ranging from DNA scanners to children's toys, this book is ideal for intermediate and experienced programmers, no matter what platform you use. This expanded second edition includes new chapters on IoT and networked sensors, motors and movement, debugging, data handling strategies, and more.
Building software is harder than ever. As a developer, you not only have to chase ever-changing technological trends but also need to understand the business domains behind the software. This practical book provides you with a set of core patterns, principles, and practices for analyzing business domains, understanding business strategy, and, most importantly, aligning software design with its business needs.
Author Vlad Khononov shows you how these practices lead to robust implementation of business logic and help to future-proof software design and architecture. You'll examine the relationship between domain-driven design (DDD) and other methodologies to ensure you make architectural decisions that meet business requirements. You'll also explore the real-life story of implementing DDD in a startup company.
With this book, you'll learn how to:
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 Burnsâ Director of Engineering at Microsoft Azureâ demonstrates 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.
Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This updated edition provides a comprehensive overview of software architecture's many aspects, with five new chapters covering the latest insights from the field. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming architecture, governance, data, generative AI, team topologies, and many other topics.
Mark Richards and Neal Ford--hands-on practitioners who have taught software architecture classes professionally for years--focus on architecture principles that apply across all technology stacks. You'll explore software architecture in a modern light, taking into account all the innovations of the past decade.
This book examines:
Learn how to configure, automate, orchestrate, troubleshoot, and monitor KVM-based environments capable of scaling to private and hybrid cloud models
Key Features
Book Description
Kernel-based Virtual Machine (KVM) enables you to virtualize your data center by transforming your Linux operating system into a powerful hypervisor that allows you to manage multiple operating systems with minimal fuss. With this book, you'll gain insights into configuring, troubleshooting, and fixing bugs in KVM virtualization and related software.
This second edition of Mastering KVM Virtualization is updated to cover the latest developments in the core KVM components - libvirt and QEMU. Starting with the basics of Linux virtualization, you'll explore VM lifecycle management and migration techniques. You'll then learn how to use SPICE and VNC protocols while creating VMs and discover best practices for using snapshots. As you progress, you'll integrate third-party tools with Ansible for automation and orchestration. You'll also learn to scale out and monitor your environments, and will cover oVirt, OpenStack, Eucalyptus, AWS, and ELK stack. Throughout the book, you'll find out more about tools such as Cloud-Init and Cloudbase-Init. Finally, you'll be taken through the performance tuning and troubleshooting guidelines for KVM-based virtual machines and a hypervisor.
By the end of this book, you'll be well-versed with KVM virtualization and the tools and technologies needed to build and manage diverse virtualization environments.
What you will learn
Who this book is for
If you are a systems administrator, DevOps practitioner, or developer with Linux experience looking to sharpen your open-source virtualization skills, this virtualization book is for you. Prior understanding of the Linux command line and virtualization is required before getting started with this book.
The days of separate dev and ops teams are over - knowledge silos and the throw it over the fence culture they create are the enemy of progress. As an engineer or developer, you need to confidently own each stage of the software delivery process. This book introduces a new paradigm, BEAMOps, that helps you build, test, deploy, and debug BEAM applications. Create effective development and deployment strategies; leverage continuous improvement pipelines; and ensure environment integrity. Combine operational orchestrators such as Docker Swarm with the distribution, fault tolerance, and scalability of the BEAM, to create robust and reliable applications.
BEAMOps starts by building a solid foundation for your project. On the infrastructure side, see how to use Terraform before you even start coding to automate your deployment and operations. On the project management side, we show you how to use issues and milestones to simplify tracking; you'll use this foundation as you go through the book, implementing each of the steps required to deploy a scalable Elixir application.
Now that you have a foundation, you can start building. Create a Phoenix LiveView application and explore mix releases. Make your deployments reliable with Docker. Continuously improve your codebase by implementing an efficient continuous deployment/integration pipeline with GitHub Actions. Scale the Phoenix LiveView application and operate a distributed BEAM system in production using AWS EC2 nodes, AWS load balancers, and a remote Docker swarm. Recognize which application metrics should be collected and monitored, and set alerts when certain thresholds are met to ensure that your application auto-scales. Ship less code more often, and ensure it works!
The pragmatic BEAMOps approach that we teach in this book - an extension of the well-known DevOps paradigm - will help you become a multidisciplinary developer who is empowered to own each stage of the software delivery process. After reading this book, you'll understand how to apply the BEAMOps principles in your daily work, creating reliable, scalable, and easy to understand applications in a cooperative team environment.
What You Need:
We're at an inflection point in data, where our data management solutions no longer match the complexity of organizations, the proliferation of data sources, and the scope of our aspirations to get value from data with AI and analytics. In this practical book, author Zhamak Dehghani introduces data mesh, a decentralized sociotechnical paradigm drawn from modern distributed architecture that provides a new approach to sourcing, sharing, accessing, and managing analytical data at scale.
Dehghani guides practitioners, architects, technical leaders, and decision makers on their journey from traditional big data architecture to a distributed and multidimensional approach to analytical data management. Data mesh treats data as a product, considers domains as a primary concern, applies platform thinking to create self-serve data infrastructure, and introduces a federated computational model of data governance.
Do you wish the existing books on site reliability engineering started at the beginning? Do you wish someone would walk you through how to become an SRE, how to think like an SRE, or how to build and grow a successful SRE function in your organization?
Becoming SRE addresses all of these needs and more with three interconnected sections: the essential groundwork for understanding SRE and SRE culture, advice for individuals on becoming an SRE, and guidance for organizations on creating and developing a thriving SRE practice.
Acting as your personal and personable guide, author David Blank-Edelman takes you through subjects like:
Ready to become an SRE or introduce SRE into your organization? This book is here to help.
OpenTelemetry is a revolution in observability data. Instead of running multiple uncoordinated pipelines, OpenTelemetry provides users with a single integrated stream of data, providing multiple sources of high-quality telemetry data: tracing, metrics, logs, RUM, eBPF, and more. This practical guide shows you how to set up, operate, and troubleshoot the OpenTelemetry observability system.
Authors Austin Parker, head of developer relations at Lightstep and OpenTelemetry Community Maintainer, and Ted Young, cofounder of the OpenTelemetry project, cover every OpenTelemetry component, as well as observability best practices for many popular cloud, platform, and data services such as Kubernetes and AWS Lambda. You'll learn how OpenTelemetry enables OSS libraries and services to provide their own native instrumentation--a first in the industry.
Ideal for application developers, OSS maintainers, operators and infrastructure teams, and managers and team leaders, this book guides you through:
Delve into industrial digital transformation and learn how to implement modern business strategies powered by digital technologies as well as organization and cultural optimization
Key Features
Book Description
Digital transformation requires the ability to identify opportunities across industries and apply the right technologies and tools to achieve results. This book is divided into two parts with the first covering what digital transformation is and why it is important. The second part focuses on how digital transformation works.
After an introduction to digital transformation, you will explore the transformation journey in logical steps and understand how to build business cases and create productivity benefit statements. Next, you'll delve into advanced topics relating to overcoming various challenges. Later, the book will take you through case studies in both private and public sector organizations. You'll explore private sector organizations such as industrial and hi-tech manufacturing in detail and get to grips with public sector organizations by learning how transformation can be achieved on a global scale and how the resident experience can be improved. In addition to this, you will understand the role of artificial intelligence, machine learning and deep learning in digital transformation. Finally, you'll discover how to create a playbook that can ensure success in digital transformation.
By the end of this book, you'll be well-versed with industrial digital transformation and be able to apply your skills in the real world.
What you will learn
Who this book is for
This book is for IT leaders, digital strategy leaders, line-of-business leaders, solution architects, and IT business partners looking for digital transformation opportunities within their organizations. Professionals from service and management consulting firms will also find this book useful. Basic knowledge of enterprise IT and some intermediate knowledge of identifying digital revenue streams or internal transformation opportunities are required to get started with this book.
The exponential growth of data combined with the need to derive real-time business value is a critical issue today. An event-driven data mesh can power real-time operational and analytical workloads, all from a single set of data product streams. With practical real-world examples, this book shows you how to successfully design and build an event-driven data mesh.
Building an Event-Driven Data Mesh provides:
This book is a celebration of Leslie Lamport's work on concurrency, interwoven in four-and-a-half decades of an evolving industry: from the introduction of the first personal computer to an era when parallel and distributed multiprocessors are abundant.
His works lay formal foundations for concurrent computations executed by interconnected computers. Some of the algorithms have become standard engineering practice for fault tolerant distributed computing - distributed systems that continue to function correctly despite failures of individual components. He also developed a substantial body of work on the formal specification and verification of concurrent systems, and has contributed to the development of automated tools applying these methods.
Part I consists of technical chapters of the book and a biography. The technical chapters of this book present a retrospective on Lamport's original ideas from experts in the field. Through this lens, it portrays their long-lasting impact. The chapters cover timeless notions Lamport introduced: the Bakery algorithm, atomic shared registers and sequential consistency; causality and logical time; Byzantine Agreement; state machine replication and Paxos; temporal logic of actions (TLA). The professional biography tells of Lamport's career, providing the context in which his work arose and broke new grounds, and discusses LaTeX - perhaps Lamport's most influential contribution outside the field of concurrency. This chapter gives a voice to the people behind the achievements, notably Lamport himself, and additionally the colleagues around him, who inspired, collaborated, and helped him drive worldwide impact. Part II consists of a selection of Leslie Lamport's most influential papers.
This book touches on a lifetime of contributions by Leslie Lamport to the field of concurrency and on the extensive influence he had on people working in the field. It will be of value to historians of science, and to researchers and students who work in the area of concurrency and who are interested to read about the work of one of the most influential researchers in this field.
Every day, companies struggle to scale critical applications. As traffic volume and data demands increase, these applications become more complicated and brittle, exposing risks and compromising availability. With the popularity of software as a service, scaling has never been more important.
Updated with an expanded focus on modern architecture paradigms such as microservices and cloud computing, this practical guide provides techniques for building systems that can handle huge quantities of traffic, data, and demand--without affecting the quality your customers expect. Architects, managers, and directors in engineering and operations organizations will learn how to build applications at scale that run more smoothly and reliably to meet the needs of customers.
This book is a celebration of Leslie Lamport's work on concurrency, interwoven in four-and-a-half decades of an evolving industry: from the introduction of the first personal computer to an era when parallel and distributed multiprocessors are abundant.
His works lay formal foundations for concurrent computations executed by interconnected computers. Some of the algorithms have become standard engineering practice for fault tolerant distributed computing - distributed systems that continue to function correctly despite failures of individual components. He also developed a substantial body of work on the formal specification and verification of concurrent systems, and has contributed to the development of automated tools applying these methods.
Part I consists of technical chapters of the book and a biography. The technical chapters of this book present a retrospective on Lamport's original ideas from experts in the field. Through this lens, it portrays their long-lasting impact. The chapters cover timeless notions Lamport introduced: the Bakery algorithm, atomic shared registers and sequential consistency; causality and logical time; Byzantine Agreement; state machine replication and Paxos; temporal logic of actions (TLA). The professional biography tells of Lamport's career, providing the context in which his work arose and broke new grounds, and discusses LaTeX - perhaps Lamport's most influential contribution outside the field of concurrency. This chapter gives a voice to the people behind the achievements, notably Lamport himself, and additionally the colleagues around him, who inspired, collaborated, and helped him drive worldwide impact. Part II consists of a selection of Leslie Lamport's most influential papers.
This book touches on a lifetime of contributions by Leslie Lamport to the field of concurrency and on the extensive influence he had on people working in the field. It will be of value to historians of science, and to researchers and students who work in the area of concurrency and who are interested to read about the work of one of the most influential researchers in this field.
A step-by-step guide to working with programs that exploit quantum computing principles, with the help of IBM Quantum, Qiskit, and Python
Key Features:
- Get familiar with the features within the IBM Quantum Platform
- Create and visualize quantum gates and circuits
- Operate quantum gates on qubits using the IBM Quantum Composer
- Install and run your quantum circuits on an IBM Quantum computer
- Discover Qiskit and its many features such as the Qiskit Runtime
Book Description:
The IBM Quantum Platform was built to enable developers to learn the basics of quantum computing by providing access to high performant quantum computers and provide documentation and courses to help get up to speed with the latest features in quantum computing.
Updated with new examples and changes to the platform, this edition begins with an introduction to the IBM Quantum Platform and the Quantum Information Science Kit (Qiskit) SDK. You will become well versed in the IBM Quantum Composer interface as well as running your quantum circuits on a real quantum computer. Along the way, you'll learn some of the fundamental principles regarding quantum mechanics, qubits, quantum gates, quantum circuits, and the error mitigation techniques that are used to perform operations on qubits.
As you build on your knowledge, you'll understand the functionality of IBM Qiskit and the developer-focused resources so you can create your own quantum algorithms. You'll learn how to monitor and optimize your quantum circuits. Lastly, you'll look at the fundamental quantum algorithms and understand how they can be applied effectively.
By the end of this quantum computing book, you'll know how to build quantum algorithms and will have gained a practical understanding of quantum computation that you can apply to your research or business.
What You Will Learn:
- Get familiar with the features within the IBM Quantum Platform
- Create and visualize quantum gates and circuits
- Operate quantum gates on qubits using the IBM Quantum Composer
- Install and run your quantum circuits on an IBM Quantum computer
- Discover Qiskit and its many features such as the Qiskit Runtime
- Get to grips with fundamental quantum algorithms and error mitigation techniques to help you get started
- Understand the new era of quantum utility and how this moves us closer towards quantum advantage
Who this book is for:
This book is for Python developers who are looking to learn quantum computing from the ground up and put their knowledge to use in practical situations with the help of the IBM Quantum Platform and Qiskit. Some background in computer science and high school-level physics and math is required.
Table of Contents
- Exploring the IBM Quantum Tools
- IBM Quantum Composer
- Creating Quantum Circuits using Quantum Lab Notebooks
- Understanding Basic Quantum Computing Principles
- Understanding the Quantum Bit (Qubit)
- Understanding Quantum Logic Gates
- Introducing Qiskit and the Qiskit Community
- Programming with Qiskit Terra system
- Monitoring and Optimizing Quantum Circuit
- Simulating Quantum Systems and Noise Models
- Understanding and Mitigating Quantum Noise
- Understanding Quantum Algorithms
- Applying Quantum Algorithms
- Understanding Qiskit Operators and Application Modules
- Appendix A -Resources
- Assessment
Go beyond web development to learn system programming, building secure, concurrent, and efficient applications with Go's unique system programming capabilities
Key Features:
- Get a deep understanding of how Go simplifies system-level memory management and concurrency
- Gain expert guidance on essential topics like file operations, process management, and network programming
- Learn cross-platform system programming and how to build applications that interact directly with the OS
Book Description:
Alex Rios, a seasoned Go developer and active community builder, shares his 15 years of expertise in designing large-scale systems through this book. It masterfully cuts through complexity, enabling you to build efficient and secure applications with Go's streamlined syntax and powerful concurrency features.
In this book, you'll learn how Go, unlike traditional system programming languages (C/C++), lets you focus on the problem by prioritizing readability and elevating developer experience with features like automatic garbage collection and built-in concurrency primitives, which remove the burden of low-level memory management and intricate synchronization.
Through hands-on projects, you'll master core concepts like file I/O, process management, and inter-process communication to automate tasks and interact with your system efficiently. You'll delve into network programming in Go, equipping yourself with the skills to build robust, distributed applications. This book goes beyond the basics by exploring modern practices like logging and tracing for comprehensive application monitoring, and advance to distributed system design using Go to prepare you to tackle complex architectures.
By the end of this book, you'll emerge as a confident Go system programmer, ready to craft high-performance, secure applications for the modern world.
What You Will Learn:
- Understand the fundamentals of system programming using Go
- Grasp the concepts of goroutines, channels, data races, and managing concurrency in Go
- Manage file operations and inter-process communication (IPC)
- Handle USB drives and Bluetooth devices and monitor peripheral events for hardware automation
- Familiarize yourself with the basics of network programming and its application in Go
- Implement logging, tracing, and other telemetry practices
- Construct distributed cache and approach distributed systems using Go
Who this book is for:
This book is for software engineers looking to expand their understanding of system programming concepts. Professionals with a coding foundation seeking profound knowledge of system-level operations will also greatly benefit. Additionally, individuals interested in advancing their system programming skills, whether experienced developers or those transitioning to the field, will find this book indispensable.
Table of Contents
- Why Go?
- Refreshing Concurrency and Parallelism
- Understanding System Calls
- File and Directory Operations
- Working with System Events
- Understanding Pipes in Inter-Process Communication
- Hardware Automation
- Memory Management
- Analysing Performance
- Networking
- Telemetry
- Distributing Your Apps
- Capstone Project - Distributed Cache
- Effective Coding Practices
- Stay Sharp with System Programming
Learn CI/CD design patterns directly from industry leaders in this easy-to-follow guide, offering immediately applicable solutions for sustainable CI/CD adoption
Key Features:
- Simplify CI/CD adoption with the help of practical examples, case studies, and best practices
- Deploy market-ready solutions by implementing key components like pipelines, infrastructure, and release capabilities
- Explore advanced design patterns, including integration with machine learning and generative AI
- Purchase of the print or Kindle book includes a free PDF eBook
Book Description:
The fast-changing world of software development demands robust CI/CD solutions that go beyond traditional methods to address the complexities of modern pipelines. This practical guide presents proven design patterns to streamline your CI/CD processes, tackling pain points often overlooked by other resources. This book introduces continuous delivery design patterns to help practitioners and engineering teams design, adopt, and implement CI/CD. Drawing from decades of combined industry experience, the expert author team-including DevOps and cloud leader Garima Bajpai, industry expert Michel Schildmeijer, CI/CD framework creator Pawel Piwosz, and open source advocate Muktesh Mishra-provides invaluable insights from leading voices in the industry.
The book lays a solid foundation by starting with the importance of CI/CD design patterns, components, and principles. You'll learn strategies for scaling CI/CD with a focus on performance, security, measurements, and pipeline auditability, along with infrastructure and release automation. The book also covers advanced design patterns that integrate machine learning, generative AI, and near real-time CI/CD processes.
By the end of this book, you'll have a deep understanding of continuous delivery design patterns, a solid foundation for audits and controls, and be able to mitigate risks associated with the rapid integration of modern technology into the SDLC.
What You Will Learn:
- Use and manage CI/CD patterns effectively to design and implement CI/CD
- Understand types of CI/CD design patterns and components
- Discover relationships and interactions between tools within CI/CD
- Implement well-tested development/design paradigms
- Explore anti-patterns for CI/CD design pattern deployments
- Master the taxonomy of assessment and audits for CI/CD design patterns
- Get to grips with automation techniques for seamless CI/CD workflows
- Gain insights into scaling CI/CD processes for large projects
Who this book is for:
This design patterns book is for senior software developers, software architects, SRE architects, DevOps architects, cloud architects and platform engineering teams looking to speed up the development process by adopting well-tested, proven development/design paradigms for continuous delivery and its adoption. You are expected to have a basic understanding of CI/CD concepts and be familiar with the cloud ecosystem, DevOps principles, and CI/CD pipelines.
Table of Contents
- Foundations of CI/CD Design Patterns
- Understanding Types of CI/CD Design Patterns and Their Components
- Advancing on CI/CD Design Patterns - from Testing to Deployment
- Business Outcome Alignment with CI/CD Design Patterns
- Exploring Structural CI/CD Design Patterns
- Deployment Strategies for Structural Design Patterns for CI/CD
- Understanding Behavioral Design Patterns for CI/CD
- Domain-Driven Design Patterns for Regulated Sectors
- Applying Creational CI/CD Design Patterns
- Understanding Deployment Strategies - Creational CI/CD with Cloud Providers
(N.B. Please use the Read Sample option to see further chapters)