Robot
Складчик
- #1
Java backend, как в BigTech. Тариф sam_reshu [Павел Сорокин]
- Ссылка на картинку

18 недель беспощадного кодинга в формате спринтов
Каждый спринт — это отдельная практическая тема, которую вы проходите, закрепляете на домашнем задании и применяете в реальном выпускном проекте EventManager
Для кого курс
Спринт 1. Spring Core — фундамент современного Java backend’а
Коротко: разберёшься, как работает Spring «под капотом»: контейнер, DI, жизненный цикл бинов, конфигурация и базовый AOP. Перестаёшь «разбрасывать new по проекту», начинаешь мыслить как backend-разработчик.
Что внутри:
Коротко: учишься работать с реальной базой данных через JPA/Hibernate: сущности, связи, CRUD, жизненный цикл объектов, ленивые загрузки и первые грабли.
Что внутри:
Коротко: выходишь в веб: поднимаешь REST API, работаешь с HTTP, DTO, валидацией и обработкой ошибок. Практика — Payments API: пользователи, их заказы и платежи, плюс тесты через MockMvc.
Что внутри:
Коротко: переходишь от маленьких учебных примеров к выпускному проекту EventManager. Подключаешь Spring Data JPA, строишь нормальные репозитории и делаешь первую итерацию проекта.
Что внутри:
Коротко: учишься защищать backend: логин, роли, права доступа, JWT. EventManager становится не «открытой песочницей», а реальным защищённым сервисом.
Что внутри:
— EventManager Iteration 2 — полноценный защищённый REST-сервис;
— ты умеешь интегрировать Spring Security и JWT в реальный проект.
Спринт 6. Бизнес-логика backend-систем + EventManager — Iteration 3
Коротко: спринт целиком посвящён бизнес-логике и умению превращать требования в код. Здесь ты делаешь крупную итерацию выпускного проекта: сложные правила, статусы, сценарии, проверки, транзакции. Это тот слой, который отличает «настоящего backend-разработчика» от человека, который умеет навесить аннотации.
Что внутри:
Коротко: поднимаешься на уровень архитектуры: монолит vs микросервисы, Kafka, паттерны взаимодействия сервисов. Делаешь Iteration 4 EventManager — вынос нотификаций в отдельный сервис и переход к event-driven-архитектуре.
Что внутри:
Коротко: подключаешь Redis и учишься ускорять систему через кэш и счётчики. Сделаете Iteration 5: кэш локаций и быстрые счётчики уведомлений в EventManager.
Что внутри:
Коротко: разбираешься, как код доезжает до пользователей: сборка, тесты, Docker, пайплайны, окружения. После этого спринта ты не теряешься, когда видишь gitlab-ci.yml в проекте или kubernetes в вакансии.
Что внутри:
Коротко: упаковываешь весь пройденный путь в резюме, портфолио и стратегию поиска работы, чтобы EventManager и остальные практики работали на твой оффер.
Что внутри:
Коротко: закрываешь важный блок по паттернам и чистому коду: то, что регулярно спрашивают на собеседованиях и что действительно помогает писать поддерживаемые системы.
Что внутри:
Каждый спринт — это отдельная практическая тема, которую вы проходите, закрепляете на домашнем задании и применяете в реальном выпускном проекте EventManager
Для кого курс
- Совсем новичок
Сэкономишь год самостоятельных несистемных попыток что-то понять и сразу получишь харды уровня middle - Есть база, но ещё не работаю
Закроешь пробелы и изучишь всё, что нужно реальной работе, чтобы наконец-то вкатиться - Джун
Быстро прокачаешься по хардам, чтобы заперформить в проекте и апнуть грейд ИЛИ найти новую работу на позицию миддла - Миддл на устаревшем стеке
Подтянешь все харды до актуального рынку уровня и погрузишься в архитектуру с микросервисами, чтобы быстрее вырасти по грейду/найти новую работу
- Строить микросервисы, которые не падают под нагрузкой и не умирают от продовых кейсов
- Делать авторизацию с нуля: JWT, роли, фильтры, обработка прав, единый формат ошибок
- Писать бизнес логику и фичи: обработка событий, статусы, задачи по расписанию, отправка нотификаций, история изменений, агрегация событий
- Подключать Kafka и строить асинхронные пайплайны с гарантированной доставкой
- Делать кэширование и ускорять сервисы до миллисекундных ответов
- Разворачивать инфраструктуру: Docker, Redis, Postgres, Liquibase миграции
- Программа идёт от простого к сложному, каждый спринт логично вытекает из предыдущего
- Сначала фундамент: Spring Core, потом настройки: MVC, Hibernate, в конце — продакшен-архитектура
- Разбираем именно до того уровня глубины, до которого это необходимо для работы и собесов
- К каждому уроку конспекты + доп. материалы для углубления
- Живые воркшопы раз в 2 недели — разбираем домашки, отвечаем на вопросы, общаемся. Есть записи, если пропустил
Спринт 1. Spring Core — фундамент современного Java backend’а
Коротко: разберёшься, как работает Spring «под капотом»: контейнер, DI, жизненный цикл бинов, конфигурация и базовый AOP. Перестаёшь «разбрасывать new по проекту», начинаешь мыслить как backend-разработчик.
Что внутри:
- Зачем вообще нужен Spring: чем отличается от «голой» Java и почему на нём пишут почти все современные backend’ы.
- IoC-контейнер и ApplicationContext: как Spring создаёт и связывает объекты.
- Dependency Injection:
- Области видимости бинов: singleton, prototype, web-scope и где они реально нужны.
- Жизненный цикл бина: создание, инициализация, уничтожение (@PostConstruct, @PreDestroy).
- Работа с конфигурацией: application.properties, профили (@profile), вынесение настройки из кода.
- Введение в AOP:
- что такое аспектно-ориентированное программирование;
- логирование, метрики, технический cross-cutting без засорения бизнес-логики.
- Как не превращать проект в “спагетти”:
- базовые принципы SOLID;
- разделение ответственности между слоями.
- Ты поднимешь первый учебный проект на Spring Core:
- небольшая доменная область — учебный «банкинг»;
- все сервисы и репозитории собираются через DI, без ручного new;
- конфигурация вынесена в properties и профили;
- написан хотя бы один AOP-аспект: логирование или метрики.
- готовый репозиторий с живым Spring-приложением;
- понимание, что делает Spring-контейнер и зачем нужны все эти аннотации.
Коротко: учишься работать с реальной базой данных через JPA/Hibernate: сущности, связи, CRUD, жизненный цикл объектов, ленивые загрузки и первые грабли.
Что внутри:
- ORM, JPA и Hibernate:
- зачем маппить объекты на таблицы;
- чем это лучше ручного JDBC.
- Поднимаем PostgreSQL в Docker:
- базовая конфигурация;
- создание схемы и пользователя.
- JPA-сущности:
- @Entity, @Table, @Id, @Column;
- типы полей, генерация идентификаторов.
- CRUD-операции через Hibernate:
- сохранение, поиск, обновление, удаление;
- разбор SQL, который реально уходит в БД.
- Жизненный цикл сущностей:
- Transient → Persistent → Detached → Removed;
- что делает Session / EntityManager.
- Связи:
- @OneToOne, @OneToMany, @ManyToOne, @ManyToMany;
- каскады, orphanRemoval, как не удалить лишнего.
- Ленивая и жадная загрузка:
- FetchType.LAZY vs EAGER;
- классическая N+1-проблема на примерах.
- Учебный проект «Каталог / курсы / студенты»:
- несколько таблиц в PostgreSQL;
- сущности с разными типами связей (1:1, 1:N, N:M);
- CRUD-операции с разбором SQL, который генерит Hibernate.
- ты уверенно создаёшь сущности и связи;
- понимаешь, что происходит с объектом в разных состояниях;
- не боишься смотреть в реальные SQL-запросы.
Коротко: выходишь в веб: поднимаешь REST API, работаешь с HTTP, DTO, валидацией и обработкой ошибок. Практика — Payments API: пользователи, их заказы и платежи, плюс тесты через MockMvc.
Что внутри:
- Введение в Spring Boot:
- стартеры, автоконфигурация, встроенный Tomcat;
- структура боевого backend-приложения.
- HTTP и REST:
- методы GET/POST/PUT/DELETE, статус-коды, заголовки;
- хорошие и плохие REST-эндпоинты.
- Контроллеры:
@RestController, @RequestMapping, @GetMapping, @PostMapping и др.;
@PathVariable, @RequestParam, @RequestBody. - DTO и валидация:
разделение сущностей и DTO;
Bean Validation: @valid, @NotBlank, @email, @min и т. д. - Централизованная обработка ошибок:
@ControllerAdvice, @ExceptionHandler;
единый формат ошибок для клиента. - Тестирование веб-слоя:
MockMvc;
проверка кодов ответа, тела, ошибок.
- Ты реализуешь учебный Payments API:
- пользователи / клиенты и их заказы;
- создание заказов, получение списка заказов пользователя, просмотр деталей;
- базовая модель «платежа» — например, статус PAYMENT_PENDING / PAID.
- Что именно сделаешь руками:
- набор REST-эндпоинтов для пользователей и их заказов;
- DTO с валидацией входящих данных;
- единый формат API-ошибок;
- тесты контроллеров через MockMvc: успешные кейсы + ошибки.
- у тебя есть законченный REST-сервис Payments API;
- ты умеешь писать и тестировать нормальные HTTP-сервисы, а не «крученные методы».
Коротко: переходишь от маленьких учебных примеров к выпускному проекту EventManager. Подключаешь Spring Data JPA, строишь нормальные репозитории и делаешь первую итерацию проекта.
Что внутри:
- Архитектура слоёв:
Controller → Service → Repository;
почему «всё в контроллере» — зло. - Spring Data JPA:
- JpaRepository, готовые CRUD-методы;
- query-методы: поиск по полям без явного SQL.
- Сложные запросы:
- @Query — JPQL и нативный SQL;
- @Modifying для обновлений.
- Транзакции:
- @Transactional, propagation, read-only;
- где нужны транзакции, а где нет.
- Оптимизация запросов:
- N+1 снова, но уже в мире Spring Data;
- JOIN FETCH, EntityGraph.
- Интеграционные тесты репозиториев:
- поднятие PostgreSQL через Testcontainers;
- тесты, которые реально ходят в БД.
- Старт выпускного проекта EventManager: сервис, где пользователи создают, редактируют и просматривают мероприятия.
- В Iteration 1 ты:
- проектируешь базовые сущности: User, Event, Location и необходимые вспомогательные таблицы;
- создаёшь репозитории на Spring Data JPA;
- реализуешь базовые CRUD-операции для ключевых сущностей;
- поднимаешь REST-эндпоинты для создания, редактирования, удаления и получения событий и локаций.
- у тебя есть EventManager Iteration 1 — живой сервис событий с БД и REST-API;
- это первый кирпич выпускного проекта, который пойдёт в портфолио.
Коротко: учишься защищать backend: логин, роли, права доступа, JWT. EventManager становится не «открытой песочницей», а реальным защищённым сервисом.
Что внутри:
- Аутентификация и авторизация:
- в чём разница;
- какие подходы используют в реальных проектах.
- Основы Spring Security:
- конфигурация SecurityFilterChain;
- цепочка фильтров и жизненный цикл запроса.
- Ограничение доступа:
- hasRole, hasAuthority, @PreAuthorize;
- защита эндпоинтов по ролям.
- JWT:
- структура токена: header, payload, signature;
- генерация и валидация токена;
- хранение токена на клиенте, типичные ошибки.
- Обработка ошибок безопасности:
- 401 vs 403;
- AuthenticationEntryPoint, AccessDeniedHandler.
- Тестирование защищённых эндпоинтов:
- @WithMockUser;
- тесты с реальными JWT.
- В Iteration 2 ты:
- добавляешь регистрацию и логин пользователей;
- реализуешь выдачу JWT-токенов;
- ограничиваешь доступ к CRUD-операциям EventManager.
— EventManager Iteration 2 — полноценный защищённый REST-сервис;
— ты умеешь интегрировать Spring Security и JWT в реальный проект.
Спринт 6. Бизнес-логика backend-систем + EventManager — Iteration 3
Коротко: спринт целиком посвящён бизнес-логике и умению превращать требования в код. Здесь ты делаешь крупную итерацию выпускного проекта: сложные правила, статусы, сценарии, проверки, транзакции. Это тот слой, который отличает «настоящего backend-разработчика» от человека, который умеет навесить аннотации.
Что внутри:
- Проектирование доменной модели и сервисов:
- выделение агрегатов и границ ответственности;
- проектирование методов сервисов под конкретные сценарии.
- Типичные бизнес-правила в Event-системах:
- нельзя создать событие в прошлом;
- нельзя опубликовать событие без обязательных полей;
- ограничение мест/capacity: проверка, что не переполнено;
- дедлайны регистрации и отмены;
- статусы событий: DRAFT / PUBLISHED / CANCELED / COMPLETED.
- Бизнес-ошибки и исключения:
- свои exception’ы для доменных ошибок;
- маппинг доменных ошибок в HTTP-ответы 4xx.
- Транзакционные границы:
- где нужна транзакция, а где нет;
- как обеспечить целостность при сложных сценариях, например, несколько записей в таблицы.
- В Iteration 3 ты превращаешь EventManager из «CRUD-формочек» в настоящую бизнес-систему:
- добавляешь статусы событий и переходы между ними;
- реализуешь проверки;
- описываешь и реализуешь сценарии;
- выделяешь отдельный слой доменных сервисов, работающих над сущностями.
- Пишешь набор тестов:
- unit-тесты бизнес-логики;
- интеграционные тесты ключевых сценариев.
- EventManager Iteration 3 — большая итерация, где ты прокачиваешься именно как разработчик бизнес-логики, а не просто «разворачивающий фреймворки».
Коротко: поднимаешься на уровень архитектуры: монолит vs микросервисы, Kafka, паттерны взаимодействия сервисов. Делаешь Iteration 4 EventManager — вынос нотификаций в отдельный сервис и переход к event-driven-архитектуре.
Что внутри:
- Архитектура монолита и микросервисов:
- плюсы и минусы каждого подхода;
- когда вообще имеет смысл делить систему.
- Типовые уровни архитектуры:
- системная архитектура: какие сервисы и как взаимодействуют;
- архитектура приложения: слои, модули;
- инфраструктурная часть: БД, брокеры, балансировщики.
- Kafka и event-driven:
- producer / consumer, topic, partition, offset;
- семантика «at least once», «at most once», «exactly once»;
- долговечность и репликация.
- Паттерны микросервисов:
- API Gateway, Circuit Breaker, Saga, Outbox — на уровне идей;
- взаимодействие sync HTTP и async Kafka;
- отказоустойчивость и масштабирование;
- базовые подходы к резервированию и мониторингу.
- В Iteration 4 ты:
- выделяешь сервис уведомлений, например NotificationService, в отдельный микросервис;
- настраиваешь Kafka-топики для событий: создание/изменение/отмена события, регистрация пользователя;
- из EventManager публикуешь доменные события в Kafka;
- в NotificationService подписываешься на эти события и подготавливаешь уведомления, которые пользователи могут получить через API.
- EventManager Iteration 4 — уже не просто монолит, а система из нескольких сервисов, общающихся через Kafka;
- ты понимаешь, как выглядят event-driven-системы и какие проблемы они решают.
Коротко: подключаешь Redis и учишься ускорять систему через кэш и счётчики. Сделаете Iteration 5: кэш локаций и быстрые счётчики уведомлений в EventManager.
Что внутри:
- Зачем вообще кэш:
- где помогает — быстрый доступ к часто читаемым данным;
- где убивает консистентность и приносит боль.
- Базовые паттерны кэширования:
- cache-aside — самый популярный;
- read/write-through, write-behind — на уровне идей.
- Redis:
- модель «ключ-значение»;
- строки и простые структуры данных;
- базовые команды и TTL.
- Поднимаем Redis в Docker:
- базовая конфигурация;
- проверка через CLI-клиент.
- Интеграция Redis со Spring:
- RedisTemplate, работа с ключами и значениями;
- кэширующие аннотации: @Cacheable, @CacheEvict, @CachePut.
- В Iteration 5 ты:
- внедряешь Redis в архитектуру EventManager;
- реализуешь cache-aside для «горячих» данных, например;
- добавляешь быстрый счётчик уведомлений или непрочитанных событий для пользователя в Redis;
- настраиваешь инвалидацию кэша при изменениях, чтобы не было «протухших» данных.
- EventManager Iteration 5 — быстрый и отзывчивый, с кэшем и счётчиками в Redis;
- ты понимаешь, где и как применять Redis в backend-системах.
Коротко: разбираешься, как код доезжает до пользователей: сборка, тесты, Docker, пайплайны, окружения. После этого спринта ты не теряешься, когда видишь gitlab-ci.yml в проекте или kubernetes в вакансии.
Что внутри:
- Что такое CI и CD:
- continuous integration, continuous delivery/deployment;
- как это экономит время и деньги команде.
- Жизненный цикл задачи:
commit → build → test → package → docker → deploy → monitor. - Пайплайны:
- stages: build/test/deploy;
- jobs, артефакты, variables.
- Docker в контексте CI/CD:
- сборка образа приложения;
- Docker registry;
- версии образов, tags и откаты.
- Инструменты:
- GitLab CI, GitHub Actions, Jenkins — кто чем отличается и где встречается;
- базовое представление о деплое на сервер/в кластер.
- Окружения:
- Dev / Stage / Prod;
- переменные окружения, секреты, конфиги.
- Собираешь минимальный рабочий CI/CD-процесс для Java-сервиса:
- конфиг для GitLab CI или GitHub Actions;
- сборка и запуск тестов;
- сборка Docker-образа приложения;
- деплой на выбранную целевую среду: локальный сервер / Docker-хост.
- ты понимаешь, как описывается и живёт пайплайн;
- можешь уверенно общаться с тимлидом и DevOps по поводу деплоя и окружений.
Коротко: упаковываешь весь пройденный путь в резюме, портфолио и стратегию поиска работы, чтобы EventManager и остальные практики работали на твой оффер.
Что внутри:
- Стратегия поиска работы:
- как анализировать рынок и выбирать вакансии;
- таблица откликов и работа с воронкой.
- Резюме разработчика:
- структура и оформление;
- как грамотно описать учебные проекты и EventManager;
- типичные ошибки, из-за которых резюме не читают.
- Самопрезентация:
- как рассказывать о себе и своём опыте;
- ответы на поведенческие вопросы по модели STAR.
- Подготовка к тех-собеседованиям:
- темы по Java/Spring/SQL/архитектуре, которые ждут на интервью;
- как использовать эти темы в твоих проектах, в том числе в EventManager.
- Как говорить о процессах:
- Agile, Scrum, роли в команде;
- CI/CD, код-ревью, работа с задачами.
- Готовое резюме в PDF с описанием:
- твоих навыков;
- выпускного проекта EventManager с итерациями;
- дополнительных проектов, типа Payments API.
- Таблица откликов и план поиска работы.
- Набор заготовок ответов на типовые вопросы: тех + поведенческие.
Коротко: закрываешь важный блок по паттернам и чистому коду: то, что регулярно спрашивают на собеседованиях и что действительно помогает писать поддерживаемые системы.
Что внутри:
- Принципы SOLID:
- на конкретных примерах «до/после»;
- как они применяются в коде Spring-приложений.
- Ключевые паттерны:
- Builder — как избегать «конструкторов на 10 аргументов»;
- Strategy — как гибко менять поведение без if-else-адов;
- Proxy — где его видишь в Spring: AOP, транзакции, безопасность;
- Facade — как прятать сложность подсистем.
- Связка паттернов с EventManager:
- какие решения в проекте можно описать через паттерны;
- как об этом говорить на собеседовании.
- Небольшой учебный проект, например «система опросов / квизов», где ты:
- реализуешь 3–4 паттерна в живом коде;
- фиксируешь, как они помогают держать код чистым.
- Конспект по SOLID и паттернам с примерами и формулировками «как для собеса».
- ВТБ
Senior Java Dev
работал в инвестиционном блоке: высоконагруженная обработка десятков тысяч поручений на переводы, сделки, бумаги, интеграции с внешними сервисами и календарями выплат по облигациям - Yoomoney
Java Dev
работал над Core карточного эквайринга: интеграции с платёжными системами и провайдерами, интернет-платежи, высоконагруженная обработка транзакций - NDA
Backend-разработчик
участвовал в разработке backend-систем крупной телеком-компании: системы обработки звонков, биллинга, конфигурации сети и SMS-центра
- Доступ ко всем материалам курса (видео + конспекты)
Показать больше
Зарегистрируйтесь
, чтобы посмотреть контент.