InfoQ Homepage Architecture Content on InfoQ
-
Multi-Runtime Microservices Architecture
Best practices have emerged around “microservice” architecture and “12-factor app” design. As cloud, containers, and container orchestrators (.g. Kubernetes) have become popular, new solutions to address common integration principles have emerged. This article discusses the approach of using "mecha" components to provide enterprise integration pattern functionality for microservices.
-
Functional UI - a Model-Based Approach
Functional UI techniques rely on the functional relation between events processed by the user interface and the actions performed by the interface. If the user interface has discrete modes in which its behavior can be expressed simply, a modelization with state machines is an advantageous functional UI technique. This article explains the technique, its benefits and how it is used in the industry.
-
Software, Aesthetics, and Craft: How Java, Lisp, and Agile Shape and Reflect Their Culture
The software industry styles itself on architecture and construction, but rarely discusses aesthetics.
-
How to Avoid Cascading Failures in Distributed Systems
Cascading failures are failures that involve some kind of feedback mechanism. In distributed software systems they generally involve a feedback loop where some event causes either a reduction in capacity, an increase in latency, or a spike of errors. Laura Nolan explores them using public accounts of real production incidents.
-
Service Mesh Ultimate Guide 2020: Managing Service-to-Service Communications
This online guide aims to answer pertinent questions for software architects and technical leaders, such as: what is a service mesh? Do I need a service mesh? How do I evaluate the different service mesh offerings? In software architecture, a service mesh is a dedicated infrastructure layer for facilitating service-to-service communications between microservices, often using a sidecar proxy.
-
Application Models as Working Software
Discusses using an application model in an iterative time-bounded development approach. Employ user flows to create easily comprehended stories that contain sufficient detail. Get closer involvement from UX design and product owners to create solutions prior to the first coding iteration. Incorporate as-built decisions back into the model to ensure its relevance in an ongoing product lifecycle.
-
The Kongo Problem: Building a Scalable IoT Application with Apache Kafka
In this article, author Paul Brebner discusses the best practices for developing IoT projects using Apache Kafka and Kafka Streams technologies and how to maximize Kafka scalability.
-
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.
-
Q&A on the Book Testing Business Ideas
The book Testing Business Ideas by David Bland and Alex Osterwalder provides experiments that can be used to find out if your product ideas are desirable, viable and feasible. Experimentation also helps to reduce the risk and increase the likelihood of success of new venture or business projects.
-
Q&A on the Book Build a Next-Generation Digital Workplace
The book Build a Next-Generation Digital Workplace by Shailesh Shivakumar explains what employee experience platforms (EXP) are and how digital technologies can be used to improve employee productivity, increase employee engagement, and support collaboration.
-
Q&A on the Book Quantum Leadership
The book Quantum Leadership by Frederick Chavalit Tsao and Chris Laszlo brings to light the power of direct-intuitive practices – such as meditation, nature immersion, art, and exercise – to transform a leader’s consciousness to the highest point of leverage for entrepreneurial creativity that embeds social purpose.
-
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.