Nowadays there are a million ways for developers to learn new technologies or principles, like Pluralsight, Youtube, blogs or books. I like to read books when I commute or during cardio in the gym. In this post, I will present all books I have read in the last couple of years and provide some basic information. I will separate them in IT books and non IT books. The books are in no particular order, except The Phoenix Project and The Unicorn Project were the books I enjoyed most.
Bill is an IT manager at Parts Unlimited. It’s Tuesday morning and on his drive into the office, Bill gets a call from the CEO.
The company’s new IT initiative, code named Phoenix Project, is critical to the future of Parts Unlimited, but the project is massively over budget and very late. The CEO wants Bill to report directly to him and fix the mess in ninety days or else Bill’s entire department will be outsourced.
With the help of a prospective board member and his mysterious philosophy of The Three Ways, Bill starts to see that IT work has more in common with manufacturing plant work than he ever imagined. With the clock ticking, Bill must organize work flow streamline interdepartmental communications, and effectively serve the other business functions at Parts Unlimited.
In a fast-paced and entertaining style, three luminaries of the DevOps movement deliver a story that anyone who works in IT will recognize. Readers will not only learn how to improve their own IT organizations, they’ll never view IT the same way again.
The Unicorn Project, we follow Maxine, a senior lead developer and architect, as she is exiled to the Phoenix Project, to the horror of her friends and colleagues, as punishment for contributing to a payroll outage. She tries to survive in what feels like a heartless and uncaring bureaucracy and to work within a system where no one can get anything done without endless committees, paperwork, and approvals.
The Age of Software is here, and another mass extinction event looms—this is a story about rebel developers and business leaders working together, racing against time to innovate, survive, and thrive in a time of unprecedented uncertainty…and opportunity.
Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way.
Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship . Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer—but only if you work at it.
What kind of work will you be doing? You’ll be reading code—lots of code. And you will be challenged to think about what’s right about that code, and what’s wrong with it. More importantly, you will be challenged to reassess your professional values and your commitment to your craft.
_Clean Code _is divided into three parts. The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in cleaning up code—of transforming a code base that has some problems into one that is sound and efficient. The third part is the payoff: a single chapter containing a list of heuristics and “smells” gathered while creating the case studies. The result is a knowledge base that describes the way we think when we write, read, and clean code.
Readers will come away from this book understanding:
- How to tell the difference between good and bad code
- How to write good code and how to transform bad code into good code
- How to create good names, good functions, good objects, and good classes
- How to format code for maximum readability
- How to implement complete error handling without obscuring code logic
- How to unit test and practice test-driven development
This book is a must for any developer, software engineer, project manager, team lead, or systems analyst with an interest in producing better code.
Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals.
In _The Clean Coder: A Code of Conduct for Professional Programmers, _legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice–about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act.
Readers will learn:
- What it means to behave as a true software craftsman
- How to deal with conflict, tight schedules, and unreasonable managers
- How to get into the flow of coding, and get past writer’s block
- How to handle unrelenting pressure and avoid burnout
- How to combine enduring attitudes with new development paradigms
- How to manage your time, and avoid blind alleys, marshes, bogs, and swamps
- How to foster environments where programmers and teams can thrive
- When to say “No”–and how to say it
- When to say “Yes”–and what yes really means
Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn’t written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them–and earn the pride and fulfillment that they alone possess.
Practical Software Architecture Solutions from the Legendary Robert C. Martin (“Uncle Bob”)
By applying universal rules of software architecture, you can dramatically improve developer productivity throughout the life of any software system. Now, building upon the success of his best-selling books Clean Code and The Clean Coder, legendary software craftsman Robert C. Martin (“Uncle Bob”) reveals those rules and helps you apply them.
Martin’s _Clean Architecture _doesn’t merely present options. Drawing on over a half-century of experience in software environments of every imaginable type, Martin tells you what choices to make and why they are critical to your success. As you’ve come to expect from Uncle Bob, this book is packed with direct, no-nonsense solutions for the real challenges you’ll face–the ones that will make or break your projects.
- Learn what software architects need to achieve–and core disciplines and practices for achieving it
- Master essential software design principles for addressing function, component separation, and data management
- See how programming paradigms impose discipline by restricting what developers can do
- Understand what’s critically important and what’s merely a “detail”
- Implement optimal, high-level structures for web, database, thick-client, console, and embedded applications
- Define appropriate boundaries and layers, and organize components and services
- See why designs and architectures go wrong, and how to prevent (or fix) these failures
_Clean Architecture _is essential reading for every current or aspiring software architect, systems analyst, system designer, and software manager–and for every programmer who must execute someone else’s designs.
Nearly twenty years after the Agile Manifesto was first presented, the legendary Robert C. Martin (“Uncle Bob”) reintroduces Agile values and principles for a new generation–programmers and non-programmers alike. Martin, author of Clean Code and other highly influential software development guides, was there at Agile’s founding. Now, in _Clean Agile: Back to Basics, _he strips away misunderstandings and distractions that over the years have made it harder to use Agile than was originally intended.
Martin describes what Agile is in no uncertain terms: a small discipline that helps small teams manage small projects . . . with huge implications because every big project is comprised of many small projects. Drawing on his fifty years’ experience with projects of every conceivable type, he shows how Agile can help you bring true professionalism to software development.
- Get back to the basics–what Agile is, was, and should always be
- Understand the origins, and proper practice, of SCRUM
- Master essential business-facing Agile practices, from small releases and acceptance tests to whole-team communication
- Explore Agile team members’ relationships with each other, and with their product
- Rediscover indispensable Agile technical practices: TDD, refactoring, simple design, and pair programming
- Understand the central roles values and craftsmanship play in your Agile team’s success
If you want Agile’s true benefits, there are no shortcuts: You need to do Agile right. _Clean Agile: Back to Basics _will show you how, whether you’re a developer, tester, manager, project manager, or customer.
Tap into the wisdom of experts to learn what every programmer should know, no matter what language you use. With the 97 short and extremely useful tips for programmers in this book, you’ll expand your skills by adopting new approaches to old problems, learning appropriate best practices, and honing your craft through sound advice.
With contributions from some of the most experienced and respected practitioners in the industry–including Michael Feathers, Pete Goodliffe, Diomidis Spinellis, Cay Horstmann, Verity Stob, and many more–this book contains practical knowledge and principles that you can apply to all kinds of projects.
A few of the 97 things you should know:
- “Code in the Language of the Domain” by Dan North
- “Write Tests for People” by Gerard Meszaros
- “Convenience Is Not an -ility” by Gregor Hohpe
- “Know Your IDE” by Heinz Kabutz
- “A Message to the Future” by Linda Rising
- “The Boy Scout Rule” by Robert C. Martin (Uncle Bob)
- “Beware the Share” by Udi Dahan
A single dramatic software failure can cost a company millions of dollars – but can be avoided with simple changes to design and architecture. This new edition of the best-selling industry standard shows you how to create systems that run longer, with fewer failures, and recover better when bad things happen. New coverage includes DevOps, microservices, and cloud-native architecture. Stability antipatterns have grown to include systemic problems in large-scale systems. This is a must-have pragmatic guide to engineering for production systems.
If you’re a software developer, and you don’t want to get alerts every night for the rest of your life, help is here. With a combination of case studies about huge losses – lost revenue, lost reputation, lost time, lost opportunity – and practical, down-to-earth advice that was all gained through painful experience, this book helps you avoid the pitfalls that cost companies millions of dollars in downtime and reputation. Eighty percent of project life-cycle cost is in production, yet few books address this topic.
This updated edition deals with the production of today’s systems – larger, more complex, and heavily virtualized – and includes information on chaos engineering, the discipline of applying randomness and deliberate stress to reveal systematic problems. Build systems that survive the real world, avoid downtime, implement zero-downtime upgrades and continuous delivery, and make cloud-native applications resilient. Examine ways to architect, design, and build software – particularly distributed systems – that stands up to the typhoon winds of a flash mob, a Slashdotting, or a link on Reddit. Take a hard look at software that failed the test and find ways to make sure your software survives.
To skip the pain and get the experience…get this book.
Software-Architekten müssen komplexe fachliche und technische Anforderungen an IT-Systeme umsetzen und diese Systeme durch nachvollziehbare Strukturen flexibel und erweiterbar gestalten.
Dieser Praxisleitfaden zeigt Ihnen, wie Sie Software-Architekturen effektiv und systematisch entwickeln können. Der bekannte Software-Architekt Gernot Starke unterstützt Sie mit praktischen Tipps, Architekturmustern und seinen Erfahrungen.
Er gibt Antworten auf zentrale Fragen:
– Welche Aufgaben haben Software-Architekten?
– Wie gehen Software-Architekten beim Entwurf vor?
– Wie kommunizieren und dokumentieren Sie Software-Architekturen?
– Wie helfen Architekturmuster und Architekturbausteine?
– Wie bewerten Sie Software-Architekturen?
– Wie behandeln Sie Persistenz, grafische Benutzeroberflächen, Geschäftsregeln, Integration, Verteilung, Sicherheit, Fehlerbehandlung, Workflow-Management und sonstige technische Konzepte?
– Was müssen Software-Architekten über MDA/MDSD, UML 2 und arc42 wissen?
– Welche Aufgaben nehmen Enterprise-IT-Architekten wahr?
With the award-winning book Agile Software Development: Principles, Patterns, and Practices, Robert C. Martin helped bring Agile principles to tens of thousands of Java and C++ programmers. Now .NET programmers have a definitive guide to agile methods with this completely updated volume from Robert C. Martin and Micah Martin, Agile Principles, Patterns, and Practices in C#.
This book presents a series of case studies illustrating the fundamentals of Agile development and Agile design, and moves quickly from UML models to real C# code. The introductory chapters lay out the basics of the agile movement, while the later chapters show proven techniques in action. The book includes many source code examples that are also available for download from the authors’ Web site.
Readers will come away from this book understanding:
- Agile principles, and the fourteen practices of Extreme Programming
- Spiking, splitting, velocity, and planning iterations and releases
- Test-driven development, test-first design, and acceptance testing
- Refactoring with unit testing
- Pair programming
- Agile design and design smells
- The five types of UML diagrams and how to use them effectively
- Object-oriented package design and design patterns
- How to put all of it together for a real-world project
Whether you are a C# programmer or a Visual Basic or Java programmer learning C#, a software development manager, or a business analyst, Agile Principles, Patterns, and Practices in C# is the first book you should read to understand agile software and how it applies to programming in the .NET Framework.
When you have questions about C# 8.0 or .NET Core, this best-selling guide has the answers you need. C# is a language of unusual flexibility and breadth, but with its continual growth there’s so much more to learn. In the tradition of the O’Reilly Nutshell guides, this thoroughly updated edition is simply the best one-volume reference to the C# language available today.
Organized around concepts and use cases, C# 8.0 in a Nutshell provides intermediate and advanced programmers with a concise map of C# and .NET knowledge that also plumbs significant depths.
- Get up to speed on C#, from syntax and variables to advanced topics such as pointers, closures, and patterns
- Dig deep into LINQ with three chapters dedicated to the topic
- Explore concurrency and asynchrony, advanced threading, and parallel programming
- Work with .NET features, including regular expressions, networking, serialization, spans, reflection, and cryptography
- Delve into Roslyn, the modular C# compiler as a service
Now in its 7th edition, the best selling book on MVC is updated for ASP.NET Core MVC 2. It contains detailed explanations of the Core MVC functionality which enables developers to produce leaner, cloud optimized and mobile-ready applications for the .NET platform. This book puts ASP.NET Core MVC into context and dives deep into the tools and techniques required to build modern, cloud optimized extensible web applications. All the new MVC features are described in detail and the author explains how best to apply them to both new and existing projects.
The ASP.NET Core MVC Framework is the latest evolution of Microsoft’s ASP.NET web platform, built on a completely new foundation. It represents a fundamental change to how Microsoft constructs and deploys web frameworks and is free of the legacy of earlier technologies such as Web Forms. ASP.NET Core MVC provides a “host agnostic” framework and a high-productivity programming model that promotes cleaner code architecture, test-driven development, and powerful extensibility.
Best-selling author Adam Freeman has thoroughly revised this market-leading book and explains how to get the most from ASP.NET Core MVC. He starts with the nuts-and-bolts and shows you everything through to advanced features, going in-depth to give you the knowledge you need. The book includes a fully worked case study of a functioning web application that readers can use as a template for their own projects.
What’s New in This Edition
- Fully updated for Visual Studio 2017, C# 7 and .NET Core 2
- Coverage of new features such as view filters
- Wider platform and tooling coverage than ever before, with more on Visual Studio Code and working with .NET Core on non-Windows platforms
- Docker-based application deployment
What You Will Learn
- Gain a solid architectural understanding of ASP.NET Core MVC
- Explore the entire ASP.NET MVC Framework as a cohesive whole
- See how MVC and test-driven development work in action
- Learn what’s new in ASP.NET Core MVC 2 and how best to apply these new features to your own work
- See how to create RESTful web services and Single Page Applications
- Build on your existing knowledge of previous MVC releases to get up and running with the new programming model quickly and effectively
Who This Book Is For
This book is for web developers with a basic knowledge of ASP.NET and C# who want to incorporate the latest improvements and functionality in the ASP.NET Core MVC 2 Framework.
The ASP.NET MVC 5 Framework is the latest evolution of Microsoft’s ASP.NET web platform. It provides a high-productivity programming model that promotes cleaner code architecture, test-driven development, and powerful extensibility, combined with all the benefits of ASP.NET.
ASP.NET MVC 5 contains a number of advances over previous versions, including the ability to define routes using C# attributes and the ability to override filters. The user experience of building MVC applications has also been substantially improved. The new, more tightly integrated, Visual Studio 2013 IDE has been created specifically with MVC application development in mind and provides a full suite of tools to improve development times and assist in reporting, debugging and deploying your code.
The power of ASP.NET MVC 5 stems from the underlying ASP.NET platform. To make your ASP.NET MVC applications the best they can be, you need to fully understand the platform features and know how they can be used to build effective and elegant MVC framework applications.
The ASP.NET platform provides ASP.NET MVC applications with a rich suite of services including vital every-day features like extensible request handling, state management, and user authentication. Understanding how these features work is the difference between creating an average web application and the best-in-class.
MVC applications that are architected with a thorough knowledge of the underlying platforms are faster to write, faster to run, and more readily adaptable to change. In Pro ASP.NET MVC 5 Platform, best-selling author Adam Freeman explains how to get the most from the entire ASP.NET platform, beginning with a nuts-and-bolts description of the patterns and tools you need through to the most advanced features. He goes in-depth at every stage to give you the practical knowledge that you need to apply these concepts to your own code.
Implementing Azure Solutions: Deploy and manage Azure containers and build Azure solutions with ease
Microsoft Azure offers numerous solutions that can shape the future of any business. However, the major challenge that architects and administrators face lies in implementing these solutions.
Implementing Azure Solutions helps you overcome this challenge by enabling you to implement Azure Solutions effectively. The book begins by guiding you in choosing the backend structure for your solutions. You will then work with the Azure toolkit and learn how to use Azure Managed Apps to share your solutions with the Azure service catalog. The book then focuses on various implementation techniques and best practices such as implementing Azure Cloud Services by configuring, deploying, and managing cloud services. As you progress through the chapters, you’ll learn how to work with Azure-managed Kubernetes and Azure Container Services.
By the end of the book, you will be able to build robust cloud solutions on Azure.
- Create and manage a Kubernetes cluster in Azure Kubernetes Service (AKS)
- Implement site-to-site VPN and ExpressRoute connections in your environment
- Explore the best practices in building and deploying app services
- Use Telemetry to monitor your Azure Solutions
- Design an Azure IoT solution and learn how to operate in different scenarios
- Implement a Hybrid Azure Design using Azure Stack
If you’re an IT architect, IT professional, or DevOps engineer who plans to implement Azure Solutions for your organization, this book is for you.
Accountability. Transparency. Responsibility. These are not words that are often applied to software development.
In this completely revised introduction to Extreme Programming (XP), Kent Beck describes how to improve your software development by integrating these highly desirable concepts into your daily development process.
The first edition of Extreme Programming Explained is a classic. It won awards for its then-radical ideas for improving small-team development, such as having developers write automated tests for their own code and having the whole team plan weekly. Much has changed in five years. This completely rewritten second edition expands the scope of XP to teams of any size by suggesting a program of continuous improvement based on:
- Five core values consistent with excellence in software development
- Eleven principles for putting those values into action
- Thirteen primary and eleven corollary practices to help you push development past its current business and technical limitations
Whether you have a small team that is already closely aligned with your customers or a large team in a gigantic or multinational organization, you will find in these pages a wealth of ideas to challenge, inspire, and encourage you and your team members to substantially improve your software development.
You will discover how to:
- Involve the whole team—XP style
- Increase technical collaboration through pair programming and continuous integration
- Reduce defects through developer testing
- Align business and technical decisions through weekly and quarterly planning
- Improve teamwork by setting up an informative, shared workspace
You will also find many other concrete ideas for improvement, all based on a philosophy that emphasizes simultaneously increasing the humanity and effectiveness of software development.
Every team can improve. Every team can begin improving today. Improvement is possible—beyond what we can currently imagine. Extreme Programming Explained, Second Edition, offers ideas to fuel your improvement for years to come.
Your Complete Guide to Cloud Computing and Migrating to the Cloud. This book covers not only the technical details of how public and private cloud technology works but also the strategy, technical design, and in-depth implementation details required to migrate existing applications to the cloud.
After reading this book, you will have a much better understanding of cloud technology and the steps required to quickly reap its benefits while at the same time lowering your IT implementation risk. Written by a proven expert in cloud computing, business management, network engineering, and IT security. This is a must-read for IT management, CIOs, senior IT engineers, and program managers in the government, DoD, and commercial sectors.
Azure for Architects: Implementing cloud design, DevOps, containers, IoT, and serverless solutions on your public cloud
Over the years, Azure cloud services have grown quickly, and the number of organizations adopting Azure for their cloud services is also gradually increasing. Leading industry giants are finding that Azure fulfills their extensive cloud requirements.
Azure for Architects – Second Edition starts with an extensive introduction to major designing and architectural aspects available with Azure. These design patterns focus on different aspects of the cloud, such as high availability, security, and scalability. Gradually, we move on to other aspects, such as ARM template modular design and deployments.
This is the age of microservices and serverless is the preferred implementation mechanism for them. This book covers the entire serverless stack available in Azure including Azure Event Grid, Azure Functions, and Azure Logic Apps. New and advance features like durable functions are discussed at length. A complete integration solution using these serverless technologies is also part of the book. A complete chapter discusses all possible options related to containers in Azure including Azure Kubernetes services, Azure Container Instances and Registry, and Web App for Containers.
Data management and integration is an integral part of this book that discusses options for implementing OLTP solutions using Azure SQL, Big Data solutions using Azure Data factory and Data Lake Storage, eventing solutions using stream analytics, and Event Hubs. This book will provide insights into Azure governance features such as tagging, RBAC, cost management, and policies.
By the end of this book, you will be able to develop a full-?edged Azure cloud solution that is Enterprise class and future-ready.
- Create an end-to-end integration solution using Azure Serverless Stack
- Learn Big Data solutions and OLTP–based applications on Azure
- Understand DevOps implementations using Azure DevOps
- Architect solutions comprised of multiple resources in Azure
- Develop modular ARM templates
- Develop Governance on Azure using locks, RBAC, policies, tags and cost
- Learn ways to build data solutions on Azure
- Understand the various options related to containers including Azure Kubernetes Services
If you are Cloud Architects, DevOps Engineers, or developers who want to learn key architectural aspects of the Azure Cloud platform, then this book is for you.
Prior basic knowledge of the Azure Cloud platform is good to have.
An expert guide to selecting the right cloud service model for your business
Cloud computing is all the rage, allowing for the delivery of computing and storage capacity to a diverse community of end-recipients. However, before you can decide on a cloud model, you need to determine what the ideal cloud service model is for your business. Helping you cut through all the haze, Architecting the Cloud is vendor neutral and guides you in making one of the most critical technology decisions that you will face: selecting the right cloud service model(s) based on a combination of both business and technology requirements.
- Guides corporations through key cloud design considerations
- Discusses the pros and cons of each cloud service model
- Highlights major design considerations in areas such as security, data privacy, logging, data storage, SLA monitoring, and more
- Clearly defines the services cloud providers offer for each service model and the cloud services IT must provide
Arming you with the information you need to choose the right cloud service provider, Architecting the Cloud is a comprehensive guide covering everything you need to be aware of in selecting the right cloud service model for you.
The Most Complete, Practical, and Actionable Guide to Microservices
Going beyond mere theory and marketing hype, Eberhard Wolff presents all the knowledge you need to capture the full benefits of this emerging paradigm. He illuminates microservice concepts, architectures, and scenarios from a technology-neutral standpoint, and demonstrates how to implement them with today’s leading technologies such as Docker, Java, Spring Boot, the Netflix stack, and Spring Cloud.
The author fully explains the benefits and tradeoffs associated with microservices, and guides you through the entire project lifecycle: development, testing, deployment, operations, and more. You’ll find best practices for architecting microservice-based systems, individual microservices, and nanoservices, each illuminated with pragmatic examples. The author supplements opinions based on his experience with concise essays from other experts, enriching your understanding and illuminating areas where experts disagree. Readers are challenged to
experiment on their own the concepts explained in the book to gain hands-on experience.
- Discover what microservices are, and how they differ from other forms of
- Modernize legacy applications and efficiently build new systems
- Drive more value from continuous delivery with microservices
- Learn how microservices differ from SOA
- Optimize the microservices project lifecycle
- Plan, visualize, manage, and evolve architecture
- Integrate and communicate among microservices
- Apply advanced architectural techniques, including CQRS and Event Sourcing
- Maximize resilience and stability
- Operate and monitor microservices in production
- Build a full implementation with Docker, Java, Spring Boot, the Netflix stack, and Spring Cloud
- Explore nanoservices with Amazon Lambda, OSGi, Java EE, Vert.x, Erlang, and Seneca
- Understand microservices’ impact on teams, technical leaders, product owners, and stakeholders
Managers will discover better ways to support microservices, and learn how adopting the method affects the entire organization. Developers will master the technical skills and concepts they need to be effective. Architects will gain a deep understanding of key issues in creating or migrating toward microservices, and exactly what it will take to transform their plans into reality.
Do you have a nagging feeling that your monitoring needs improvement, but you just aren’t sure where to start or how to do it? Are you plagued by constant, meaningless alerts? Does your monitoring system routinely miss real problems? This is the book for you.
Mike lays out a practical approach to designing and implementing an effective monitoring–from the application down to hardware in a datacenter, and everything between. Practical Monitoring will provide you with straight-forward strategies and tactics for designing and implementing a strong monitoring foundations for your company.
Practical Monitoring has a unique vendor-neutral approach to monitoring. Rather than discuss how to implement specific tools, Mike teaches the principles and underlying mechanics behind monitoring so you can implement the lessons in any tool.
Practical Monitoring covers such topics as:
- Monitoring anti-patterns
- Principles of monitoring design
- How to build an effective on-call rotation
- Getting metrics and logs out of your application
Clouds are distributed technology platforms that leverage sophisticated technology innovations to provide highly scalable and resilient environments that can be remotely utilized by organizations in a multitude of powerful ways. To successfully build upon, integrate with, or even create a cloud environment requires an understanding of its common inner mechanics, architectural layers, and models, as well as an understanding of the business and economic factors that result from the adoption and real-world use of cloud-based services.
In Cloud Computing: Concepts, Technology & Architecture, Thomas Erl, one of the world’s top-selling IT authors, teams up with cloud computing experts and researchers to break down proven and mature cloud computing technologies and practices into a series of well-defined concepts, models, technology mechanisms, and technology architectures, all from an industry-centric and vendor-neutral point of view. In doing so, the book establishes concrete, academic coverage with a focus on structure, clarity, and well-defined building blocks for mainstream cloud computing platforms and solutions.
Subsequent to technology-centric coverage, the book proceeds to establish business-centric models and metrics that allow for the financial assessment of cloud-based IT resources and their comparison to those hosted on traditional IT enterprise premises. Also provided are templates and formulas for calculating SLA-related quality-of-service values and numerous explorations of the SaaS, PaaS, and IaaS delivery models.
With more than 260 figures, 29 architectural models, and 20 mechanisms, this indispensable guide provides a comprehensive education of cloud computing essentials that will never leave your side.
DevOps is a fundamental shift in how leading edge companies are starting to manage their software and IT work. Businesses need to move more quickly than ever before, and large software organizations are applying these DevOps principles to develop new software faster than anyone previously thought possible. DevOps started in small organizations and in large organizations that had or created architectures that enabled small teams to independently develop, qualify, and deploy code. The impact on productivity is so dramatic that larger organizations with tightly coupled architectures are realizing they either need to embrace DevOps or be left behind.
The biggest challenge is that they can’t just empower small teams to work independently because their legacy architectures require coordinating the development, qualification, and deployment of code across hundreds of people. They need a DevOps approach that not only addresses their unique challenges, but also helps them reach an organization-wide agreement on where to start and how to scale DevOps. That is where Starting and Scaling DevOps in the Enterprise comes in. Starting and Scaling DevOps in the Enterprise is a quick, easy-to-read guide that helps structure those improvements by providing a framework that large organizations can use to understand DevOps principles in the context of their current development processes and gain alignment across the organization for successful implementations.
The book illustrates how to analyze your current development and delivery processes to ensure you gain positive momentum by implementing the DevOps practices that will have the greatest immediate impact on the productivity of your organization, with the goal of achieving continuous improvement over time.
How do you detangle a monolithic system and migrate it to a microservice architecture? How do you do it while maintaining business-as-usual? As a companion to Sam Newman’s extremely popular Building Microservices, this new book details a proven method for transitioning an existing monolithic system to a microservice architecture.
With many illustrative examples, insightful migration patterns, and a bevy of practical advice to transition your monolith enterprise into a microservice operation, this practical guide covers multiple scenarios and strategies for a successful migration, from initial planning all the way through application and database decomposition. You’ll learn several tried and tested patterns and techniques that you can use as you migrate your existing architecture.
- Ideal for organizations looking to transition to microservices, rather than rebuild
- Helps companies determine whether to migrate, when to migrate, and where to begin
- Addresses communication, integration, and the migration of legacy systems
- Discusses multiple migration patterns and where they apply
- Provides database migration examples, along with synchronization strategies
- Explores application decomposition, including several architectural refactoring patterns
- Delves into details of database decomposition, including the impact of breaking referential and transactional integrity, new failure modes, and more
Kubernetes radically changes the way applications are built and deployed in the cloud. Since its introduction in 2014, this container orchestrator has become one of the largest and most popular open source projects in the world. The updated edition of this practical book shows developers and ops personnel how Kubernetes and container technology can help you achieve new levels of velocity, agility, reliability, and efficiency.
Kelsey Hightower, Brendan Burns, and Joe Beda—who’ve worked on Kubernetes at Google and beyond—explain how this system fits into the lifecycle of a distributed application. You’ll learn how to use tools and APIs to automate scalable distributed systems, whether it’s for online services, machine learning applications, or a cluster of Raspberry Pi computers.
- Create a simple cluster to learn how Kubernetes works
- Dive into the details of deploying an application using Kubernetes
- Learn specialized objects in Kubernetes, such as DaemonSets, jobs, ConfigMaps, and secrets
- Explore deployments that tie together the lifecycle of a complete application
- Get practical examples of how to develop and deploy real-world applications in Kubernetes
Increase profitability, elevate work culture, and exceed productivity goals through DevOps practices.
More than ever, the effective management of technology is critical for business competitiveness. For decades, technology leaders have struggled to balance agility, reliability, and security. The consequences of failure have never been greater―whether it’s the healthcare.gov debacle, cardholder data breaches, or missing the boat with Big Data in the cloud.
And yet, high performers using DevOps principles, such as Google, Amazon, Facebook, Etsy, and Netflix, are routinely and reliably deploying code into production hundreds, or even thousands, of times per day.
Following in the footsteps of The Phoenix Project, The DevOps Handbook shows leaders how to replicate these incredible outcomes, by showing how to integrate Product Management, Development, QA, IT Operations, and Information Security to elevate your company and win in the marketplace.
How well does your organization respond to changing market conditions, customer needs, and emerging technologies when building software-based products? This practical guide presents Lean and Agile principles and patterns to help you move fast at scale—and demonstrates why and how to apply these methodologies throughout your organization, rather than with just one department or team.
Through case studies, you’ll learn how successful enterprises have rethought everything from governance and financial management to systems architecture and organizational culture in the pursuit of radically improved performance. Adopting Lean will take time and commitment, but it’s vital for harnessing the cultural and technical forces that are accelerating the rate of innovation.
- Discover how Lean focuses on people and teamwork at every level, in contrast to traditional management practices
- Approach problem-solving experimentally, by exploring solutions, testing assumptions, and getting feedback from real users
- Lead and manage large-scale programs in a way that empowers employees, increases the speed and quality of delivery, and lowers costs
- Learn how to implement ideas from the DevOps and Lean Startup movements even in complex, regulated environments
Learn how to run new and old applications in Docker containers on Windows – modernizing the architecture, improving security and maximizing efficiency.
- Run .NET Framework and .NET Core apps in Docker containers for efficiency, security and portability
- Design distributed containerized apps, using enterprise-grade open source software from Docker Hub
- Build a CI/CD pipeline with Docker, going from source to a production Docker Swarm in the cloud
Docker on Windows, Second Edition teaches you all you need to know about Docker on Windows, from the 101 to running highly-available workloads in production. You’ll be guided through a Docker journey, starting with the key concepts and simple examples of .NET Framework and .NET Core apps in Docker containers on Windows. Then you’ll learn how to use Docker to modernize the architecture and development of traditional ASP.NET and SQL Server apps.
The examples show you how to break up legacy monolithic applications into distributed apps and deploy them to a clustered environment in the cloud, using the exact same artifacts you use to run them locally. You’ll see how to build a CI/CD pipeline which uses Docker to compile, package, test and deploy your applications. To help you move confidently to production, you’ll learn about Docker security, and the management and support options.
The book finishes with guidance on getting started with Docker in your own projects. You’ll walk through some real-world case studies for Docker implementations, from small-scale on-premises apps to very large-scale apps running on Azure.
- Understand key Docker concepts: images, containers, registries and swarms
- Run Docker on Windows 10, Windows Server 2019, and in the cloud
- Deploy and monitor distributed solutions across multiple Docker containers
- Run containers with high availability and failover with Docker Swarm
- Master security in-depth with the Docker platform, making your apps more secure
- Build a Continuous Deployment pipeline, running Jenkins and Git in Docker
- Debug applications running in Docker containers using Visual Studio
- Plan the adoption of Docker in your organization
If you want to modernize an old monolithic application without rewriting it, smooth the deployment to production, or move to DevOps or the cloud, then Docker is the enabler for you. This book gives you a solid grounding in Docker so you can confidently approach all of these scenarios.
Use ASP.NET Core 2 to create durable and cross-platform web APIs through a series of applied, practical scenarios. Examples in this book help you build APIs that are fast and scalable. You’ll progress from the basics of the framework through to solving the complex problems encountered in implementing secure RESTful services. The book is packed full of examples showing how Microsoft’s ground-up rewrite of ASP.NET Core 2 enables native cross-platform applications that are fast and modular, allowing your cloud-ready server applications to scale as your business grows.
Major topics covered in the book include the fundamentals and core concepts of ASP.NET Core 2. You’ll learn about building RESTful APIs with the MVC pattern using proven best practices and following the six principles of REST. Examples in the book help in learning to develop world-class web APIs and applications that can run on any platform, including Windows, Linux, and MacOS. You can even deploy to Microsoft Azure and automate your delivery by implementing Continuous Integration and Continuous Deployment pipelines.
What You Will Learn
- Incorporate automated API tooling such as Swagger from the OpenAPI specification
- Standardize query and response formats using Facebook’s GraphQL query language
- Implement security by applying authentication and authorization using ASP.NET Identity
- Ensure the safe storage of sensitive data using the data protection stack
- Create unit and integration tests to guarantee code quality
Who This Book Is For
Developers who build server applications such as web sites and web APIs that need to run fast and cross platform; programmers who want to implement practical solutions for real-world problems; those who want in-depth knowledge of the latest bits of ASP.NET Core 2.0
Microservice-based applications enable unprecedented agility and ease of management, and Docker containers are ideal for building them. Microsoft Azure offers all the foundational technology and higher-level services you need to develop and run any microservices application. Microservices with Docker on Microsoft Azure brings together essential knowledge for creating these applications from the ground up, or incrementally deconstructing monolithic applications over time.
The authors draw on their pioneering experience helping to develop Azure’s microservices features and collaborating with Microsoft product teams who’ve relied on microservices architectures for years. They illuminate the benefits and challenges of microservices development and share best practices all developers and architects should know.
You’ll gain hands-on expertise through a detailed sample application, downloadable at github.com/flakio/flakio.github.io. Step by step, you’ll walk through working with services written in Node.js, Go, and ASP.NET 5, using diverse data stores (mysql, elasticsearch, block storage). The authors guide you through using Docker Hub as a service registry, and Microsoft Azure Container service for cluster management and service orchestration.
- Recognizing how microservices architectures are different, and when they make sense
- Understanding Docker containers in the context of microservices architectures
- Building, pulling, and layering Docker images
- Working with Docker volumes, containers, images, tags, and logs
- Using Docker Swarm, Docker Compose, and Docker Networks
- Creating Docker hosts using the Azure portal, Azure Resource Manager, the command line, docker-machine, or locally via Docker toolbox
- Establishing development and DevOps environments to support microservices applications
- Making the most of Docker’s continuous delivery options
- Using Azure’s cluster and container orchestration capabilities to operate and scale containerized microservices applications with maximum resilience
- Monitoring microservices applications with Azure Diagnostics, Visual Studio Application Insights, and Microsoft Operations Management Suite
- Developing microservices applications faster and more effectively with Azure Service Fabric
- An extensive sample application demonstrating the microservices concepts discussed throughout the book is available online
The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process.
Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development.
Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis–refactoring not just the code but the model underlying the code–in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include:
- Getting all team members to speak the same language
- Connecting model and implementation more deeply
- Sharpening key distinctions in a model
- Managing the lifecycle of a domain object
- Writing domain code that is safe to combine in elaborate ways
- Making complex code obvious and predictable
- Formulating a domain vision statement
- Distilling the core of a complex domain
- Digging out implicit concepts needed in the model
- Applying analysis patterns
- Relating design patterns to the model
- Maintaining model integrity in a large system
- Dealing with coexisting models on the same project
- Organizing systems with large-scale structures
- Recognizing and responding to modeling breakthroughs
With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.
The Art of Unit Testing, Second Edition guides you step by step from writing your first simple tests to developing robust test sets that are maintainable, readable, and trustworthy. You’ll master the foundational ideas and quickly move to high-value subjects like mocks, stubs, and isolation, including frameworks such as Moq, FakeItEasy, and Typemock Isolator. You’ll explore test patterns and organization, working with legacy code, and even “untestable” code. Along the way, you’ll learn about integration testing and techniques and tools for testing databases and other technologies.
About this Book
You know you should be unit testing, so why aren’t you doing it? If you’re new to unit testing, if you find unit testing tedious, or if you’re just not getting enough payoff for the effort you put into it, keep reading.
The Art of Unit Testing, Second Edition guides you step by step from writing your first simple unit tests to building complete test sets that are maintainable, readable, and trustworthy. You’ll move quickly to more complicated subjects like mocks and stubs, while learning to use isolation (mocking) frameworks like Moq, FakeItEasy, and Typemock Isolator. You’ll explore test patterns and organization, refactor code applications, and learn how to test “untestable” code. Along the way, you’ll learn about integration testing and techniques for testing with databases.
The examples in the book use C#, but will benefit anyone using a statically typed language such as Java or C++.
- Create readable, maintainable, trustworthy tests
- Fakes, stubs, mock objects, and isolation (mocking) frameworks
- Simple dependency injection techniques
- Refactoring legacy code
Use this book as your one-stop shop for architecting a world-class DevOps environment with Microsoft technologies.
.NET DevOps for Azure is a synthesis of practices, tools, and process that, together, can equip a software organization to move fast and deliver the highest quality software. The book begins by discussing the most common challenges faced by developers in DevOps today and offers options and proven solutions on how to implement DevOps for your team.
Daily, millions of developers use .NET to build and operate mission-critical software systems for organizations around the world. While the marketplace has scores of information about the technology, it is completely up to you to put together all the blocks in the right way for your environment.
This book provides you with a model to build on. The relevant principles are covered first along with how to implement that part of the environment. And while variances in tools, language, or requirements will change the needed implementation, the DevOps model is the architecture for the working environment for your team. You can modify parts of the model to customize it to your enterprise, but the architecture will enable all of your teams and applications to accelerate in performance.
What You Will Learn:
- Get your .NET applications into a DevOps environment in Azure
- Analyze and address the part of your DevOps process that causes delays or bottlenecks
- Track code using Azure Repos and conduct acceptance tests
- Apply the rules for segmenting applications into Git repositories
- Understand the different types of builds and when to use each
- Know how to think about code validation in your DevOps environment
- Provision and configure environments; deploy release candidates across the environments in Azure
- Monitor and support software that has been deployed to a production environment
This book is for .NET Developers who are using or want to use DevOps in Azure but don’t know where to begin.
Kubernetes is the operating system of the cloud native world, providing a reliable and scalable platform for running containerized workloads. In this friendly, pragmatic book, cloud experts John Arundel and Justin Domingus show you what Kubernetes can do—and what you can do with it.
You’ll learn all about the Kubernetes ecosystem, and use battle-tested solutions to everyday problems. You’ll build, step by step, an example cloud native application and its supporting infrastructure, along with a development environment and continuous deployment pipeline that you can use for your own applications.
- Understand containers and Kubernetes from first principles; no experience necessary
- Run your own clusters or choose a managed Kubernetes service from Amazon, Google, and others
- Use Kubernetes to manage resource usage and the container lifecycle
- Optimize clusters for cost, performance, resilience, capacity, and scalability
- Learn the best tools for developing, testing, and deploying your applications
- Apply the latest industry practices for security, observability, and monitoring
- Adopt DevOps principles to help make your development teams lean, fast, and effective
If you’re looking to develop native applications in Kubernetes, this is your guide. Developers and AppOps administrators will learn how to build Kubernetes-native applications that interact directly with the API server to query or update the state of resources. AWS developer advocate Michael Hausenblas and Red Hat principal software engineer Stefan Schimanski explain the characteristics of these apps and show you how to program Kubernetes to build them.
You’ll explore the basic building blocks of Kubernetes, including the client-go API library and custom resources. All you need to get started is a rudimentary understanding of development and system administration tools and practices, such as package management, the Go programming language, and Git.
- Walk through Kubernetes API basics and dive into the server’s inner structure
- Explore Kubernetes’s programming interface in Go, including Kubernetes API objects
- Learn about custom resources—the central extension tools used in the Kubernetes ecosystem
- Use tags to control Kubernetes code generators for custom resources
- Write custom controllers and operators and make them production ready
- Extend the Kubernetes API surface by implementing a custom API server
Most companies work hard to avoid costly failures, but in complex systems a better approach is to embrace and learn from them. Through chaos engineering, you can proactively hunt for evidence of system weaknesses before they trigger a crisis. This practical book shows software developers and system administrators how to plan and run successful chaos engineering experiments.
System weaknesses go beyond your infrastructure, platforms, and applications to include policies, practices, playbooks, and people. Author Russ Miles explains why, when, and how to test systems, processes, and team responses using simulated failures on Game Days. You’ll also learn how to work toward continuous chaos through automation with features you can share across your team and organization.
- Learn to think like a chaos engineer
- Build a hypothesis backlog to determine what could go wrong in your system
- Develop your hypotheses into chaos engineering experiment Game Days
- Write, run, and learn from automated chaos experiments using the open source Chaos Toolkit
- Turn chaos experiments into tests to confirm that you’ve overcome the weaknesses you discovered
- Observe and control your automated chaos experiments while they are running
Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
Winner of the Shingo Publication Award
Does technology actually matter? And how can we apply technology to drive business value?
For years, we’ve been told that the performance of software delivery teams doesn’t matter—that it can’t provide a competitive advantage to our companies. Through four years of groundbreaking research, Dr. Nicole Forsgren, Jez Humble, and Gene Kim set out to find a way to measure software delivery performance—and what drives it—using rigorous statistical methods. This book presents both the findings and the science behind that research.
Readers will discover how to measure the performance of their teams, and what capabilities they should invest in to drive higher performance.
If your team is investigating ways to design applications for the cloud, this concise book introduces 11 architecture patterns that can help you take advantage of cloud-platform services. You’ll learn how each of these platform-agnostic patterns work, when they might be useful in the cloud, and what impact they’ll have on your application architecture. You’ll also see an example of each pattern applied to an application built with Windows Azure.
The patterns are organized into four major topics, such as scalability and handling failure, and primer chapters provide background on each topic. With the information in this book, you’ll be able to make informed decisions for designing effective cloud-native applications that maximize the value of cloud services, while also paying attention to user experience and operational efficiency.
Learn about architectural patterns for:
- Scalability. Discover the advantages of horizontal scaling. Patterns covered include Horizontally Scaling Compute, Queue-Centric Workflow, and Auto-Scaling.
- Big data. Learn how to handle large amounts of data across a distributed system. Eventual consistency is explained, along with the MapReduce and Database Sharding patterns.
- Handling failure. Understand how multi-tenant cloud services and commodity hardware influence your applications. Patterns covered include Busy Signal and Node Failure.
- Distributed users. Learn how to overcome delays due to network latency when building applications for a geographically distributed user base. Patterns covered include Colocation, Valet Key, CDN, and Multi-Site Deployment.
While Kubernetes has greatly simplified the task of deploying containerized applications, managing this orchestration framework on a daily basis can still be a complex undertaking. With this practical book, site reliability and DevOps engineers will learn how to build, operate, manage, and upgrade a Kubernetes cluster—whether it resides on cloud infrastructure or on-premises.
Brendan Burns, cofounder of Kubernetes, and Craig Tracey, staff field engineer at Heptio, dissect how Kubernetes works internally and demonstrate ways to maintain, adjust, and improve the cluster to suit your particular use case. You’ll learn how to make architectural choices for designing a cluster, managing access control, monitoring and alerting, and upgrading Kubernetes. Dive in and discover how to take full advantage of this orchestration framework’s capabilities.
- Learn how your cluster operates, how developers use it to deploy applications, and how Kubernetes can facilitate a developer’s job
- Adjust, secure, and tune your cluster by understanding Kubernetes APIs and configuration options
- Detect cluster-level problems early and learn the steps necessary to respond and recover quickly
- Determine how and when to add libraries, tools, and platforms that build on, extend, or otherwise improve a Kubernetes cluster
Rely on this robust and thorough guide to build and maintain successful test automation. As the software industry shifts from traditional waterfall paradigms into more agile ones, test automation becomes a highly important tool that allows your development teams to deliver software at an ever-increasing pace without compromising quality.
Even though it may seem trivial to automate the repetitive tester’s work, using test automation efficiently and properly is not trivial. Many test automation endeavors end up in the “graveyard” of software projects. There are many things that affect the value of test automation, and also its costs. This book aims to cover all of these aspects in great detail so you can make decisions to create the best test automation solution that will not only help your test automation project to succeed, but also allow the entire software project to thrive.
One of the most important details that affects the success of the test automation is how easy it is to maintain the automated tests. Complete Guide to Test Automation provides a detailed hands-on guide for writing highly maintainable test code.
What You’ll Learn
- Know the real value to be expected from test automation
- Discover the key traits that will make your test automation project succeed
- Be aware of the different considerations to take into account when planning automated tests vs. manual tests
- Determine who should implement the tests and the implications of this decision
- Architect the test project and fit it to the architecture of the tested application
- Design and implement highly reliable automated tests
- Begin gaining value from test automation earlier
- Integrate test automation into the business processes of the development team
- Leverage test automation to improve your organization’s performance and quality, even without formal authority
- Understand how different types of automated tests will fit into your testing strategy, including unit testing, load and performance testing, visual testing, and more
Who This Book Is For
Those involved with software development such as test automation leads, QA managers, test automation developers, and development managers. Some parts of the book assume hands-on experience in writing code in an object-oriented language (mainly C# or Java), although most of the content is also relevant for non-programmers.
Quite simply, test-driven development is meant to eliminate fear in application development. While some fear is healthy (often viewed as a conscience that tells programmers to “be careful!”), the author believes that byproducts of fear include tentative, grumpy, and uncommunicative programmers who are unable to absorb constructive criticism. When programming teams buy into TDD, they immediately see positive results. They eliminate the fear involved in their jobs, and are better equipped to tackle the difficult challenges that face them.
TDD eliminates tentative traits, it teaches programmers to communicate, and it encourages team members to seek out criticism However, even the author admits that grumpiness must be worked out individually! In short, the premise behind TDD is that code should be continually tested and refactored. Kent Beck teaches programmers by example, so they can painlessly and dramatically increase the quality of their work.
Get up to speed with Prometheus, the metrics-based monitoring system used by tens of thousands of organizations in production. This practical guide provides application developers, sysadmins, and DevOps practitioners with a hands-on introduction to the most important aspects of Prometheus, including dashboarding and alerting, direct code instrumentation, and metric collection from third-party systems with exporters.
This open source system has gained popularity over the past few years for good reason. With its simple yet powerful data model and query language, Prometheus does one thing, and it does it well. Author and Prometheus developer Brian Brazil guides you through Prometheus setup, the Node exporter, and the Alertmanager, then demonstrates how to use them for application and infrastructure monitoring.
- Know where and how much to apply instrumentation to your application code
- Identify metrics with labels using unique key-value pairs
- Get an introduction to Grafana, a popular tool for building dashboards
- Learn how to use the Node Exporter to monitor your infrastructure
- Use service discovery to provide different views of your machines and services
- Use Prometheus with Kubernetes and examine exporters you can use with containers
- Convert data from other monitoring systems into the Prometheus format
Some companies think that adopting devops means bringing in specialists or a host of new tools. With this practical guide, you’ll learn why devops is a professional and cultural movement that calls for change from inside your organization. Authors Ryn Daniels and Jennifer Davis provide several approaches for improving collaboration within teams, creating affinity among teams, promoting efficient tool usage in your company, and scaling up what works throughout your organization’s inflection points.
Devops stresses iterative efforts to break down information silos, monitor relationships, and repair misunderstandings that arise between and within teams in your organization. By applying the actionable strategies in this book, you can make sustainable changes in your environment regardless of your level within your organization.
- Explore the foundations of devops and learn the four pillars of effective devops
- Encourage collaboration to help individuals work together and build durable and long-lasting relationships
- Create affinity among teams while balancing differing goals or metrics
- Accelerate cultural direction by selecting tools and workflows that complement your organization
- Troubleshoot common problems and misunderstandings that can arise throughout the organizational lifecycle
- Learn from case studies from organizations and individuals to help inform your own devops journey
As the digital economy changes the rules of the game for enterprises, the role of software and IT architects is also transforming. Rather than focus on technical decisions alone, architects and senior technologists need to combine organizational and technical knowledge to effect change in their company’s structure and processes. To accomplish that, they need to connect the IT engine room to the penthouse, where the business strategy is defined.
In this guide, author Gregor Hohpe shares real-world advice and hard-learned lessons from actual IT transformations. His anecdotes help architects, senior developers, and other IT professionals prepare for a more complex but rewarding role in the enterprise.
This book is ideal for:
- Software architects and senior developers looking to shape the company’s technology direction or assist in an organizational transformation
- Enterprise architects and senior technologists searching for practical advice on how to navigate technical and organizational topics
- CTOs and senior technical architects who are devising an IT strategy that impacts the way the organization works
- IT managers who want to learn what’s worked and what hasn’t in large-scale transformation
Get the authoritative guide to Dapr, the distributed application runtime that works with new and existing programming languages alike. Written by the model&;s creators, this introduction shows you how Dapr not only unifies stateless, stateful, and actor programming models but also runs everywhere&;in the cloud or on the edge.
Authors Haishi Bai and Yaron Schneider with Microsoft&;s Azure CTO team explain that, with Dapr, you don&;t need to include any SDKs or libraries in your user code. Instead, you automatically get flexible binding, state management, the actor pattern, pub-sub, reliable messaging, and many more features. This book shows developers, architects, CIOs, students, and computing enthusiasts how to get started with Dapr.
- Learn the new programming model for cloud native applications
- Write high-performance distributed applications without drilling into technical details
- Use Dapr with any language or framework to write microservices easily
- Learn how Dapr provides consistency and portability through open APIs and extensible, community-driven components
- Explore how Dapr handles state, resource bindings, and pub-sub messaging to enable resilient event-driven architectures that scale
- Integrate cloud applications with various SaaS offerings, such as machine learning
MVC and CRUD make software easier to write, but harder to change. Microservice-based architectures can help even the smallest of projects remain agile in the long term, but most tutorials meander in theory or completely miss the point of what it means to be microservice-based. Roll up your sleeves with real projects and learn the most important concepts of evented architectures. You’ll have your own deployable, testable project and a direction for where to go next.
Much ink has been spilled on the topic of microservices, but all of this writing fails to accurately identity what makes a system a monolith, define what microservices are, or give complete, practical examples, so you’re probably left thinking they have nothing to offer you. You don’t have to be at Google or Facebook scale to benefit from a microservice-based architecture. Microservices will keep even small and medium teams productive by keeping the pieces of your system focused and decoupled.
Discover the basics of message-based architectures, render the same state in different shapes to fit the task at hand, and learn what it is that makes something a monolith (it has nothing to do with how many machines you deploy to). Conserve resources by performing background jobs with microservices. Deploy specialized microservices for registration, authentication, payment processing, e-mail, and more. Tune your services by defining appropriate service boundaries. Deploy your services effectively for continuous integration. Master debugging techniques that work across different services. You’ll finish with a deployable system and skills you can apply to your current project.
Add the responsiveness and flexibility of microservices to your project, no matter what the size or complexity.
Fundamentals of Software Architecture: An Engineering Approach. A Comprehensive Guide to Patterns, Characteristics, and Best Practices>
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 book provides the first comprehensive overview of software architecture&;s many aspects. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, 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:
- Architecture patterns: The technical basis for many architectural decisions
- Components: Identification, coupling, cohesion, partitioning, and granularity
- Soft skills: Effective team management, meetings, negotiation, presentations, and more
- Modernity: Engineering practices and operational approaches that have changed radically in the past few years
- Architecture as an engineering discipline: Repeatable results, metrics, and concrete valuations that add rigor to software architecture
Effective software teams are essential for any organization to deliver value continuously and sustainably. But how do you build the best team organization for your specific goals, culture, and needs?
Team Topologies is a practical, step-by-step, adaptive model for organizational design and team interaction based on four fundamental team types and three team interaction patterns. It is a model that treats teams as the fundamental means of delivery, where team structures and communication pathways are able to evolve with technological and organizational maturity.
In Team Topologies, IT consultants Matthew Skelton and Manuel Pais share secrets of successful team patterns and interactions to help readers choose and evolve the right team patterns for their organization, making sure to keep the software healthy and optimize value streams.
Team Topologies is a major step forward in organizational design for software, presenting a well-defined way for teams to interact and interrelate that helps make the resulting software architecture clearer and more sustainable, turning inter-team problems into valuable signals for the self-steering organization.
When General Stanley McChrystal took command of the Joint Special Operations Task Force in 2004, he quickly realized that conventional military tactics were failing. Al Qaeda in Iraq was a decentralized network that could move quickly, strike ruthlessly, then seemingly vanish into the local population. The allied forces had a huge advantage in numbers, equipment, and training—but none of that seemed to matter. To defeat Al Qaeda, they would have to combine the power of the world’s mightiest military with the agility of the world’s most fearsome terrorist network. They would have to become a “team of teams”—faster, flatter, and more flexible than ever.
In Team of Teams, McChrystal and his colleagues show how the challenges they faced in Iraq can be relevant to countless businesses, nonprofits, and organizations today. In periods of unprecedented crisis, leaders need practical management practices that can scale to thousands of people—and fast. By giving small groups the freedom to experiment and share what they learn across the entire organization, teams can respond more quickly, communicate more freely, and make better and faster decisions.
Drawing on compelling examples—from NASA to hospital emergency rooms—Team of Teams makes the case for merging the power of a large corporation with the agility of a small team to transform any organization.
Creativity, Inc. is a manual for anyone who strives for originality and the first-ever, all-access trip into the nerve center of Pixar Animation—into the meetings, postmortems, and “Braintrust” sessions where some of the most successful films in history are made. It is, at heart, a book about creativity—but it is also, as Pixar co-founder and president Ed Catmull writes, “an expression of the ideas that I believe make the best in us possible.”
For nearly twenty years, Pixar has dominated the world of animation, producing such beloved films as the Toy Story trilogy, Monsters, Inc., Finding Nemo, The Incredibles, Up, WALL-E, _and _Inside Out, _which have gone on to set box-office records and garner thirty Academy Awards. The joyousness of the storytelling, the inventive plots, the emotional authenticity: In some ways, Pixar movies are an object lesson in what creativity really _is. Here, in this book, Catmull reveals the ideals and techniques that have made Pixar so widely admired—and so profitable.
As a young man, Ed Catmull had a dream: to make the first computer-animated movie. He nurtured that dream as a Ph.D. student at the University of Utah, where many computer science pioneers got their start, and then forged a partnership with George Lucas that led, indirectly, to his co-founding Pixar in 1986. Nine years later, Toy Story was released, changing animation forever. The essential ingredient in that movie’s success—and in the thirteen movies that followed—was the unique environment that Catmull and his colleagues built at Pixar, based on leadership and management philosophies that protect the creative process and defy convention, such as:
- Give a good idea to a mediocre team, and they will screw it up. But give a mediocre idea to a great team, and they will either fix it or come up with something better.
- If you don’t strive to uncover what is unseen and understand its nature, you will be ill prepared to lead.
- It’s not the manager’s job to prevent risks. It’s the manager’s job to make it safe for others to take them.
- The cost of preventing errors is often far greater than the cost of fixing them.
- A company’s communication structure should not mirror its organizational structure. Everybody should be able to talk to anybody.
A former international hostage negotiator for the FBI offers a new, field-tested approach to high-stakes negotiations―whether in the boardroom or at home.
After a stint policing the rough streets of Kansas City, Missouri, Chris Voss joined the FBI, where his career as a hostage negotiator brought him face-to-face with a range of criminals, including bank robbers and terrorists. Reaching the pinnacle of his profession, he became the FBI’s lead international kidnapping negotiator. Never Split __the Difference takes you inside the world of high-stakes negotiations and into Voss’s head, revealing the skills that helped him and his colleagues succeed where it mattered most: saving lives. In this practical guide, he shares the nine effective principles―counterintuitive tactics and strategies―you too can use to become more persuasive in both your professional and personal life.
Life is a series of negotiations you should be prepared for: buying a car, negotiating a salary, buying a home, renegotiating rent, deliberating with your partner. Taking emotional intelligence and intuition to the next level, Never Split the Difference gives you the competitive edge in any discussion.
The key text on problem-solving negotiation-updated and revised
Since its original publication nearly thirty years ago, Getting to Yes has helped millions of people learn a better way to negotiate. One of the primary business texts of the modern era, it is based on the work of the Harvard Negotiation Project, a group that deals with all levels of negotiation and conflict resolution.
Getting to Yes offers a proven, step-by-step strategy for coming to mutually acceptable agreements in every sort of conflict. Thoroughly updated and revised, it offers readers a straight- forward, universally applicable method for negotiating personal and professional disputes without getting angry-or getting taken.
Has the “settle-for-less” financial plan become your plan for wealth? That sounds something like this:
Graduate from college, get a good job, save 10% of your paycheck, buy a used car, cancel the movie channels, quit drinking expensive Starbucks mocha lattes, save and penny-pinch your life away, trust your life-savings to Wall Street, and one day, when you are oh, say, 65 years old, you can retire rich.
Since you were old enough to hold a job, you’ve been hoodwinked to believe that wealth can be created by blindly trusting in the uncontrollable and unpredictable markets: the housing market, the stock market, and the job market. This soul-sucking, dream-stealing dogma is “The Slowlane” – an impotent FINANCIAL GAMBLE that dubiously promises wealth in a wheelchair.
Accept the Slowlane as your financial roadmap and your financial future will blow carelessly asunder on a sailboat of HOPE: HOPE you can get a job and keep it, HOPE the stock market doesn’t tank, HOPE for a robust economy, HOPE, HOPE, and HOPE. Is HOPE really the centerpiece of your family’s financial plan?
Drive the Slowlane and you will find your life deteriorate into a miserable exhibition about what you cannot do, versus what you can. For those who don’t want a lifetime subscription to mediocrity, there is an alternative; an expressway to extraordinary wealth capable of burning a trail to financial freedom faster than any road out there. And shockingly, this road has nothing to do with jobs, 401(k), mutual funds, or a lifestyle of miserly living and 190 square foot tiny houses. Just some of what you will learn:
- Why jobs, 401(k)s, mutual funds, and 40-years of mindless frugality will never make you rich young.
- Why most entrepreneurs fail and how to immediately put the odds in your favor.
- The real law of wealth: Leverage this and wealth has no choice but to be magnetized to you.
- The leading cause of poorness: Change this and you change everything.
- How the rich really get rich – and no, it has nothing to do with a paycheck or a 401K match.
- The mathematics of wealth and how any “Joe Schmo” can tap into real wealth real fast.
- Why the guru’s sacred deities – compound interest and indexed funds – are impotent wealth accelerators.
- Why popular guru platitudes like “do what you love” and “follow your passion” will most likely keep you poor, not rich.
- And 250+ more poverty busting distinctions…
Demand more. Change lanes and find your explosive wealth accelerator. Hit the Fastlane, crack the code to wealth, and find out how to live rich for a lifetime.
2,000,000 COPIES SOLD WORLDWIDE • TRANSLATED IN MORE THAN 35 LANGUAGES
What is _Violent _Communication?
If “violent” means acting in ways that result in hurt or harm, then much of how we communicate—judging others, bullying, having racial bias, blaming, finger pointing, discriminating, speaking without listening, criticizing others or ourselves, name-calling, reacting when angry, using political rhetoric, being defensive or judging who’s “good/bad” or what’s “right/wrong” with people—could indeed be called “violent communication.”
What is _Nonviolent _Communication?
Nonviolent Communication is the integration of four things:
- Consciousness: a set of principles that support living a life of compassion, collaboration, courage, and authenticity<7li>
- Language: understanding how words contribute to connection or distance
- Communication: knowing how to ask for what we want, how to hear others even in disagreement, and how to move toward solutions that work for all
- Means of influence: sharing “power with others” rather than using “power over others”
- Nonviolent Communication serves our desire to do three things:
- Increase our ability to live with choice, meaning, and connection
- Connect empathically with self and others to have more satisfying relationships
- Sharing of resources so everyone is able to benefit