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

Какие читаешь книги по архитектуре IT систем?

1.0 Junior🔥 131 комментариев
#Soft Skills

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

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

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

Книги по архитектуре IT систем

Прочитал много книг за 10+ лет разработки. Расскажу о самых ценных из них, которые действительно изменили мой подход к архитектуре.

Фундамент: SOLID и Clean Code

1. Clean Code by Robert C. Martin ("Дядя Боб")

Это первая книга, которую я рекомендую каждому разработчику:

# ❌ Плохо (из книги)
def d(a1, a2, a1l, a1s, a1e, a1f, a1o, a1s):
    # 10 страниц кода
    pass

# ✅ Хорошо
def calculate_cell_value(board, row, col, limit, status, format, options, settings):
    # Понятные имена
    pass

Основные принципы из книги:

  • Имена должны быть говорящими
  • Функция должна делать одно
  • Обработка ошибок через исключения
  • DRY (Don't Repeat Yourself)

Читать обязательно в начале карьеры.

2. Clean Architecture by Robert C. Martin

Эта книга про то, как структурировать проект:

Presentation (FastAPI routes, Flask views)
    ↓
Application (Business logic, use cases)
    ↓
Domain (Entities, value objects)
    ↓
Infrastructure (Database, external APIs)

Применяю в каждом проекте. Зависимости должны идти внутрь (только к domain).

# ✅ Правильная архитектура
from domain.user import User  # зависимость идёт внутрь
from application.user_service import CreateUserService
from infrastructure.postgres_repository import PostgresUserRepository
from presentation.api.routes import user_routes

# ❌ Плохо
from presentation.api.models import UserModel  # presentation зависит от application
from infrastructure.postgres_repository import query_db  # application напрямую в БД

Микросервисы и распределённые системы

3. Building Microservices by Sam Newman

Лучшая книга про микросервисы. Не только про код, но и про организацию:

  • Как разделить монолит на микросервисы
  • Как организовать communication между сервисами
  • Когда использовать микросервисы (spoiler: не всегда)
  • Deployment и monitoring

Чтение: очень практична, много примеров из реальных проектов.

4. The Art of Scalability by Martin Abbott and Michael Fisher

Эта книга про то, как масштабировать систему:

  • Горизонтальное масштабирование (добавь серверов)
  • Вертикальное (улучши существующий сервер)
  • Кэширование (Redis, Memcached)
  • Базы данных (sharding, replication)
  • Load balancing

Читал, когда система начала упираться в производительность.

Конкретные техники

5. Designing Data-Intensive Applications by Martin Kleppmann

Это не совсем про архитектуру, а про то, как работают технологии внутри:

  • Как работают базы данных (indexing, transactions)
  • Партиционирование и репликация
  • Consensys алгоритмы (Raft, Paxos)
  • Stream processing

Считаю одной из лучших технических книг. Очень плотная информация.

# После этой книги я понял, почему:

# 1. Нужны индексы
db.users.create_index("email")  # Без индекса O(n), с индексом O(log n)

# 2. Нужны транзакции
with transaction.atomic():
    account1.balance -= 100
    account2.balance += 100
    # Либо обе операции выполнятся, либо ни одна

# 3. Нужна репликация
# Master-slave: пишем в master, читаем из slave
# Гарантирует отказоустойчивость

6. Concurrency in Go by Katherine Cox-Buday

Хотя это про Go, принципы применимы везде:

  • Goroutines vs Threads (Green threads vs OS threads)
  • Channels vs message queues
  • Race conditions и как их избежать
  • Deadlocks

Применяю эти знания в async Python и многопоточности.

Практичные книги

7. Release It! by Michael T. Nygard

Об операциональной стороне архитектуры:

# Паттерны из книги:

# 1. Circuit Breaker (не вешайся, если сервис упал)
from circuitbreaker import circuit

@circuit(failure_threshold=5, recovery_timeout=60)
def call_external_service():
    return requests.get("https://api.example.com")

# 2. Bulkhead (изолируй проблемы)
# Разные потоки для разных операций
pool_for_db = ThreadPoolExecutor(max_workers=10)
pool_for_external_api = ThreadPoolExecutor(max_workers=5)

# 3. Timeout (не жди бесконечно)
try:
    response = requests.get(url, timeout=5)  # 5 секунд макс
except requests.Timeout:
    handle_timeout()

Читать обязательно перед production.

8. The Phoenix Project by Gene Kim, Kevin Behr, George Spafford

Роман про DevOps и lean. Узнаешь про:

  • Continuous Integration и Continuous Deployment
  • Automated testing
  • Infrastructure as code
  • Monitoring и logging

Очень мотивирующая книга. После неё начнёшь ценить быстрый deployment.

Для Python специфично

9. High Performance Python by Micha Gorelick and Ian Ozsvald

# Как оптимизировать Python код:

# 1. Используй встроенные функции (они на C)
result = sum(range(1000000))  # быстро
result = reduce(lambda a, b: a+b, range(1000000))  # медленнее

# 2. Список vs Tuple
list_comp = [x for x in range(1000000)]  # медленнее
tuple_comp = tuple(x for x in range(1000000))  # быстрее в некоторых случаях

# 3. NumPy для вычислений
import numpy as np
data = np.arange(1000000)
result = np.sum(data * 2)  # намного быстрее чем Python loop

# 4. Профилирование
import cProfile
cProfile.run('expensive_function()')

10. Fluent Python by Luciano Ramalho

Для углубления в Python:

  • Dunder методы (init, call, enter, exit)
  • Descriptors
  • Metaclasses (редко нужны, но полезно знать)
  • Async/await
# Из книги:

# 1. Descriptor protocol
class Validator:
    def __get__(self, obj, objtype=None):
        return obj.__dict__.get('value')
    
    def __set__(self, obj, value):
        if not isinstance(value, int):
            raise ValueError("Must be int")
        obj.__dict__['value'] = value

class Model:
    age = Validator()

# 2. Context manager protocol
class MyContext:
    def __enter__(self):
        return self
    
    def __exit__(self, *args):
        pass

Domain-Driven Design

11. Domain-Driven Design by Eric Evans

Об организации кода вокруг бизнес-логики:

# DDD архитектура

# Domain (бизнес сущности)
class Order:
    def __init__(self, items, customer):
        self.items = items
        self.customer = customer
        self.status = OrderStatus.PENDING
    
    def calculate_total(self):
        return sum(item.price for item in self.items)
    
    def can_ship(self):
        return self.status == OrderStatus.PAID

# Application service (бизнес логика)
class CreateOrderService:
    def __init__(self, order_repository, payment_service):
        self.order_repo = order_repository
        self.payment = payment_service
    
    def execute(self, customer_id, items):
        customer = self.order_repo.get_customer(customer_id)
        order = Order(items, customer)
        self.payment.process(order)
        self.order_repo.save(order)
        return order

# Infrastructure (технические детали)
class PostgresOrderRepository:
    def save(self, order):
        # SQL запрос
        pass

Что я читаю сейчас

  • Software Engineering at Google — как в гигантской компании организуют разработку
  • The Pragmatic Programmer — практичные советы
  • System Design Interview — подготовка к интервью о дизайне систем

Как я читаю технические книги

  1. Первое прочтение: быстро, не все детали
  2. Второе прочтение: медленнее, с примерами
  3. Практика: применяю в реальных проектах
  4. Повторение: открываю через год, открываю новые детали

Технические книги лучше читать несколько раз.

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

Если у тебя есть только время на 3 книги:

  1. Clean Code — научиться писать чистый код
  2. Clean Architecture — научиться структурировать проект
  3. Building Microservices или Designing Data-Intensive Applications — выбор зависит от того, что тебе нужно больше: микросервисы или глубокое понимание технологий

Книги — это инвестиция в себя. 20-30 часов чтения могут сэкономить сотни часов на разработке некорректной архитектуры.

Какие читаешь книги по архитектуре IT систем? | PrepBro