Building software applications has always been a complex task. The evolution of modern-day "cloud native" software applications - distributed systems built using a microservices-based architecture and deployed onto a container-based infrastructure - has provided many benefits but also introduced several new challenges.
Modularisation allows teams to iterate faster. Defining infrastructure as code provides flexibility. Adopting DevOps practices allows us to increase the quality and quantity of feedback. However, the accompanying increase in the pace of code changes, testing, deployment, and monitoring means that engineers have to balance a lot of goals, constraints, and tradeoffs.
We hope this eMag helps you reflect on the subject of reducing complexity within modern applications and distributed systems, and provides you with different perspectives and learned lessons from people who have already had to deal with challenges from the real world.
We would love to receive your feedback via editors@infoq.com or on Twitter about this eMag. I hope you have a great time reading it!
Free download
The InfoQ eMag - Managing Observability, Resilience, and Complexity within Distributed Systems include:
- The Fundamental Truth behind Successful Development Practices: Software is Synthetic - Software systems are creative compounds, emergent and generative; the product of complex interactions between people and technology. They are different from the orderly, analytic worlds that our school-age selves expect to find. Being so full of complexity and uncertainty, we use a different way to arrive at a solution.
- Q&A on the Book Righting Software - The book Righting Software by Juval Löwy provides a structured way to design a software system and the project to build it. Löwy proposes to use volatility-based decomposition to encapsulate changes inside the system’s building blocks, and explains how to design the project in order to provide decision-makers with several viable options trading schedule, cost, and risk.
- Seven Hard-Earned Lessons Learned Migrating a Monolith to Microservices - Based on experience gained from several microservices migrations, these seven lessons can help you be successful and overcome or avoid common challenges.
- Resilience in Deep Systems - Deep systems, with multiple layers of microservices, have special challenges, and handling them requires the right mindset and tools.
- Q&A with Tyler Treat on Microservice Observability - Tyler Treat attempts to disambiguate the concepts of Observability and Monitoring. He discusses how the complexity of elastic systems produces more unknowns that require a discovery-based approach. InfoQ recently sat down with Treat to discuss the topics of observability and monitoring, and he shares some challenges and best practices when introducing observability concepts.
InfoQ eMags are professionally designed, downloadable collections of popular InfoQ content - articles, interviews, presentations, and research - covering the latest software development technologies, trends, and topics.