Event-driven architecture is a software design paradigm where the flow of the program is determined by events such as user actions, sensor outputs, or messages from other programs. This architecture enables systems to be more scalable, responsive, and easier to maintain by decoupling event producers from event consumers.