Back

The Systems-Minded Software Engineer by Packt

Books
24
Days Left
17
Get Bundle on Humble Bundle
Packt
Active Minds, Inc.
Cover of Architecting AI Software Systems

Architecting AI Software Systems

Richard D Avila; Imran Ahmad

Discover how to design intelligent software systems by balancing AI and traditional architecture. This guide offers a roadmap for robust, scalable AI-enabled systems, blending principles with practical insights. Key Features Learn to integrate AI with traditional software architectures, enabling architects to design scalable, high-performance systems Explore key tools and processes to mitigate risks in AI-driven system development, ensuring timely project delivery and budget control Gain hands-on experience through case studies and exercises, applying architectural concepts to real-world AI systems Book DescriptionArchitecting AI Software Systems provides a definitive guide to building AI-enabled systems, emphasizing the balance between AI’s capabilities and traditional software architecture principles. As AI technologies gain widespread acceptance and are increasingly expected in future applications, this book provides architects and developers with the essential knowledge to stay competitive. It introduces a structured approach to mastering the complexities of AI integration, covering key architectural concepts and processes critical to building scalable and robust AI systems while minimizing development and maintenance risks. The book guides readers on a progressive journey, using real-world examples and hands-on exercises to deepen comprehension. It also includes the architecture of a fictional AI-enabled system as a learning tool. You will engage with exercises designed to reinforce your understanding and apply practical insights, leading to the development of key architectural products that support AI systems. This is an essential resource for architects seeking to mitigate risks and master the complexities of AI-enabled system development. By the end of the book, readers will be equipped with patterns, strategies and concepts necessary to architect AI-enabled systems across various domains.What you will learn Understand the challenges of building AI-enabled systems and managing risks like underperformance and cost overruns Learn architectural tools to design and integrate AI into traditional systems Master AI/ML concepts like inference and decision-making and their impact on architecture Use architectural models to ensure system cohesion and functionality Simulate and optimize AI performance through prototyping and iteration Design scalable AI systems using patterns and heuristics Integrate AI into large systems with a focus on user experience and performance Who this book is for This book is designed mainly for software and systems architects responsible for designing and integrating AI capabilities into existing and new systems. It also serves as a valuable resource for CTOs, VPs of Engineering, and aspiring architects seeking a comprehensive understanding of the holistic approach to AI system development. Additionally, AI/ML engineers and software developers will benefit from gaining deeper insights into the architectural principles that underpin AI systems, enabling them to align their work with broader architectural goals

show more
Packt
Cover of Architecting ASP.NET Core Applications

Architecting ASP.NET Core Applications

Carl-Hugo Marcotte; Nick Cosentino

Backend design like you've never seen it before – a guide to building SOLID ASP.NET Core web apps that stand the test of time. Featuring more Minimal APIs, more testing, a new e-commerce project, and the modular monolith! Purchase of the print or Kindle book includes a free PDF eBook. Key Features Learn multiple ways to organize your application code and become a more flexible ASP.NET Core developer Explore hands-on design patterns, learn architectural principles, and how to sidestep anti-patterns Refactor code toward modern application design, such as feature-based vertical slice and clean architecture Book DescriptionThis unique ASP.NET Core book will fill in the gaps in your REST API and backend designs. Learn how to build robust, maintainable, and flexible apps using Gang of Four (GoF) design patterns and modern architectural principles. This new edition is updated for .NET 8 and focuses exclusively on the backend, with new content on REST APIs, the REPR pattern, and building modular monoliths. You’ll start by covering foundational concepts like REST, the SOLID principles, Minimal APIs, dependency injection in .NET, and other ASP.NET Core 8 mechanisms. Then, you’ll learn to develop components using design patterns, including many from the GoF. Finally, you’ll explore organizing your application code with patterns that vary from layers to feature-oriented vertical slice designs, covering CQS and a deep dive into microservices along the way. A brand-new e-commerce project at the end of the book will tie it all together. This how-to guide will teach you how to assemble your own APIs from building blocks, to suit whatever real-world requirements you may have.What you will learn Apply the SOLID principles for building flexible and maintainable software Test your apps effectively with automated tests, including black-box testing Embark on mastering ASP.NET Core dependency injection Work with GoF design patterns including strategy, decorator, facade, and composite Design REST APIs using Minimal APIs and ASP.NET Core MVC Discover layering and the tenets of clean architecture Use feature-oriented techniques as an alternative to layering Explore microservices, CQS, REPR, vertical slice architecture, and many more patterns Who this book is for This book is for intermediate-level ASP.NET Core developers who want to improve their C# app code structure and API design skills. ASP.NET developers who want to modernize their knowledge and enhance their technical architecture skills will also like this book. It’s also a good refresher for those in software design roles with more experience looking to update their expertise. A good knowledge of C# programming and a basic understanding of web concepts is necessary to get the most out of this book, though some refreshers are included along the way.

show more
Packt
Cover of Architectural Patterns and Techniques for Developing IoT Solutions

Architectural Patterns and Techniques for Developing IoT Solutions

Jasbir Singh Dhaliwal; Grady Booch

Apply modern architectural patterns and techniques to achieve scalable, resilient, and secure intelligent IoT solutions built for manufacturing, consumer, agriculture, smart cities, and other domains Key Features Get empowered to quickly develop IoT solutions using listed patterns and related guidance Learn the applications of IoT architectural patterns in various domains through real-world case studies Explore sensor and actuator selection, analytics, security, and emerging tools for architecting IoT systems Purchase of the print or Kindle book includes a free PDF eBook Book DescriptionAs the Internet of Things (IoT) expands and moves to new domains, architectural patterns need to enable faster digital transformation and more uniform development. Through numerous use cases and examples, this book helps you conceptualize and implement IoT architectural patterns and use them in diverse contexts in real-world scenarios. The book begins by introducing you to a variety of IoT architectural patterns and then helps you understand how they are used in domains such as retail, smart manufacturing, consumer, smart cities, and smart agriculture. You’ll also find out how cross-cutting concerns such as security require special considerations in the IoT context. As you advance, you’ll discover all the nuances that are inherent in each layer of IoT reference architecture, including considerations related to analytics for edge/constrained devices, data visualizations, and so on. In the concluding chapters, you’ll explore emerging technologies such as blockchain, 3D printing, 5G, generative AI, quantum computing, and large language models (LLMs) that enhance IoT capabilities to realize broader applications. By the end of this book, you’ll have learned to architect scalable, secure, and unique IoT solutions in any domain using the power of IoT architectural patterns, and you will be able to avoid the pitfalls that typically derail IoT projects.What you will learn Get to grips with the essentials of different architectural patterns and anti-patterns Discover the underlying commonalities in diverse IoT applications Combine patterns from physical and virtual realms to develop innovative applications Choose the right set of sensors and actuators for your solution Explore analytics-related tools and techniques such as TinyML and sensor fusion Overcome the challenges faced in securing IoT systems Leverage use cases based on edge computing and emerging technologies such as 3D printing, 5G, generative AI, and LLMs Who this book is for This book is for IoT systems and solutions architects as well as other IoT practitioners, such as developers and both technical program and pre-sales managers who are interested in understanding how various IoT architectural patterns and techniques can be applied to developing unique and diverse IoT solutions. Prior knowledge of IoT fundamental concepts and its application areas is helpful but not mandatory.

show more
Packt
Cover of The Art of Writing Efficient Programs

The Art of Writing Efficient Programs

Fedor G. Pikus

Become a better programmer with performance improvement techniques such as concurrency, lock-free programming, atomic operations, parallelism, and memory management Key Features Learn proven techniques from a heavyweight and recognized expert in C++ and high-performance computing Understand the limitations of modern CPUs and their performance impact Find out how you can avoid writing inefficient code and get the best optimizations from the compiler Learn the tradeoffs and costs of writing high-performance programs Book DescriptionThe great free lunch of "performance taking care of itself" is over. Until recently, programs got faster by themselves as CPUs were upgraded, but that doesn't happen anymore. The clock frequency of new processors has almost peaked, and while new architectures provide small improvements to existing programs, this only helps slightly. To write efficient software, you now have to know how to program by making good use of the available computing resources, and this book will teach you how to do that. The Art of Efficient Programming covers all the major aspects of writing efficient programs, such as using CPU resources and memory efficiently, avoiding unnecessary computations, measuring performance, and how to put concurrency and multithreading to good use. You'll also learn about compiler optimizations and how to use the programming language (C++) more efficiently. Finally, you'll understand how design decisions impact performance. By the end of this book, you'll not only have enough knowledge of processors and compilers to write efficient programs, but you'll also be able to understand which techniques to use and what to measure while improving performance. At its core, this book is about learning how to learn.What you will learn Discover how to use the hardware computing resources in your programs effectively Understand the relationship between memory order and memory barriers Familiarize yourself with the performance implications of different data structures and organizations Assess the performance impact of concurrent memory accessed and how to minimize it Discover when to use and when not to use lock-free programming techniques Explore different ways to improve the effectiveness of compiler optimizations Design APIs for concurrent data structures and high-performance data structures to avoid inefficiencies Who this book is for This book is for experienced developers and programmers who work on performance-critical projects and want to learn new techniques to improve the performance of their code. Programmers in algorithmic trading, gaming, bioinformatics, computational genomics, or computational fluid dynamics communities will get the most out of the examples in this book, but the techniques are fairly universal. Although this book uses the C++ language, the concepts demonstrated in the book can be easily transferred or applied to other compiled languages such as C, Java, Rust, Go, and more.

show more
Packt
Cover of Clean Architecture with Python

Clean Architecture with Python

Sam Keen

Future-proof your Python projects by creating flexible code that adapts to changing requirements with the help of this hands-on guide to achieving Clean Architecture Key Features Learn Clean Architecture through a series of real-world, code-centric examples and exercises Optimize system componentization, significantly reducing maintenance burden and overall complexity Apply Clean Architecture concepts confidently to new Python projects and legacy code refactoring Purchase of the print or Kindle book includes a free PDF eBook Book DescriptionIn the rapidly evolving tech industry, software applications struggle to keep pace with changing business needs, leaving developers grappling with complex codebases that resist change, ultimately reducing productivity and increasing technical debt. Clean Architecture with Python offers a powerful approach to address these challenges. Drawing from his extensive experience architecting cloud-native systems, Sam Keen helps you transform complex architectural challenges into digestible, implementable solutions. This book teaches essential principles for effective development, emphasizing the Pythonic implementation of Clean Architecture. Through practical examples, you'll learn how to create modular, loosely coupled systems that are easy to understand, modify, and extend. The book covers key concepts such as the Dependency Rule, separation of concerns, and domain modeling, all tailored for Python development. By the end of this book, you'll be able to apply Clean Architecture principles effectively in your Python projects. Whether you're building new systems or managing existing ones, you'll have the skills to create more maintainable and adaptable applications. This approach will enhance your ability to respond to changing requirements, setting you up for long-term success in your development career.What you will learn Apply Clean Architecture principles idiomatically in Python Implement domain-driven design to isolate core business logic Apply SOLID principles in a Pythonic context to improve code quality Structure projects for maintainability and ease of modification Develop testing techniques for cleanly architected Python applications Refactor legacy Python code to adhere to Clean Architecture principles Design scalable APIs and web applications using Clean Architecture Who this book is for If you're a Python developer struggling with maintaining and extending complex codebases, this book is for you. It's ideal for intermediate developers looking to enhance their architectural skills as well as senior developers seeking to formalize their knowledge of Clean Architecture in Python. While beginners can benefit, prior experience with Python and object-oriented programming is recommended.

show more
Packt
Cover of Clean Code in Python

Clean Code in Python

Mariano Anaya

Tackle inefficiencies and errors the Pythonic way Key Features Enhance your coding skills using the new features introduced in Python 3.9 Implement the refactoring techniques and SOLID principles in Python Apply microservices to your legacy systems by implementing practical techniques Book Description Experienced professionals in every field face several instances of disorganization, poor readability, and testability due to unstructured code. With updated code and revised content aligned to the new features of Python 3.9, this second edition of Clean Code in Python will provide you with all the tools you need to overcome these obstacles and manage your projects successfully. The book begins by describing the basic elements of writing clean code and how it plays a key role in Python programming. You will learn about writing efficient and readable code using the Python standard library and best practices for software design. The book discusses object-oriented programming in Python and shows you how to use objects with descriptors and generators. It will also show you the design principles of software testing and how to resolve problems by implementing software design patterns in your code. In the concluding chapter, we break down a monolithic application into a microservices-based one starting from the code as the basis for a solid platform. By the end of this clean code book, you will be proficient in applying industry-approved coding practices to design clean, sustainable, and readable real-world Python code. What you will learn Set up a productive development environment by leveraging automatic tools Leverage the magic methods in Python to write better code, abstracting complexity away and encapsulating details Create advanced object-oriented designs using unique features of Python, such as descriptors Eliminate duplicated code by creating powerful abstractions using software engineering principles of object-oriented design Create Python-specific solutions using decorators and descriptors Refactor code effectively with the help of unit tests Build the foundations for solid architecture with a clean code base as its cornerstone Who this book is for This book is designed to benefit new as well as experienced programmers. It will appeal to team leads, software architects and senior software engineers who would like to write Pythonic code to save on costs and improve efficiency. The book assumes that you have a strong understanding of programming

show more
Packt
Cover of The C++ Programmer's Mindset

The C++ Programmer's Mindset

Sam Morley

Learn to break down and solve real-world problems with modern C++ using the proven power of computational thinking. Key Features Apply computational thinking to tackle complex C++ challenges Use abstraction, algorithms, and data structures the C++ way Build scalable, efficient, and reusable C++ code through real-world projects Purchase of the print or Kindle book includes a free PDF eBook Book Description Solve complex problems in C++ by learning how to think like a computer scientist. This book introduces computational thinking—a framework for solving problems using decomposition, abstraction, and pattern recognition—and shows you how to apply it using modern C++ features. You'll learn how to break down challenges, choose the right abstractions, and build solutions that are both maintainable and efficient. Through small examples and a large case study, this book guides you from foundational concepts to high-performance applications. You’ll explore reusable templates, algorithms, modularity, and even parallel computing and GPU acceleration. With each chapter, you’ll not only expand your C++ skillset, but also refine the way you approach and solve real-world problems. Written by a seasoned research engineer and C++ developer, this book combines practical insight with academic rigor. Whether you're designing algorithms or profiling production code, this book helps you deliver elegant, effective solutions with confidence. What you will learn Apply computational thinking to complex C++ problems Break problems into components using abstraction Use algorithms and data structures effectively in C++ Design modular and reusable C++ code Analyze and improve algorithmic performance Parse, transform, and interpret data in multiple formats Scale up with concurrency, GPUs, and profiling tools Who this book is for C++ developers, software engineers, and computer science students who want to enhance their problem-solving capabilities and build scalable, maintainable solutions. Basic familiarity with C++ syntax is assumed, making this ideal for intermediate programmers ready to master abstraction and algorithmic thinking.

show more
Packt
Cover of Domain-Driven Design with Golang

Domain-Driven Design with Golang

Matthew Boyle

Understand the concept of Domain-driven design and build two DDD systems from scratch that can be showcased as part of your portfolio Key Features Explore Domain-driven design as a timeless concept and learn how to apply it with Go Build a domain-driven monolithic application and a microservice from scratch Leverage patterns to make systems scalable, resilient, and maintainable Book DescriptionDomain-driven design (DDD) is one of the most sought-after skills in the industry. This book provides you with step-by-step explanations of essential concepts and practical examples that will see you introducing DDD in your Go projects in no time. Domain-Driven Design with Golang starts by helping you gain a basic understanding of DDD, and then covers all the important patterns, such as bounded context, ubiquitous language, and aggregates. The latter half of the book deals with the real-world implementation of DDD patterns and teaches you how to build two systems while applying DDD principles, which will be a valuable addition to your portfolio. Finally, you’ll find out how to build a microservice, along with learning how DDD-based microservices can be part of a greater distributed system. Although the focus of this book is Golang, by the end of this book you’ll be able to confidently use DDD patterns outside of Go and apply them to other languages and even distributed systems.What you will learn Get to grips with domains and the evolution of Domain-driven design Work with stakeholders to manage complex business needs Gain a clear understanding of bounded context, services, and value objects Get up and running with aggregates, factories, repositories, and services Find out how to apply DDD to monolithic applications and microservices Discover how to implement DDD patterns on distributed systems Understand how Test-driven development and Behavior-driven development can work with DDD Who this book is for This book is for intermediate-level Go developers who are looking to ensure that they not only write maintainable code, but also deliver great business value. If you have a basic understanding of Go and are interested in learning about Domain-driven design, or you’ve explored Domain-driven design before but never in the context of Go, then this book will be helpful.

show more
Packt
Cover of Domain-Driven Refactoring

Domain-Driven Refactoring

Matthew Boyle

Apply domain-driven design practices effortlessly to evolve your system into a modern, robust application while mastering refactoring techniques that drive real-world results Key Features Learn how to modernize your system to make it as frictionless as possible Gain hands-on experience in applying strategic and tactical patterns through real-world examples Transform your architecture with practical guidance for seamless refactoring Purchase of the print or Kindle book includes a free PDF eBook Book Description As software development continues to grow, mastering domain-driven design (DDD) will help transform your approach to complex systems. Filled with actionable insights and practical examples, this book is your essential guide to implementing DDD principles, covering its key concepts and practical applications in modern architecture. Alessandro, an eCommerce specialist and DDD expert with 30 years of experience, and Alberto, a dedicated backend developer, tap into their extensive expertise to help you refactor your monolith into a modular structure, whether it be evolving into microservices or enhancing a maintainable monolith, resulting in a system that adapts to changing business needs and non-functional requirements. You’ll explore vital DDD patterns like strategic design with bounded contexts and ubiquitous language, improving communication between technical and domain experts. The chapters take you through modeling techniques to manage complexity and increase flexibility, while also addressing microservices integration, including inter-service communication, transaction management, and data strategies. By the end of this book, you’ll be able to decompose a monolith and refine its architecture for adaptability, all while ensuring business logic remains central to your software design and development. What you will learn Find out how to recognize the boundaries of your system's components Apply strategic patterns such as bounded contexts and ubiquitous language Master tactical patterns for building aggregates and entities Discover principal refactoring patterns and learn how to implement them Identify pain points in a complex code base and address them Explore event-driven architectures for component decoupling Get skilled at writing tests that validate and maintain architectural integrity Who this book is for This book is ideal for software developers, architects, and team leads looking to modernize legacy applications using domain-driven design principles. If you're a backend developer or software engineer looking to enhance your understanding of DDD, this guide will elevate your skills in designing robust systems. Team leads and architects will find valuable insights for guiding their teams through the transition from monoliths to microservices. Familiarity with C# is a must, as the book provides practical examples in this language.

show more
Packt
Cover of Get Your Hands Dirty on Clean Architecture

Get Your Hands Dirty on Clean Architecture

Tom Hombergs; Gernot Starke

Gain insight into how Hexagonal Architecture can help to increase maintainability. Key Features Explore ways to make your software flexible, extensible, and adaptable Learn new concepts that you can easily blend with your own software development style Develop the mindset of making conscious architecture decisions Book DescriptionBuilding for maintainability is key to keep development costs low (and developers happy). The second edition of "Get Your Hands Dirty on Clean Architecture" is here to equip you with the essential skills and knowledge to build maintainable software. Building upon the success of the first edition, this comprehensive guide explores the drawbacks of conventional layered architecture and highlights the advantages of domain-centric styles such as Robert C. Martin's Clean Architecture and Alistair Cockburn's Hexagonal Architecture. Then, the book dives into hands-on chapters that show you how to manifest a Hexagonal Architecture in actual code. You'll learn in detail about different mapping strategies between the layers of a Hexagonal Architecture and see how to assemble the architecture elements into an application. The later chapters demonstrate how to enforce architecture boundaries, what shortcuts produce what types of technical debt, and how, sometimes, it is a good idea to willingly take on those debts. By the end of this second edition, you'll be armed with a deep understanding of the Hexagonal Architecture style and be ready to create maintainable web applications that save money and time. Whether you're a seasoned developer or a newcomer to the field, "Get Your Hands Dirty on Clean Architecture" will empower you to take your software architecture skills to new heights and build applications that stand the test of time.What you will learn Identify potential shortcomings of using a layered architecture Apply varied methods to enforce architectural boundaries Discover how potential shortcuts can affect the software architecture Produce arguments for using different styles of architecture Structure your code according to the architecture Run various tests to check each element of the architecture Who this book is for This book is for you if you care about the architecture of the software you are building. To get the most out of this book, you must have some experience with web development. The code examples in this book are in Java. If you are not a Java programmer but can read object-oriented code in other languages, you will be fine. In the few places where Java or framework specifics are needed, they are thoroughly explained.

show more
Packt
Cover of Hands-On Software Engineering with Python

Hands-On Software Engineering with Python

Brian Allbee

Explore various verticals in software engineering through high-end systems using Python Key FeaturesMaster the tools and techniques used in software engineeringEvaluates available database options and selects one for the final Central Office system-componentsExperience the iterations software go through and craft enterprise-grade systemsBook Description Software Engineering is about more than just writing code—it includes a host of soft skills that apply to almost any development effort, no matter what the language, development methodology, or scope of the project. Being a senior developer all but requires awareness of how those skills, along with their expected technical counterparts, mesh together through a project's life cycle. This book walks you through that discovery by going over the entire life cycle of a multi-tier system and its related software projects. You'll see what happens before any development takes place, and what impact the decisions and designs made at each step have on the development process. The development of the entire project, over the course of several iterations based on real-world Agile iterations, will be executed, sometimes starting from nothing, in one of the fastest growing languages in the world—Python. Application of practices in Python will be laid out, along with a number of Python-specific capabilities that are often overlooked. Finally, the book will implement a high-performance computing solution, from first principles through complete foundation. What you will learnUnderstand what happens over the course of a system's life (SDLC)Establish what to expect from the pre-development life cycle stepsFind out how the development-specific phases of the SDLC affect developmentUncover what a real-world development process might be like, in an Agile wayFind out how to do more than just write the codeIdentify the existence of project-independent best practices and how to use themFind out how to design and implement a high-performance computing processWho this book is for Hands-On Software Engineering with Python is for you if you are a developer having basic understanding of programming and its paradigms and want to skill up as a senior programmer. It is assumed that you have basic Python knowledge.

show more
Packt
Cover of Layered Design for Ruby on Rails Applications

Layered Design for Ruby on Rails Applications

Vladimir Dementyev

Transition from the traditional Rails MVC trio to an abstraction model and evolve your application codebase with synchronized components, boosting flexibility and maintainability Key Features Understand Rails' architectural patterns along with its advantages and disadvantages Organize business logic in Rails apps when the default approach is insufficient Introduce new abstractions to address design problems Purchase of the print or Kindle book includes a free PDF eBook Book DescriptionThe Ruby on Rails framework boosts productivity by leveraging the convention-over-configuration principle and model-view-controller (MVC) pattern, enabling developers to build features efficiently. This initial simplicity often leads to complexity, making a well-structured codebase difficult to maintain. Written by a seasoned software engineer and award-winning contributor to many other open-source projects, including Ruby on Rails and Ruby, this book will help you keep your code maintainable while working on a Rails app. You’ll get to grips with the framework’s capabilities and principles to harness the full potential of Rails, and tackle many common design problems by discovering useful patterns and abstraction layers. By implementing abstraction and dividing the application into manageable modules, you’ll be able to concentrate on specific parts of the app development without getting overwhelmed by the entire codebase. This also encourages code reuse, simplifying the process of adding new features and enhancing the application's capabilities. Additionally, you’ll explore further steps in scaling Rails codebase, such as service extractions. By the end of this book, you’ll become a code design specialist with a deep understanding of the Rails framework principles.What you will learn Get to grips with Rails' core components and its request/response cycle See how Rails' convention-over-configuration principle affects development Explore patterns for software flexibility, extensibility, and testability in Rails Identify and address Rails' anti-patterns for cleaner code Implement design patterns for handling bloated models and messy views Expand from mailers to multi-channel notification deliveries Introduce different authorization models and layers to your codebase Take a class-based approach to configuration in Rails Who this book is for This book is for Rails application developers looking to efficiently manage the growing complexity of their projects. Whether you've recently launched your first Rails minimum viable product or are struggling to progress with a sizable monolithic application, this book is here to help. A deep understanding of core Rails principles is a must. Prior experience in building web apps using the Rails framework will help you understand and apply the concepts in the book in a better way.

show more
Packt
Cover of Microservices with Go

Microservices with Go

Alexander Shuiskov

Build, scale, and maintain microservices in Golang with ease. Key Features Create and organize well-structured Go microservices Learn industry best practices and gain insights into Go microservice development tools, patterns, and solutions Cover hands-on Golang examples in each chapter Book DescriptionThis book covers the key benefits and common issues of microservices, helping you understand the problems microservice architecture helps to solve, the issues it usually introduces, and the ways to tackle them. You’ll start by learning about the importance of using the right principles and standards in order to achieve the key benefits of microservice architecture. The following chapters will explain why the Go programming language is one of the most popular languages for microservice development and lay down the foundations for the next chapters of the book. You’ll explore the foundational aspects of Go microservice development including service scaffolding, service discovery, data serialization, synchronous and asynchronous communication, deployment, and testing. After covering the development aspects, you’ll progress to maintenance and reliability topics. The last part focuses on more advanced topics of Go microservice development including system reliability, observability, maintainability, and scalability. In this part, you’ll dive into the best practices and examples which illustrate how to apply the key ideas to existing applications, using the services scaffolded in the previous part as examples. By the end of this book, you’ll have gained hands-on experience with everything you need to develop scalable, reliable and performant microservices using Go.What you will learn Get familiar with the industry's best practices and solutions in microservice development Understand service discovery in the microservices environment Explore reliability and observability principles Discover best practices for asynchronous communication Focus on how to write high-quality unit and integration tests in Go applications Understand how to profile Go microservices Who this book is for This book is for all types of developers, from people interested in learning how to write microservices in Go to seasoned professionals who want to take the next step in mastering the art of writing scalable and reliable microservice-based systems. A basic understanding of Go will come in handy.

show more
Packt
Cover of Platform Engineering for Architects

Platform Engineering for Architects

Max Körbächer; Andreas Grabner; Hilliary Lipsig

Design and build Internal Developer Platforms (IDPs) with future-oriented design strategies, using the Platform as a Product mindset Key Features Comprehensive guide to designing platforms that create value and drive user adoption Expert insights on shifting to a product-centric mindset for architects and platform teams Best practices for managing platform complexity, reducing technical debt, and ensuring continuous evolution Book DescriptionAs technology evolves, IT talent shortages and system complexity make it essential to have structured guidance for building scalable, user-focused platforms. This book provides platform engineers and architects with practical strategies to develop internal development platforms that enhance software delivery and operations. You’ll learn how to identify end users, understand their needs, and define platform goals with a focus on self-service solutions for cloud-native environments. Using real-world examples, the book demonstrates how to build platforms within and for the cloud, leveraging Kubernetes. It also explores the benefits of a product-centric approach to platform engineering, emphasizing early end-user involvement and flexible design principles that adapt to future requirements. Additionally, the book covers techniques for maintaining a sustainable platform while minimizing technical debt. By the end, you’ll have the knowledge to design, define, and implement platform capabilities that align with your organization’s goals.What you will learn Make informed decisions aligned with your organization's platform needs Identify missing platform capabilities and manage that technical debt effectively Develop critical user journeys to enhance platform functionality Define platform purpose, principles, and key performance indicators Use data-driven insights to guide product decisions Design and implement platform reference and target architectures Who this book is for This book is for platform engineers, architects, and DevOps professionals responsible for designing and managing internal development platforms. It is also useful for decision-makers involved in optimizing software delivery and operations in cloud-native environments. Familiarity with cloud computing, Kubernetes, and CI/CD concepts is helpful but not required, as the book provides practical guidance on platform engineering, self-service solutions, and managing technical debt.

show more
Packt
Cover of Practical Serverless and Microservices with C#

Practical Serverless and Microservices with C#

Gabriel Baptista; Francesco Abbruzzese

Take a realistic look at microservices and distributed systems with the .NET stack to understand the limitations of microservices development through a practical lens Free with your book: DRM-free PDF version + access to Packt's next-gen Reader* Key Features Work through common scenarios encountered when developing distributed microservices applications Understand cost considerations, traffic limits, and time limits surrounding serverless environments Take full advantage of the synergy between Azure services (Container Apps, Functions, and Aspire) and .NET code Purchase of the print or Kindle book includes a free eBook in PDF format Book DescriptionFrom the authors of the Software Architecture with C# and .NET series comes this practical and grounded showcase of microservices using the .NET stack. Written for .NET developers entering the world of modern cloud and distributed applications, it shows you when microservices and serverless architectures are the right choice for building scalable enterprise solutions and when they’re not. You’ll gain a realistic understanding of their use cases and limitations. Rather than promoting microservices as a one-size-fits-all solution, it encourages thoughtful adoption based on real-world needs. Following a brief introduction and important setup, the book helps you prepare for practical application through examples such as a ride-sharing website. You’ll work with Docker, Kubernetes, Azure Container Apps, and the new .NET Aspire with considerations for security, observability, and cost management. The book culminates in a complete event-driven application that brings together everything you've covered. By the end of this microservices book, you’ll have a well-rounded understanding of cloud and distributed .NET—through the lens of two industry veterans. *Email sign-up and proof of purchase required What you will learn Set up serverless environments in Azure for developing and debugging Design reliable communication and computation across microservices Explore Azure Functions in depth and use triggers for IoT and background tasks Use Azure Container Apps to simplify the creation and management of containers Apply best practices to secure a microservices application Accurately assess and calculate costs and usage limits in serverless solutions Who this book is for This book is for engineers and senior software developers looking to advance into modern cloud and distributed applications. It helps professionals evolve their knowledge of microservices and serverless architecture to get the best of both architectural models. Prior experience with C#/.NET and the Microsoft Stack (Entity Framework and ASP.NET Core) is required to get the most out of this book. If you’ve enjoyed the authors’ previous Software Architecture with C# and .NET series, this new book offers an in-depth exploration of select topics in those earlier works.

show more
Packt
Cover of Pragmatic Microservices with C# and Azure

Pragmatic Microservices with C# and Azure

Christian Nagel

Unlock efficiency in software development by learning microservices with C#, .NET and Azure Key Features Benefit from step-by-step project-based guidance on how to develop a full-fledged microservices application Gain extensive knowledge of microservices by covering essential concepts, tools, and methodologies Use essential Microsoft Azure cloud-native services and as alternatives for on-premises environments Purchase of the print or Kindle book includes a free PDF eBook Book DescriptionPragmatic Microservices with C# and Azure introduces .NET Aspire for microservices, focusing on defining an app model, utilizing service discovery, and integrating with Azure's native cloud services. Written by a Microsoft MVP and seasoned software architect with over two decades of experience in .NET, this book will help you get to grips with robust service development using .NET features like minimal APIs, gRPC, and SignalR for real-time communication. Aside from covering essential aspects of DevOps, including testing methodologies such as unit, integration, and load testing, you’ll also explore logging and monitoring including OpenTelemetry using tools like Azure Log Analytics, Application Insights, Prometheus, and Grafana. You'll learn about asynchronous communication leveraging queues and events through Azure Event Hub and Apache. Throughout the book, theoretical aspects will be complemented by practical skills gained from building and deploying a fully functional microservices-based application. By the end, you’ll possess a deep understanding of microservices architecture, hands-on experience with various .NET technologies and Azure services, and the ability to design, build, deploy, and manage microservices applications effectively in both on-premises and cloud environments.What you will learn Understand the advantages and practical applications of microservices Utilize the cloud-ready .NET Aspire stack and tools for efficient development Create robust RESTful APIs using ASP.NET Core minimal APIs Implement seamless database integration with both relational and NoSQL databases Containerize microservices with Docker for better scalability and management Deploy microservices to the Azure Container Apps environment and Kubernetes for robust cloud solutions Implement logging, metrics, and distributed tracing to ensure reliability and performance Who this book is for This book is for software developers, architects, and engineers who are interested in adopting microservices architecture using the .NET framework and Microsoft Azure. Both intermediate and advanced developers who have a foundational understanding of C#, ASP.NET Core, and cloud computing concepts will find this book helpful.

show more
Packt
Cover of Python Object-Oriented Programming

Python Object-Oriented Programming

Steven F. Lott; Dusty Phillips

Level up your Python development by exploring advanced OOP concepts in this updated edition covering the latest design patterns, OOP techniques, and real-world projects tailored for Python 3.11 and beyond Key Features Build an intuitive understanding of object-oriented design, from introductory to mature programs Learn the ins and outs of Python syntax, libraries, and best practices Examine a machine-learning case study at the end of each chapter Book DescriptionPython Object-Oriented Programming, Fourth Edition is a practical guide to advancing your OOP skills with modern Python. Going beyond the fundamentals, it helps you work with Python as an OOP language, explore both common and advanced design patterns, and apply these concepts to data manipulation and testing of complex OOP systems. Each chapter features newly written open-ended exercises as well as a real-world case study, aligned with the improvements in Python 3.11—bringing faster execution and memory efficiency to your applications. Authors Steven F. Lott and Dusty Phillips provide a comprehensive, illustrative tour of important OOP concepts, such as inheritance, composition, and polymorphism, showing how they integrate with Python’s classes and data structures to facilitate good design. The book also introduces two powerful automated testing systems, unittest and pytest, and explores Python's concurrent programming ecosystem in depth. By the end of the book, you’ll have a thorough understanding of how to think about and apply object-oriented principles using Python syntax to create robust and reliable programs.What you will learn Implement objects in Python by creating classes and defining methods Extend class functionality using inheritance Use exceptions to handle unusual situations cleanly Understand when to use object-oriented features, and more importantly, when not to use them Discover several widely used design patterns and how they are implemented in Python Uncover the simplicity of unit and integration testing and understand why they are so important Learn to statically type check your dynamic code Understand concurrency with asyncio and how it speeds up programs Who this book is for If you are new to object-oriented programming or if you have basic Python skills and want to learn how and when to correctly apply OOP principles in Python 3.11 and beyond, this is the book for you. Mid-level Python developers, software engineers, and data scientists will benefit from its practical guidance. Complete with a solid introduction to Python, this book proves to be a useful resource for experienced object-oriented programmers transitioning from other languages or seeking a leg up in the new world of Python. Minimal previous experience with Python programming is necessary.

show more
Packt
Cover of Software Architecture Patterns for Serverless Systems

Software Architecture Patterns for Serverless Systems

John Gilbert; Memi Lavi

A professional's guide to solving complex problems while designing modern software Key FeaturesLearn best practices for designing enterprise-grade software systems from a seasoned CTODeeper your understanding of system reliability, maintainability, and scalabilityElevate your skills to a professional level by learning the most effective software design patterns and architectural conceptsBook Description As businesses are undergoing a digital transformation to keep up with competition, it is now more important than ever for IT professionals to design systems to keep up with the rate of change while maintaining stability. This book takes you through the architectural patterns that power enterprise-grade software systems and the key architectural elements that enable change (such as events, autonomous services, and micro frontends), along with showing you how to implement and operate anti-fragile systems. First, you'll divide up a system and define boundaries so that your teams can work autonomously and accelerate innovation. You'll cover low-level event and data patterns that support the entire architecture, while getting up and running with the different autonomous service design patterns. Next, the book will focus on best practices for security, reliability, testability, observability, and performance. You'll combine all that you've learned and build upon that foundation, exploring the methodologies of continuous experimentation, deployment, and delivery before delving into some final thoughts on how to start making progress. By the end of this book, you'll be able to architect your own event-driven, serverless systems that are ready to adapt and change so that you can deliver value at the pace needed by your business. What you will learnExplore architectural patterns to create anti-fragile systems that thrive with changeFocus on DevOps practices that empower self-sufficient, full-stack teamsBuild enterprise-scale serverless systemsApply microservices principles to the frontendDiscover how SOLID principles apply to software and database architectureCreate event stream processors that power the event sourcing and CQRS patternDeploy a multi-regional system, including regional health checks, latency-based routing, and replicationExplore the Strangler pattern for migrating legacy systemsWho this book is for This book is for software architects who want to learn more about different software design patterns and best practices. This isn't a beginner's manual – you'll need an intermediate level of programming proficiency and software design to get started. You'll get the most out of this software design book if you already know the basics of the cloud, but it isn't a prerequisite.

show more
Packt
Cover of Software Architecture with C# 12 and .NET 8

Software Architecture with C# 12 and .NET 8

Gabriel Baptista; Francesco Abbruzzese

A book for the aspiring .NET software architect – design scalable and high-performance enterprise solutions using the latest features of C# 12 and .NET 8 Purchase of the print or Kindle book includes a free PDF eBook Key Features Get introduced to software architecture fundamentals and begin applying them in .NET Explore the main technologies used by software architects and choose the best ones for your needs Master new developments in .NET with the help of a practical case study that looks at software architecture for a travel agency Book DescriptionSoftware Architecture with C# 12 and .NET 8 puts high-level design theory to work in a .NET context, teaching you the key skills, technologies, and best practices required to become an effective .NET software architect. This fourth edition puts emphasis on a case study that will bring your skills to life. You’ll learn how to choose between different architectures and technologies at each level of the stack. You’ll take an even closer look at Blazor and explore OpenTelemetry for observability, as well as a more practical dive into preparing .NET microservices for Kubernetes integration. Divided into three parts, this book starts with the fundamentals of software architecture, covering C# best practices, software domains, design patterns, DevOps principles for CI/CD, and more. The second part focuses on the technologies, from choosing data storage in the cloud to implementing frontend microservices and working with Serverless. You’ll learn about the main communication technologies used in microservices, such as REST API, gRPC, Azure Service Bus, and RabbitMQ. The final part takes you through a real-world case study where you’ll create software architecture for a travel agency. By the end of this book, you will be able to transform user requirements into technical needs and deliver highly scalable enterprise software architectures.What you will learn Program and maintain Azure DevOps and explore GitHub Projects Manage software requirements to design functional and non-functional needs Apply architectural approaches such as layered architecture and domain-driven design Make effective choices between cloud-based and data storage solutions Implement resilient frontend microservices, worker microservices, and distributed transactions Understand when to use test-driven development (TDD) and alternative approaches Choose the best option for cloud development, from IaaS to Serverless Who this book is for This book is for engineers and senior software developers aspiring to become architects or looking to build enterprise applications with the .NET stack. Basic familiarity with C# and .NET is required to get the most out of this software architecture book.

show more
Packt
Cover of Software Architecture with C++

Software Architecture with C++

Andrey Gavrilin; Adrian Ostrowski; Piotr Gaczkowski

Apply business requirements to IT infrastructure and deliver a high-quality product by understanding architectures such as microservices, DevOps, and cloud-native using modern C++ standards and features Key FeaturesDesign scalable large-scale applications with the C++ programming languageArchitect software solutions in a cloud-based environment with continuous integration and continuous delivery (CI/CD)Achieve architectural goals by leveraging design patterns, language features, and useful toolsBook Description Software architecture refers to the high-level design of complex applications. It is evolving just like the languages we use, but there are architectural concepts and patterns that you can learn to write high-performance apps in a high-level language without sacrificing readability and maintainability. If you're working with modern C++, this practical guide will help you put your knowledge to work and design distributed, large-scale apps. You'll start by getting up to speed with architectural concepts, including established patterns and rising trends, then move on to understanding what software architecture actually is and start exploring its components. Next, you'll discover the design concepts involved in application architecture and the patterns in software development, before going on to learn how to build, package, integrate, and deploy your components. In the concluding chapters, you'll explore different architectural qualities, such as maintainability, reusability, testability, performance, scalability, and security. Finally, you will get an overview of distributed systems, such as service-oriented architecture, microservices, and cloud-native, and understand how to apply them in application development. By the end of this book, you'll be able to build distributed services using modern C++ and associated tools to deliver solutions as per your clients' requirements. What you will learnUnderstand how to apply the principles of software architectureApply design patterns and best practices to meet your architectural goalsWrite elegant, safe, and performant code using the latest C++ featuresBuild applications that are easy to maintain and deployExplore the different architectural approaches and learn to apply them as per your requirementSimplify development and operations using application containersDiscover various techniques to solve common problems in software design and developmentWho this book is for This software architecture C++ programming book is for experienced C++ developers looking to become software architects or develop enterprise-grade applications.

show more
Packt
Cover of Software Architecture with Kotlin

Software Architecture with Kotlin

Jason (Tsz Shun) Chow

Develop innovative architectural styles by analyzing and merging various approaches, focusing on making trade-offs and mitigating risks to solve real-world problems Key Features Learn how to analyze and dissect various architectural styles into building blocks Combine existing ideas with your own to create custom solutions Make informed decisions by navigating trade-offs and compromises Purchase of the print or Kindle book includes a free PDF eBook Book DescriptionSoftware Architecture with Kotlin explores the various styles of software architecture with a focus on using the Kotlin programming language. The author draws on their 20+ years of industry experience in developing large-scale enterprise distributed systems to help you grasp the principles, practices, and patterns that shape the architectural landscape of modern software systems. The book establishes a strong foundation in software architecture, explaining key concepts such as architectural qualities and principles, before teaching you how architectural decisions impact the quality of a system, such as scalability, reliability, and extendability. The chapters address modern architecture topics such as microservices, serverless, and event-driven architectures, providing insights into the challenges and trade-offs involved in adopting these architectural styles. You’ll also discover practical tools that’ll help you make informed decisions and mitigate risks. All architectural patterns in this book are demonstrated using Kotlin. By the end of this book, you’ll have gained practical expertise by using real-world examples, along with a solid understanding of Kotlin, to become a more proficient and impactful software architect.What you will learn Master the fundamental principles of architecture and design Explore common architectural styles and their applicable scenarios Analyze, break down, compare, and design architectural styles to solve practical problems Reason, negotiate, and make difficult choices in the absence of ideal solutions Mitigate risks when making compromises and trade-offs Create scalable, sustainable, maintainable, and extendable software systems Use the Kotlin programming language to achieve your architectural goals Who this book is for This book is for developers with basic Kotlin knowledge seeking a deeper understanding of architecture, Kotlin Android developers who are starting to get involved in backend development, and Java developers transitioning to Kotlin. It's also ideal for software architects who are less experienced in Kotlin and want to enhance their skills, as well as those who enjoy discussing and exploring unique architectural concepts.

show more
Packt
Cover of Software architecture with Spring

Software architecture with Spring

Wanderson Xesquevixos

Master strategies for crafting high-performance Java systems with Spring 6.0 and making the right architectural decisions to ensure scalability and robustness Key Features Confidently make strategic architectural choices that align business needs with technical excellence Design and evolve a real-world system using the right architectural patterns Explore essential architectural styles and tackle challenges like scalability, security, and maintainability with ease Purchase of the print or Kindle book includes a free PDF eBook Book Description Keep up with the fast-paced tech landscape with Software Architecture with Spring, your practical guide to making strategic architectural decisions that align seamlessly with your business objectives. Drawing from Wanderson's decades of experience, you'll journey through the complete software development lifecycle—from initial requirements gathering, through development and testing, to production deployment. You'll get hands-on with the evolution of an auction system, exploring its transformation through multiple architectural styles. You’ll discover how you can effectively transform a monolithic system into microservices using proven patterns and practices. As you progress, you’ll master advanced architectural paradigms such as Event-Driven Architecture, Filter-and-Pipeline Architecture, and Serverless Architecture. What you will learn Translate complex business needs into clear and implementable design Design resilient systems with common architectural styles Transform monolithic applications into microservices following best practices Implement event-driven architecture with Kafka Monitor, trace, and ensure robust testing, security, and performance Identify bottlenecks and optimize performance using patterns, caching, and database strategies Automate development workflows with CI/CD pipelines, using Jenkins to deploy the application to Kubernetes Who this book is for This book is for Java engineers transitioning to software architecture roles and architects seeking deeper insight into Spring-based architectural styles. Mid-level Spring Boot developers will be able to master architecture principles to build scalable, maintainable applications with the help of practical guidance on using modern architectural patterns. To get the most out of this book, being proficient in Java with an object-oriented programming background, and having a solid understanding of the Spring Framework is essential. It would help to have a basic knowledge of Git and Maven, as well as databases, Docker, and Docker Compose.

show more
Packt
Cover of Software Testing Strategies

Software Testing Strategies

Matthew Heusser; Michael Larsen

Unlock the true potential of software testing to achieve seamless software performance with this comprehensive guide Key Features Gain a solid understanding of software testing and master its multifaceted strategies Empower yourself to effectively overcome software testing challenges Develop actionable real-world testing skills for succeeding in any role Purchase of the print or Kindle book includes a free PDF eBook Book DescriptionIn today’s world, software is everywhere—from entertainment apps to mission-critical systems that support our health, finance, and infrastructure. Testing plays a vital role in ensuring these systems work reliably. Whether you're a software developer, hobbyist, or IT professional, this book will guide you in mastering the art of testing. It’s about asking the right "What if?" questions, uncovering vulnerabilities, and ensuring software performs as expected throughout its lifecycle. Testing isn't just about automation; it’s a human-driven, creative process that requires skill, and a deep understanding of software behavior. With practical examples and expert insights, this book helps you craft your own test strategies and explore novel approaches to problem-solving in the testing world. With its help, you’ll hone your testing skills with techniques and methodologies rather than tool-based solutions. Authored by experts Matt Heusser and Michael Larson, the book provides valuable strategies for making testing both effective and engaging. Matt is known for his leadership in project rescue initiatives, while Michael’s work in accessibility testing has helped shape industry standards. By the end of this book, you’ll be equipped to enhance your testing practices and ensure high-quality software in an ever-evolving tech landscape.What you will learn Explore accessibility, functional testing, performance testing, and more as an integral part of testing Find out how to implement a wide range of testing approaches Develop the skills needed to create effective testing strategies tailored to your project's needs Discover how to prioritize and execute the most impactful test ideas Gain insight into when and how to apply different testing elements Defend your chosen testing strategy with a comprehensive understanding of its components Who this book is for This book is for a broad spectrum of professionals engaged in software development, including programmers, testers, and DevOps specialists. Tailored to those who aspire to elevate their testing practices beyond the basics, the book caters to anyone seeking practical insights and strategies to master the nuanced interplay between human intuition and automation. Whether you are a seasoned developer, meticulous tester, or DevOps professional, this comprehensive guide offers a transformative roadmap to become an adept strategist in the dynamic realm of software quality assurance.

show more
Packt
Cover of System Design Guide for Software Professionals

System Design Guide for Software Professionals

Dhirendra Sinha; Tejas Chopra

Enhance your system design skills to build scalable and efficient systems by working through real-world case studies and expert strategies to excel in interviews Key Features Comprehensive coverage of distributed systems concepts and practical system design techniques. Insider tips and proven strategies from engineering leaders at top tech companies. Detailed case studies of widely used applications and their system architectures. Purchase of the print or Kindle book includes a free PDF eBook Book DescriptionBuilding scalable software systems is more critical than ever. Yet, many software professionals struggle to navigate the complexities of system design, especially when aiming for positions at top tech companies. Written by Dhirendra Sinha, a seasoned Engineering Leader at Google with a blend of experience working at large companies such as Cisco, Oracle, and Yahoo, and Tejas Chopra, a Senior Software Engineer at Netflix, a TEDx speaker, and a Co-Founder of GoEB1, this comprehensive and authoritative resource on system design offers invaluable insights and strategies to help you excel in interviews with all major tech companies. This guide covers the basics of system design, including the principles and techniques of distributed systems, and delves into core building blocks such as distributed system theorems, attributes, and the design and implementation of system components. Following examples of popular applications such as Uber, Twitter, Instagram, Google Docs, and Netflix, you’ll learn how to apply concepts to real-world scenarios. The book offers expert advice and strategies for preparing and acing system design interviews, along with a mind map/cheat sheet summarizing the key takeaways. By the end of this book, you’ll be equipped with unique techniques and the confidence to solve any coding interview question.What you will learn Design for scalability and efficiency with expert insights Apply distributed system theorems and attributes Implement DNS, databases, caches, queues, and APIs Analyze case studies of real-world systems Discover tips to excel in system design interviews with confidence Apply industry-standard methodologies for system design and evaluation Explore the architecture and operation of cloud-based systems Who this book is for This book is a must-have resource for experienced software professionals, particularly those with 5-15 years of experience in building scalable distributed systems, web applications, and backend microservices. Whether you're a seasoned developer or an architect looking to deepen your expertise in system design, this book provides the insights and practical knowledge you need to excel in tech interviews and advance your career. A solid foundation in distributed systems, data structures/algorithms, and web development will help you get the most out of this comprehensive guide.

show more
Packt