Расскажи про технологии, с которыми работал

Ответ

Мой основной стек — это бэкенд-разработка на Node.js.

Фреймворки и среды выполнения:

  • Node.js (с акцентом на последние LTS-версии).
  • Express.js для быстрого прототипирования и простых REST API.
  • NestJS для построения масштабируемых, хорошо структурированных enterprise-приложений с поддержкой TypeScript из коробки.
  • Fastify в проектах, где критична производительность.

Базы данных и кэширование:

  • PostgreSQL для реляционных данных с использованием pg или TypeORM.
  • MongoDB для документоориентированных данных, часто с mongoose.
  • Redis для кэширования, сессий и работы в качестве быстрого хранилища ключ-значение.

Языки и инструменты:

  • TypeScript — активно использую для повышения надежности и поддерживаемости кода.
  • Jest и Supertest для модульного и интеграционного тестирования.

Инфраструктура и DevOps:

  • Docker для контейнеризации приложений.
  • Kubernetes для оркестрации контейнеров в продакшене.
  • AWS (EC2, ECS, Lambda, S3, RDS) для облачного развертывания.

Другие технологии:

  • GraphQL с Apollo Server или Mercurius.
  • WebSockets с ws или Socket.io для real-time функциональности.
  • Message brokers: RabbitMQ, Apache Kafka.

Пример базового сервера на Express:

const express = require('express');
const app = express();
app.use(express.json());

app.get('/api/health', (req, res) => {
  res.json({ status: 'OK', timestamp: new Date().toISOString() });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server listening on port ${PORT}`));

Ответ 18+ 🔞

А, ну так, рассказываю про свой рабочий инструментарий, чтобы было понятно, на чём я обычно горбачусь. Основная моя вотчина — это Node.js на бэкенде.

По фреймворкам и средам:

  • Node.js — это основа основ, стараюсь держаться за последние LTS-версии, чтобы не было потом сюрпризов, ёпта.
  • Express.js — для всяких быстрых прототипов или простеньких REST API. Когда надо сделать что-то за вечер, он незаменим, хоть и простой, как валенок.
  • NestJS — вот это уже серьёзная бандура. Беру его, когда нужно построить что-то монументальное, enterprise-уровня. С TypeScript из коробки — просто песня, архитектура продумана, но иногда такое ощущение, что убиваешь муху кувалдой, если проект маленький.
  • Fastify — когда производительность критична, и каждый миллисекунд на счету. Шустрый, бля, реально.

Базы и кэш:

  • PostgreSQL — для всего, что связано с реляционными данными. Работаю либо с pg, либо через TypeORM. Надёжная штука, хоть и требует уважения.
  • MongoDB — когда данные по структуре — пиздец какой винегрет, и схему на ходу менять надо. Часто с mongoose в паре.
  • Redis — мой любимый скоростной костыль. Для кэша, сессий или просто как хранилище ключ-значение. Быстрее только мысль о пятнице.

Языки и инструменты:

  • TypeScript — без него сейчас вообще никуда. Код становится предсказуемее, IDE меньше орёт, и в целом спать спокойнее, хотя первоначальная настройка иногда — просто ёперный театр.
  • Jest и Supertest — для тестов. Без них сейчас как без рук, доверия к коду ебать ноль.

Инфраструктура и DevOps:

  • Docker — всё в контейнеры, красиво и изолированно. Удобно.
  • Kubernetes — когда приложение вырастает и начинает требовать к себе особого подхода. Мощная штука, но чтобы с ней подружиться, нужно терпения — ноль ебать.
  • AWS — EC2, ECS, Lambda, S3, RDS... В общем, весь этот облачный зоопарк. Иногда кажется, что они специально придумывают новые сервисы, лишь бы я не расслаблялся.

Прочее по мелочи:

  • GraphQL — когда REST уже не канает, и клиенты хотят сами решать, какие данные тащить. Apollo Server или Mercurius в помощь.
  • WebSockets — через ws или Socket.io, когда нужна real-time-фича. Весёлая тема, особенно с масштабированием.
  • Message brokers: RabbitMQ, Apache Kafka — когда нужно развязать сервисы и чтобы они не знали друг о друге. Сложно, но эффективно.

Ну и вот тебе пример, с чего может начинаться день, — простейший сервак на Express:

const express = require('express');
const app = express();
app.use(express.json());

app.get('/api/health', (req, res) => {
  res.json({ status: 'OK', timestamp: new Date().toISOString() });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server listening on port ${PORT}`));

Вот такой вот, бля, нехитрый набор. Всё это, конечно, не догма, а так, ориентир. Главное — чтобы работало и не падало в три часа ночи с дикими ошибками.