← Назад к вопросам

Какие прочитал две книги за 2023 год

2.0 Middle🔥 151 комментариев
#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Две книги, прочитанные в 2023 году

За 2023 год я сосредоточился на повышении квалификации в двух ключевых областях: архитектура распределённых систем и оптимизация производительности. Вот две книги, которые оказали наибольшее влияние на мою практику:

1. "Building Microservices: Designing Fine-Grained Systems" (2nd Edition) — Sam Newman

Почему прочитал: В 2023 году мы перешли с монолитной архитектуры на микросервисы, и эта книга была идеальным справочником для решения реальных проблем.

Ключевые выводы:

  • Bounded Contexts из DDD — понимание, как правильно разделить систему на сервисы
  • Communication patterns — синхронные vs асинхронные подходы (REST, gRPC, message queues)
  • Failure handling — как обрабатывать сбои в распределённых системах (circuit breakers, timeouts, retries)
  • Distributed transactions — saga pattern для транзакций между микросервисами
  • Deployment и observability — мониторинг, логирование и трейсинг в микросервисной архитектуре

Практическое применение:

В нашем проекте:

  • Спроектировал boundary между сервисами используя Bounded Contexts
  • Реализовал circuit breaker для надёжной коммуникации между микросервисами
  • Внедрил distributed tracing (OpenTelemetry) для отладки
  • Использовал Saga pattern для обработки заказов, которые затрагивают несколько сервисов
// Circuit Breaker pattern (Hystrix/Resilience4j)
@CircuitBreaker(name = "paymentService")
public Payment processPayment(Order order) {
    return paymentClient.charge(order.getAmount());
}

2. "Java Performance: In-Depth Advice for Tuning and Optimizing Java Applications" — Scott Oaks

Почему прочитал: Основное приложение начало испытывать проблемы с производительностью под нагрузкой. Нужен был систематический подход к профилированию и оптимизации.

Ключевые выводы:

  • Профилирование перед оптимизацией — использование JFR (Java Flight Recorder), JProfiler, async-profiler
  • Память и GC — понимание различных GC алгоритмов (G1GC, ZGC, Shenandoah)
  • Lock contention — выявление hotspots в синхронизированном коде
  • JIT compilation — как JVM компилирует код в runtime
  • Микро-optimizations — что работает, что нет

Практическое применение:

  • Профилировал приложение и обнаружил, что 80% времени уходит в database queries (не код!)
  • Переключился с Parallel GC на G1GC, что снизило pause times с 500ms до 50ms
  • Оптимизировал горячий код путём исключения ненужных объектов
  • Настроил JVM флаги для конкретного workload:
# Перед оптимизацией
java -Xmx4g -Xms4g -XX:+UseParallelGC MyApp

# После анализа
java -Xmx4g -Xms4g \
  -XX:+UseG1GC \
  -XX:MaxGCPauseMillis=50 \
  -XX:+ParallelRefProcEnabled \
  -XX:+UnlockDiagnosticVMOptions \
  -XX:G1SummarizeRSetStatsPeriod=10000 \
  MyApp

Как эти книги повлияли на моё мышление

Системное мышление: Осознал, что оптимизация в Java — не о микро-оптимизациях, а о правильной архитектуре. Проблема на 80% в дизайне системы, а не в коде.

Data-driven approach: Никогда не оптимизирую без данных. Сначала профилирую, потом оптимизирую. Это сэкономило часы впустую потраченного времени.

Обратная совместимость в микросервисах: Желание не "взломать" другие команды при развёртывании нового сервиса привело к лучшему API дизайну.

Как я это применяю сейчас

  • Все новые микросервисы проектирую с учётом lessons learned
  • Регулярно профилирую критичные код пути
  • Обучаю команду правильному использованию GC metrics
  • Провожу code reviews, ища потенциальные performance issues
  • Внедрил continuous monitoring и alerting для отслеживания regression

Рекомендация на 2024

Если вы Java developer, рекомендую читать в этом порядке:

  1. Сначала "Building Microservices" (если работаете в большой системе)
  2. Потом "Java Performance" (для практической оптимизации)
  3. Параллельно изучайте практический инструментал (JFR, profilers, monitoring tools)

Теория бесполезна без практики, но практика без теории неэффективна.

Какие прочитал две книги за 2023 год | PrepBro