Event-Driven Architecture: O que é, vantagens e quando aplicar