Over time, technical debt affects virtually every significant software project. As software systems evolve, earlier design or code decisions prove to be ´´not quite right,´´ gradually becoming impediments that slow down the evolution of the system, or even grind it to a halt. Most software practitioners have experienced this phenomenon, but many feel helpless to address it. In this guide, three leading software engineering experts introduce empirically validated principles and practices for managing and mitigating technical debt in any software system. Using real-life examples, the authors explain the forms of technical debt that afflict software-intensive systems, their root causes, and their impacts. Next, they introduce a palette of proven approaches, strategies, methods, and tools for: Identifying sources of technical debt in any software system Assessing the magnitude of technical debt Limiting the introduction of technical debt in the first place Reducing the impact of technical debt over time As software systems mature, the challenge of technical debt has grown, and it has become increasingly urgent for software professionals and their managers to address it head-on. Managing Technical Debt shows them how.
Build a microservices architecture with Spring Boot, by evolving an application from a small monolith to an event-driven architecture composed of several services. This book follows an incremental approach to teach microservice structure, test-driven development, Eureka, Ribbon, Zuul, and end-to-end tests with Cucumber. Author Moises Macero follows a very pragmatic approach to explain the benefits of using this type of software architecture, instead of keeping you distracted with theoretical concepts. He covers some of the state-of-the-art techniques in computer programming, from a practical point of view. You´ll focus on what´s important, starting with the minimum viable product but keeping the flexibility to evolve it. What You´ll Learn Build microservices with Spring Boot Use event-driven architecture and messaging with RabbitMQ Create RESTful services with Spring Master service discovery with Eureka and load balancing with Ribbon Route requests with Zuul as your API gateway Write end-to-end rests for an event-driven architecture using Cucumber Carry out continuous integration and deployment Who This Book Is For Those with at least some prior experience with Java programming. Some prior exposure to Spring Boot recommended but not required.