Что такое Event Driven подход

«Что такое Event Driven подход» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Event Driven — это архитектурный подход, где система реагирует на события (изменения состояния, действия пользователя и т.д.) асинхронно. Вместо прямых вызовов компоненты общаются через события, что повышает масштабируемость и гибкость.

Пример на Go с использованием каналов:

package main

import (
    "fmt"
    "time"
)

func eventProducer(events chan<- string) {
    for i := 0; i < 3; i++ {
        events <- fmt.Sprintf("Event %d", i)
        time.Sleep(1 * time.Second)
    }
    close(events)
}

func eventConsumer(events <-chan string) {
    for event := range events {
        fmt.Println("Received:", event)
    }
}

func main() {
    events := make(chan string)
    go eventProducer(events)
    eventConsumer(events)
}

Плюсы:

  • Слабая связность компонентов
  • Асинхронная обработка
  • Легко масштабируется

Минусы:

  • Сложнее отлаживать
  • Нужно управлять порядком событий