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

Что использовал кроме Python?

1.6 Junior🔥 81 комментариев
#DevOps и инфраструктура#Django

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

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

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

Технологический стек за пределами Python

Разработчик, который знает только Python — это узкоспециалист. За 10+ лет я работал с множеством технологий, которые делают полноценные приложения. Давай рассмотрим мой стек.

Frontend технологии

JavaScript/TypeScript: Я активно пишу на TypeScript для фронтенда. Понимаю асинхронность, promises, async/await, замыкания. Мне важно, чтобы backend разработчик понимал фронтенд.

// Пример типизированного React компонента
interface UserProps {
  id: string;
  name: string;
  onUpdate: (name: string) => Promise<void>;
}

const UserCard: React.FC<UserProps> = ({ id, name, onUpdate }) => {
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState<string | null>(null);
  
  const handleUpdate = async (newName: string) => {
    setLoading(true);
    try {
      await onUpdate(newName);
      setError(null);
    } catch (err) {
      setError((err as Error).message);
    } finally {
      setLoading(false);
    }
  };
  
  return (
    <div>
      <h2>{name}</h2>
      <button onClick={() => handleUpdate("New Name")} disabled={loading}>
        {loading ? "Updating..." : "Update"}
      </button>
      {error && <p className="error">{error}</p>}
    </div>
  );
};

React, Vue, Angular: Работал с React и Vue. Понимаю паттерны (Context API, Vuex), hooks, lifecycle, state management. Это помогает писать better APIs для фронтенда.

CSS / Tailwind: Способен стилизовать и делать адаптивный дизайн. Не буду делать красивые дизайны, но технически разбираюсь.

Базы данных

PostgreSQL: Это мой основной СУБД. Пишу сложные SQL запросы, знаю индексирование, explain plans, Window functions, CTEs.

-- Пример сложного запроса
WITH user_stats AS (
  SELECT 
    user_id,
    COUNT(*) as order_count,
    SUM(amount) as total_amount,
    AVG(amount) as avg_amount,
    ROW_NUMBER() OVER (ORDER BY SUM(amount) DESC) as rank
  FROM orders
  GROUP BY user_id
)
SELECT 
  u.id,
  u.name,
  us.order_count,
  us.total_amount,
  CASE 
    WHEN us.rank <= 10 THEN 'VIP'
    WHEN us.rank <= 100 THEN 'Gold'
    ELSE 'Regular'
  END as tier
FROM users u
LEFT JOIN user_stats us ON u.id = us.user_id
WHERE us.total_amount > 1000
ORDER BY us.total_amount DESC;

Redis: Использую для кеша, sessions, task queues (Celery). Знаю основные структуры (strings, lists, sets, hashes) и паттерны.

# Пример кеширования с Redis
import redis
from functools import wraps
import json

redis_client = redis.Redis(host='localhost', port=6379)

def cache(ttl=3600):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            # Генерируем ключ
            key = f"{func.__name__}:{args}:{kwargs}"
            
            # Проверяем кеш
            cached = redis_client.get(key)
            if cached:
                return json.loads(cached)
            
            # Вычисляем и кешируем
            result = func(*args, **kwargs)
            redis_client.setex(key, ttl, json.dumps(result))
            return result
        return wrapper
    return decorator

@cache(ttl=300)
def expensive_operation(user_id: int):
    # Дорогостоящая операция
    return {"user_id": user_id, "data": "..."}

MongoDB: Работал с NoSQL. Понимаю различия: документы вместо таблиц, индексирование, agregation pipelines.

DevOps / Infrastructure

Docker: Пишу Dockerfile, знаю best practices (multi-stage builds, слои, оптимизацию образов).

# Пример оптимизированного Dockerfile
FROM python:3.11-slim as builder

WORKDIR /app

# Копируем requirements и устанавливаем зависимости
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txt

# Финальный образ
FROM python:3.11-slim

WORKDIR /app

# Копируем только установленные пакеты
COPY --from=builder /root/.local /root/.local
COPY src/ .

ENV PATH=/root/.local/bin:$PATH

CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0"]

Kubernetes (базовый уровень): Деплою приложения, знаю pods, services, deployments, configmaps, secrets.

# Пример K8s deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
      - name: api
        image: myregistry/api:latest
        ports:
        - containerPort: 8000
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: url
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"

AWS: Работал с основными сервисами:

  • EC2 для виртуальных машин
  • RDS для БД
  • S3 для хранилища файлов
  • Lambda для serverless
  • CloudWatch для мониторинга

GitHub Actions / CI-CD: Настраиваю pipelines для автоматического тестирования и деплоя.

# Пример GitHub Actions workflow
name: Tests and Deploy

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:14
        env:
          POSTGRES_PASSWORD: postgres
    
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-python@v4
      with:
        python-version: '3.11'
    
    - run: pip install -r requirements.txt
    - run: pytest tests/ --cov=src
    - run: flake8 src/
    - run: mypy src/
  
  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - run: docker build -t api:${{ github.sha }} .
    - run: docker push api:${{ github.sha }}

Инструменты разработки

Git: Основной инструмент для контроля версий. Знаю rebase, squash, cherry-pick, bisect.

Bash / Shell scripts: Пишу скрипты для автоматизации, CI/CD, deployment.

#!/bin/bash
# Пример скрипта для безопасного деплоя

set -e  # Exit on error

echo "Checking tests..."
pytest tests/ --cov=src --cov-fail-under=90

echo "Building Docker image..."
docker build -t api:latest .

echo "Pushing to registry..."
docker push api:latest

echo "Deploying to production..."
kubectl set image deployment/api api=api:latest
kubectl rollout status deployment/api

echo "Deployment complete!"

Linux / Unix: Хорошо разбираюсь в Linux, shell commands, file permissions, processes.

SQL databases: Пишу миграции (Alembic, Flyway), знаю нормализацию и денормализацию.

Message Queues / Async

RabbitMQ / Kafka: Использую для асинхронной обработки задач, event streaming.

# Пример с Celery + RabbitMQ
from celery import Celery

app = Celery('tasks', broker='amqp://guest:guest@localhost//')

@app.task(bind=True, max_retries=3)
def process_order(self, order_id: int):
    try:
        # Обработка заказа
        order = Order.query.get(order_id)
        order.status = "processing"
        send_email(order.user.email, "Processing...")
        db.session.commit()
    except Exception as exc:
        # Retry с экспоненциальной задержкой
        raise self.retry(exc=exc, countdown=60 * (2 ** self.request.retries))

# Отправка задачи
process_order.delay(order_id=123)

Мониторинг и логирование

ELK Stack: Логирование в Elasticsearch, визуализация в Kibana.

Prometheus + Grafana: Метрики и мониторинг приложения.

Jaeger: Distributed tracing для микросервисов.

API и интеграции

REST API: Понимаю HTTP методы, status codes, правильный дизайн API.

GraphQL: Работал с GraphQL, знаю queries, mutations, subscriptions.

gRPC: Использовал для high-performance микросервисного общения.

Почему это важно

# Это помогает писать лучший Python код

# 1. Понимаю, как фронтенд работает
def get_user(user_id: str) -> UserSchema:
    """API конечная точка"""
    user = User.query.get(user_id)
    return UserSchema(
        id=user.id,
        name=user.name,
        # Знаю, как это будет использовано на фронтенде
        created_at=user.created_at.isoformat()  # JSON serializable
    )

# 2. Оптимизирую запросы зная SQL
def get_users_with_orders():
    # Не N+1 запросов!
    return User.query.options(
        joinedload(User.orders)  # Эффективный JOIN
    ).all()

# 3. Понимаю DevOps проблемы
def health_check():
    """Health check для Kubernetes"""
    try:
        # Проверяю БД
        db.session.execute("SELECT 1")
        # Проверяю Redis
        redis_client.ping()
        return {"status": "healthy"}
    except Exception:
        return {"status": "unhealthy"}, 503

Итог

Я не только Python разработчик — я полнозначный backend разработчик, который понимает всю цепочку:

Frontend — TypeScript, React ✅ Backend — Python, API design ✅ Databases — PostgreSQL, Redis, MongoDB ✅ DevOps — Docker, Kubernetes, AWS ✅ Infrastructure — Linux, Git, CI/CD ✅ Architecture — микросервисы, event-driven

Это позволяет мне писать более качественный код и коммуницировать с другими специалистами.

Что использовал кроме Python? | PrepBro