Скачать Java backend, как в BigTech [Тариф sam_reshu] [Павел Сорокин]

Dozhd

Администратор
Регистрация
17 Янв 2014
Сообщения
167.884
Реакции
387.834
Складчина: Java backend, как в BigTech [Тариф sam_reshu] [Павел Сорокин]



18 недель беспощадного кодинга в формате спринтов

Каждый спринт — это отдельная практическая тема, которую вы проходите, закрепляете на домашнем задании и применяете в реальном выпускном проекте 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:
внедрение зависимостей через конструктор / поле / сеттер;
@Component, @service, @Repository, @Configuration, @Bean;
@Autowired, @Qualifier, @Primary.

Области видимости бинов: singleton, prototype, web-scope и где они реально нужны.
Жизненный цикл бина: создание, инициализация, уничтожение (@PostConstruct, @PreDestroy).
Работа с конфигурацией: application.properties, профили (@profile), вынесение настройки из кода.
Введение в AOP:
что такое аспектно-ориентированное программирование;
логирование, метрики, технический cross-cutting без засорения бизнес-логики.

Как не превращать проект в “спагетти”:
базовые принципы SOLID;
разделение ответственности между слоями.

Практика:

Ты поднимешь первый учебный проект на Spring Core:
небольшая доменная область — учебный «банкинг»;
все сервисы и репозитории собираются через DI, без ручного new;
конфигурация вынесена в properties и профили;
написан хотя бы один AOP-аспект: логирование или метрики.

Результат:

готовый репозиторий с живым Spring-приложением;
понимание, что делает Spring-контейнер и зачем нужны все эти аннотации.
Спринт 2. Hibernate Core — работа с БД как у взрослых

Коротко: учишься работать с реальной базой данных через 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-запросы.
Спринт 3. Spring Boot Web — веб и HTTP на практике

Коротко: выходишь в веб: поднимаешь 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-сервисы, а не «крученные методы».
Спринт 4. Spring Data JPA + EventManager | Iteration 1

Коротко: переходишь от маленьких учебных примеров к выпускному проекту 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;
это первый кирпич выпускного проекта, который пойдёт в портфолио.
Спринт 5. Spring Security + EventManager — Iteration 2

Коротко: учишься защищать 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 — большая итерация, где ты прокачиваешься именно как разработчик бизнес-логики, а не просто «разворачивающий фреймворки».
Спринт 7. Архитектура и микросервисы + EventManager — Iteration 4

Коротко: поднимаешься на уровень архитектуры: монолит 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-системы и какие проблемы они решают.
Спринт 8. Redis и кэширование + EventManager — Iteration 5

Коротко: подключаешь 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-системах.
Спринт 9. CI/CD для 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 по поводу деплоя и окружений.
Бонусный модуль №1. Прохождение собеседований: резюме, стратегия, ответы

Коротко: упаковываешь весь пройденный путь в резюме, портфолио и стратегию поиска работы, чтобы EventManager и остальные практики работали на твой оффер.

Что внутри:

Стратегия поиска работы:
как анализировать рынок и выбирать вакансии;
таблица откликов и работа с воронкой.

Резюме разработчика:
структура и оформление;
как грамотно описать учебные проекты и EventManager;
типичные ошибки, из-за которых резюме не читают.

Самопрезентация:
как рассказывать о себе и своём опыте;
ответы на поведенческие вопросы по модели STAR.

Подготовка к тех-собеседованиям:
темы по Java/Spring/SQL/архитектуре, которые ждут на интервью;
как использовать эти темы в твоих проектах, в том числе в EventManager.

Как говорить о процессах:
Agile, Scrum, роли в команде;
CI/CD, код-ревью, работа с задачами.

Практика:

Готовое резюме в PDF с описанием:
твоих навыков;
выпускного проекта EventManager с итерациями;
дополнительных проектов, типа Payments API.

Таблица откликов и план поиска работы.
Набор заготовок ответов на типовые вопросы: тех + поведенческие.
Бонусный модуль №2. Паттерны проектирования и чистый код

Коротко: закрываешь важный блок по паттернам и чистому коду: то, что регулярно спрашивают на собеседованиях и что действительно помогает писать поддерживаемые системы.

Что внутри:

Принципы 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-центра
Тариф sam_reshu

Доступ ко всем материалам курса (видео + конспекты)
Цена 119900 руб.




СКАЧАТЬ