☕️ JPA 4: Hibernate переосмысливают
JPA — та самая штука, с которой вы работаете каждый день, не особо задумываясь. @OneToMany, FetchType.LAZY, сессии, dirty-checking... всё привычно и предсказуемо.
Но в JPA 4 всё меняется серьёзнее, чем кажется на первый взгляд.
Вводят EntityAgent — работа с сущностями в обход Persistence Context. Звучит как мелочь, но по факту меняет подход к целому классу задач. А ещё новый FetchType.DEFAULT, после которого глядя на код вы уже не сможете сразу ответить: EAGER или LAZY? Ответ теперь зависит от конфигурации Persistence Unit, о которой вы, скорее всего, «не думали» — Spring Boot же сам настраивает.
Статья разбирает ключевые изменения спецификации без воды, с конкретными примерами и комментариями людей, которые реально в этом варятся.
🔗 Читать подробнее
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava
JPA — та самая штука, с которой вы работаете каждый день, не особо задумываясь. @OneToMany, FetchType.LAZY, сессии, dirty-checking... всё привычно и предсказуемо.
Но в JPA 4 всё меняется серьёзнее, чем кажется на первый взгляд.
Вводят EntityAgent — работа с сущностями в обход Persistence Context. Звучит как мелочь, но по факту меняет подход к целому классу задач. А ещё новый FetchType.DEFAULT, после которого глядя на код вы уже не сможете сразу ответить: EAGER или LAZY? Ответ теперь зависит от конфигурации Persistence Unit, о которой вы, скорее всего, «не думали» — Spring Boot же сам настраивает.
Статья разбирает ключевые изменения спецификации без воды, с конкретными примерами и комментариями людей, которые реально в этом варятся.
══════ Навигация ══════
Вакансии • Задачи • Собесы
#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3😁3
Forwarded from Библиотека задач по Java | тесты, код, задания
Что будет результатом кода?
Anonymous Quiz
17%
Ошибка компиляции
73%
5
6%
null
1%
0
3%
Посмотреть ответ
👍3❤1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17👍3🔥2
Надоели моки репозиториев, которые не ловят реальные SQL-баги?
Настраиваем Testcontainers, запускаем настоящий PostgreSQL прямо в тестах, без внешних зависимостей.
⚙️ Шаг 1 — Зависимости (Maven)
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>1.19.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>1.19.7</version>
<scope>test</scope>
</dependency>
> Для Gradle:
testImplementation "org.testcontainers:postgresql:1.19.7"🐳 Шаг 2 — Базовый тест
@SpringBootTest
@Testcontainers
class UserRepositoryTest {
@Container
static PostgreSQLContainer<?> postgres =
new PostgreSQLContainer<>("postgres:16-alpine");
@DynamicPropertySource
static void configureProperties(DynamicPropertyRegistry registry) {
registry.add("spring.datasource.url", postgres::getJdbcUrl);
registry.add("spring.datasource.username", postgres::getUsername);
registry.add("spring.datasource.password", postgres::getPassword);
}
@Autowired
UserRepository userRepository;
@Test
void shouldSaveAndFindUser() {
var user = new User("alice@example.com");
userRepository.save(user);
var found = userRepository.findByEmail("alice@example.com");
assertThat(found).isPresent();
}
}
Всё. Spring подхватит datasource-проперти через @DynamicPropertySource — Liquibase/Flyway накатятся сами.
⚡️ Шаг 3 — Ускоряем: переиспользуем контейнер
По умолчанию контейнер поднимается на каждый тест-класс.
Чтобы один инстанс жил на весь прогон — выносим в абстрактный класс:
@SpringBootTest
@Testcontainers
public abstract class BaseIntegrationTest {
@Container
static final PostgreSQLContainer<?> POSTGRES =
new PostgreSQLContainer<>("postgres:16-alpine")
.withReuse(true); // ← ключевая строка
@DynamicPropertySource
static void props(DynamicPropertyRegistry r) {
r.add("spring.datasource.url", POSTGRES::getJdbcUrl);
r.add("spring.datasource.username", POSTGRES::getUsername);
r.add("spring.datasource.password", POSTGRES::getPassword);
}
}
Наследуй в каждом интеграционном тесте — контейнер поднимется один раз.
🔍 Шаг 4 — Отладка: смотрим логи контейнера
POSTGRES.followOutput(new Slf4jLogConsumer(
LoggerFactory.getLogger("postgres-container")
));
Добавь до старта контейнера и все PostgreSQL логи пойдут в твой аппендер.
🔖 Сохраняй пост для следующего проекта.
══════ Навигация ══════
Вакансии • Задачи • Собесы
#Enterprise
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🔥1🤔1
Разработчик приложений и автоматизации (Middle / Junior+) — от 1100$ до 4000$ — удалённая работа / full-time или частичная занятость
Middle+ Java Backend Developer — IRLIX — удалёнка
Senior Java Developer — Лектон — удалёнка/гибрид (Санкт-Петербург)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1🔥1
🔁 Паттерн Proxy
Proxy — структурный паттерн, который подставляет вместо реального объекта его заменитель. Заменитель перехватывает вызовы к оригиналу и может добавлять логику до и после или вместо реального вызова.
Разновидности и их применение
🔹 Виртуальный прокси. Откладывает создание дорогого объекта до первого реального обращения к нему. Ленивая инициализация без изменения клиентского кода.
🔹 Защитный прокси. Проверяет права доступа перед делегированием вызова. Авторизация как отдельный слой, не смешанный с бизнес-логикой.
🔹 Удалённый прокси. Скрывает сетевое взаимодействие. Клиент вызывает метод как локальный, прокси сериализует и отправляет запрос. Основа RPC и gRPC-стабов.
🔹 Кеширующий прокси. Запоминает результат вызова и возвращает его при повторных запросах с теми же параметрами.
Преимущества
1️⃣ Прозрачность для клиента
Прокси реализует тот же интерфейс, что и оригинал. Клиентский код не меняется — он не знает, с чем работает.
2️⃣ Разделение ответственности
Безопасность, кеширование, логирование — каждое в своём прокси. Бизнес-логика оригинального объекта не засорена инфраструктурными деталями.
3️⃣ Управление ресурсами
Виртуальный прокси позволяет работать с тысячами «объектов», реально создавая только те, к которым обращались. Экономия памяти и времени инициализации.
В Spring
Spring AOP — это прокси. @Transactional, @Cacheable, @PreAuthorize — всё это прокси-обёртки, которые Spring генерирует динамически через CGLIB или JDK Dynamic Proxy. Паттерн, который вы используете каждый день, иногда даже не осознавая этого.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava
Proxy — структурный паттерн, который подставляет вместо реального объекта его заменитель. Заменитель перехватывает вызовы к оригиналу и может добавлять логику до и после или вместо реального вызова.
Разновидности и их применение
🔹 Виртуальный прокси. Откладывает создание дорогого объекта до первого реального обращения к нему. Ленивая инициализация без изменения клиентского кода.
🔹 Защитный прокси. Проверяет права доступа перед делегированием вызова. Авторизация как отдельный слой, не смешанный с бизнес-логикой.
🔹 Удалённый прокси. Скрывает сетевое взаимодействие. Клиент вызывает метод как локальный, прокси сериализует и отправляет запрос. Основа RPC и gRPC-стабов.
🔹 Кеширующий прокси. Запоминает результат вызова и возвращает его при повторных запросах с теми же параметрами.
Преимущества
Прокси реализует тот же интерфейс, что и оригинал. Клиентский код не меняется — он не знает, с чем работает.
Безопасность, кеширование, логирование — каждое в своём прокси. Бизнес-логика оригинального объекта не засорена инфраструктурными деталями.
Виртуальный прокси позволяет работать с тысячами «объектов», реально создавая только те, к которым обращались. Экономия памяти и времени инициализации.
В Spring
Spring AOP — это прокси. @Transactional, @Cacheable, @PreAuthorize — всё это прокси-обёртки, которые Spring генерирует динамически через CGLIB или JDK Dynamic Proxy. Паттерн, который вы используете каждый день, иногда даже не осознавая этого.
══════ Навигация ══════
Вакансии • Задачи • Собесы
#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4❤1
Как и зачем эффективно интегрировать legacy-системы через Apache Kafka?
Ждем вас на открытом практикуме «Интеграция legacy-систем через Apache Kafka: быстрый старт без переписывания всего» от ОТУС! Расписание эфира:
• Проблема: почему просто переписать — это рискованно, а P2P-интеграции ведут к спагетти-архитектуре
• Решение: Apache Kafka как слой реального времени — обзор паттерна «труба и фильтры» для Legacy
• Разбор паттернов: как обмануть старую систему: дуалирование записи (Dual Writes) и чтение из журналов транзакций
• Дорожная карта: 3 шага к отказу от монолита с сохранением работоспособности старой системы (Strangler Fig Pattern)
Ведущий: Сергей Прощаев — ведущий инженер в компании ПАО «Сургутнефтегаз».
Бонусы для участников:
7% скидка на любой курс ОТУС
Доступ к бесплатному пробному периоду корпоративной платформы
Экспертные разборы по Kafka
Ссылка на регистрацию: https://clc.to/G5_Lwg
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Ждем вас на открытом практикуме «Интеграция legacy-систем через Apache Kafka: быстрый старт без переписывания всего» от ОТУС! Расписание эфира:
• Проблема: почему просто переписать — это рискованно, а P2P-интеграции ведут к спагетти-архитектуре
• Решение: Apache Kafka как слой реального времени — обзор паттерна «труба и фильтры» для Legacy
• Разбор паттернов: как обмануть старую систему: дуалирование записи (Dual Writes) и чтение из журналов транзакций
• Дорожная карта: 3 шага к отказу от монолита с сохранением работоспособности старой системы (Strangler Fig Pattern)
Ведущий: Сергей Прощаев — ведущий инженер в компании ПАО «Сургутнефтегаз».
Бонусы для участников:
7% скидка на любой курс ОТУС
Доступ к бесплатному пробному периоду корпоративной платформы
Экспертные разборы по Kafka
Ссылка на регистрацию: https://clc.to/G5_Lwg
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14💯3🤔2👾2
⚡️ Почему record не взлетел даже для DTO
Казалось бы идеальная фича для DTO. Иммутабельность, компактный синтаксис, никакого Lombok.
Но есть одна деталь, которая всё портит. В record геттер называется name(), а не getName().
Звучит мелко? Но это нарушение JavaBean-конвенции, которой 20+ лет. И всё, что на ней завязано ломается или требует допиливания:
→ Jackson — заработал только с версии 2.12. До этого name() не распознавался как property вообще
→ ModelMapper — не видит аксессоры record из коробки, нужна ручная конфигурация
→ Swagger/OpenAPI-генераторы — генерируют дублирующиеся поля или теряют их
→ BeanUtils, PropertyUtils (Apache Commons) — не работают, ждут getName()
→ Любой легаси-код с рефлексией — Introspector.getBeanInfo() record не понимает
И это не баги инструментов — это осознанное решение команды Java. Они сказали: «Мы проектируем для нового кода, а не для поддержки старых конвенций».
Звучит красиво в теории. На практике в энтерпрайзе стек из легаси-либ, и record там как белая ворона.
💬 Работаете record'ами или обходите их стороной?
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava
Казалось бы идеальная фича для DTO. Иммутабельность, компактный синтаксис, никакого Lombok.
Но есть одна деталь, которая всё портит. В record геттер называется name(), а не getName().
Звучит мелко? Но это нарушение JavaBean-конвенции, которой 20+ лет. И всё, что на ней завязано ломается или требует допиливания:
→ Jackson — заработал только с версии 2.12. До этого name() не распознавался как property вообще
→ ModelMapper — не видит аксессоры record из коробки, нужна ручная конфигурация
→ Swagger/OpenAPI-генераторы — генерируют дублирующиеся поля или теряют их
→ BeanUtils, PropertyUtils (Apache Commons) — не работают, ждут getName()
→ Любой легаси-код с рефлексией — Introspector.getBeanInfo() record не понимает
И это не баги инструментов — это осознанное решение команды Java. Они сказали: «Мы проектируем для нового кода, а не для поддержки старых конвенций».
Звучит красиво в теории. На практике в энтерпрайзе стек из легаси-либ, и record там как белая ворона.
══════ Навигация ══════
Вакансии • Задачи • Собесы
#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤4🔥2
🔥 Spring Boot мертв?
Наткнулся на реддите на обсуждение, что спринг бут уже не тот. Как по мне уже лет 10 пытаются похоронить спринг.
Сначала Quarkus, потом Micronaut.. «вот оно, будущее». Теперь ещё и virtual threads добавились в список «убийц».
А Spring Boot как стоял в проде у банков, ритейла и корпораций так и стоит.
💬 Пишите в комментарии своё мнение умрёт ли спринг 😁
🐸 Библиотека джависта
#DevLife
Наткнулся на реддите на обсуждение, что спринг бут уже не тот. Как по мне уже лет 10 пытаются похоронить спринг.
Сначала Quarkus, потом Micronaut.. «вот оно, будущее». Теперь ещё и virtual threads добавились в список «убийц».
А Spring Boot как стоял в проде у банков, ритейла и корпораций так и стоит.
#DevLife
Please open Telegram to view this post
VIEW IN TELEGRAM
😁16💯8❤4
Есть кейс или продукт, о котором хочется рассказать backend-сообществу?
Тогда хорошие новости: 29 августа в Москве пройдет конференция JVM Day — большая встреча инженеров, на которую ищут спикеров.
Вы сможете:
— выступить с докладом — рассказать о кейсе или нестандартном решении. Формат классический: 40-минутный доклад на сцене и вопросы из зала;
— представить продукт в демозоне. У вашей команды будет пространство с экранами и стойками на весь день: можно показывать технологию вживую, общаться с инженерами, собирать обратную связь и находить первых пользователей.
Поддерживают любой формат: можно выступить одному или с коллегой, устроить дискуссию или воркшоп.
Хороший шанс заявить о себе и проверить, как сообщество реагирует на ваш продукт.
Встречаемся в штаб-квартире Т-Банка.
Подайте заявку прямо сейчас
Тогда хорошие новости: 29 августа в Москве пройдет конференция JVM Day — большая встреча инженеров, на которую ищут спикеров.
Вы сможете:
— выступить с докладом — рассказать о кейсе или нестандартном решении. Формат классический: 40-минутный доклад на сцене и вопросы из зала;
— представить продукт в демозоне. У вашей команды будет пространство с экранами и стойками на весь день: можно показывать технологию вживую, общаться с инженерами, собирать обратную связь и находить первых пользователей.
Поддерживают любой формат: можно выступить одному или с коллегой, устроить дискуссию или воркшоп.
Хороший шанс заявить о себе и проверить, как сообщество реагирует на ваш продукт.
Встречаемся в штаб-квартире Т-Банка.
Подайте заявку прямо сейчас
Please open Telegram to view this post
VIEW IN TELEGRAM
😁16👍2🔥1
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Работает у одного, но ломается у другого. В логах каша из чужих данных 👇
📦 Задание — code review
Команда добавила контекст текущего пользователя в сервис через поле. Локально — всё ок.
На проде с несколькими потоками — пользователи видят чужие данные.
@Service
public class ReportService {
private User currentUser;
private ReportFilter activeFilter;
private final ReportRepository reportRepository;
public ReportService(ReportRepository reportRepository) {
this.reportRepository = reportRepository;
}
public void initContext(User user, ReportFilter filter) {
this.currentUser = user;
this.activeFilter = filter;
}
public List<Report> getReports() {
if (currentUser == null) {
throw new IllegalStateException("Context not initialized");
}
return reportRepository.findByUserAndFilter(
currentUser.getId(),
activeFilter
);
}
public ReportSummary getSummary() {
List<Report> reports = getReports();
return ReportSummary.calculate(reports, currentUser);
}
}
▪️ Объясни
— Какой скоуп у бина по умолчанию в Spring и почему это делает поля-состояния опасными.
— Почему synchronized над методами не является правильным решением здесь.
— Как переписать код, чтобы работало.
Ставьте → 🔥, если нравится формат. Если нет → 🌚
#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3🤔1
🦾 Надоело чинить «упавших» ИИ-агентов после каждого микросбоя внешних сервисов?
Анонсируем старт продаж большого курса по AgentOps. Мы собрали опыт десятков разработчиков и сделали программу, которая учит выводить ИИ в стабильный прод.
🗓 Ждем вас 28 апреля в 19:00 МСК на эфире: «Как эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токены».
👉 Кто вещает и в чем польза?
Спикер Кирилл Кухарев (Senior AI Engineer в Raft, спикер AI Conf и Highload++). Он реализовал более 50 коммерческих проектов в GenAI и на вебинаре покажет, как взять под контроль работу нескольких агентов, чтобы они не перекидывали друг другу лишний контекст и не сжигали ваши деньги.
В прямом эфире разберем:
• Как формируется контекст в LLM при маршрутизации между агентами;
• Куда утекают лишние токены и возникает перерасход;
• Практические методы: как сжимать историю, грамотно делить задачи, лимитировать передачу контекста и собирать промпты прямо в процессе запроса пользователя.
🔥 Два способа получить максимум:
1. Приходите на вебинар 28 апреля. Дарим участникам промокод на 5.000 ₽ (работает 3 дня после эфира - это шанс забрать курс по самому низу рынка).
2. Выбирайте Инженерный трек. В подарок к нему идет полный доступ к записям и автопроверкам завершенного курса «Разработка ИИ-агентов».
👉 Занять место на вебинаре и стать профи в AgentOps
Анонсируем старт продаж большого курса по AgentOps. Мы собрали опыт десятков разработчиков и сделали программу, которая учит выводить ИИ в стабильный прод.
🗓 Ждем вас 28 апреля в 19:00 МСК на эфире: «Как эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токены».
Спикер Кирилл Кухарев (Senior AI Engineer в Raft, спикер AI Conf и Highload++). Он реализовал более 50 коммерческих проектов в GenAI и на вебинаре покажет, как взять под контроль работу нескольких агентов, чтобы они не перекидывали друг другу лишний контекст и не сжигали ваши деньги.
В прямом эфире разберем:
• Как формируется контекст в LLM при маршрутизации между агентами;
• Куда утекают лишние токены и возникает перерасход;
• Практические методы: как сжимать историю, грамотно делить задачи, лимитировать передачу контекста и собирать промпты прямо в процессе запроса пользователя.
🔥 Два способа получить максимум:
1. Приходите на вебинар 28 апреля. Дарим участникам промокод на 5.000 ₽ (работает 3 дня после эфира - это шанс забрать курс по самому низу рынка).
2. Выбирайте Инженерный трек. В подарок к нему идет полный доступ к записям и автопроверкам завершенного курса «Разработка ИИ-агентов».
👉 Занять место на вебинаре и стать профи в AgentOps
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Какая рубрика нравится больше? Если забыли, о чём рубрика, можно освежить в памяти тут.
🔥 → #CoreJava
👍🏼 → #Enterprise
👾 → #DevLife
🤔 → #News
❤️ → Всё нравится :))
#DevLife
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20🔥10👍8🤔1👾1
🏃♀️ Уже завтра стартует курс по разработке AI-агентов.
Про AI-агентов часто думают, что это просто модная обертка над джпт для пет-проектов. Кажется, прикрутил API к скрипту и типа готово. А вот и нет! Когда дело доходит до прода, начинаются настоящие проблемы.
Эту инженерную часть мы и будем разбирать на курсе. Будем учиться интегрировать внешние API, работать с RAG, LangGraph, CrewAI и деплоить всё это так, чтобы работало как часы.
Стартуем завтра. Для участия и доступа к программе переходите по ссылке.
Про AI-агентов часто думают, что это просто модная обертка над джпт для пет-проектов. Кажется, прикрутил API к скрипту и типа готово. А вот и нет! Когда дело доходит до прода, начинаются настоящие проблемы.
Зачем глубоко копать мультиагентные системы, если можно обойтись старым добрым кодом? Как контролировать расходы на токены, чтобы новая фича не разорила бизнес? Как заставить агента работать стабильно и предсказуемо, а не галлюцинировать?
Эту инженерную часть мы и будем разбирать на курсе. Будем учиться интегрировать внешние API, работать с RAG, LangGraph, CrewAI и деплоить всё это так, чтобы работало как часы.
Стартуем завтра. Для участия и доступа к программе переходите по ссылке.
Запустите своё приложение с
-XX:+PrintFlagsFinal, и вы увидите все настройки JVM.🔹 Зачем это нужно
— Показывает финальные значения всех JVM-флагов после применения эргономики, дефолтов и ваших переопределений.
— Полезно для Java-сервисов в контейнерах: вы думаете, что выставили -Xmx512m, а JVM видит 4GB хоста и живёт своей жизнью.
— Мгновенно отвечает на вопрос «а почему heap такой большой?».
— Работает на любом JDK без агентов, плагинов и прав суперпользователя.
🔹 Как использовать
— Дамп всех флагов при старте:
java -XX:+PrintFlagsFinal -version
— Только интересующее фильтруем через grep:
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i heapsize
— Посмотреть, какой GC выбрала эргономика:
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i "use.*gc"
— На живом процессе без рестарта:
jcmd <pid> VM.flags
jcmd <pid> VM.flags — особенно удобен в проде: не надо убивать процесс, видите текущее состояние прямо сейчас.
══════ Навигация ══════
Вакансии • Задачи • Собесы
#Enterprise
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18💯4👍3
⚡️ Мы рады представить команду экспертов курса AgentOps!
— Дмитрий Антипов расскажет, как грамотно проверить работу AI-моделей
— Курилл Кухарев поделится, почему компаниям выгодно использовать локальные модели и как их развернуть
— Андрей Носов расскажет, как работать с данными и знаниями в AI-системах: построение RAG, выбор подходов к поиску и организация хранения данных
— Антон Будняк разберет, как обеспечить устойчивость сервиса, в котором используется ИИ
— Александр Ошурков расскажет, как оценивать качество работы LLM в backend-сервисах
— Екатерина Трофимов разберет, как проектировать инструменты для AI-агентов и выстраивать взаимодействие с внешними сервисами
Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса.
К концу обучения вы получите:
• Структурированный подход к архитектуре и деплою AI-агентов
• Навыки настройки мониторинга, тестирования и контроля расходов на токены
• Разбор сложных инженерных кейсов из реальной практики
🎁 Доступ к материалам курса «Разработка ИИ-агентов» в подарок при покупке Инженерного трека
👉 Все подробности и программа обучения.
— Дмитрий Антипов расскажет, как грамотно проверить работу AI-моделей
— Курилл Кухарев поделится, почему компаниям выгодно использовать локальные модели и как их развернуть
— Андрей Носов расскажет, как работать с данными и знаниями в AI-системах: построение RAG, выбор подходов к поиску и организация хранения данных
— Антон Будняк разберет, как обеспечить устойчивость сервиса, в котором используется ИИ
— Александр Ошурков расскажет, как оценивать качество работы LLM в backend-сервисах
— Екатерина Трофимов разберет, как проектировать инструменты для AI-агентов и выстраивать взаимодействие с внешними сервисами
Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса.
К концу обучения вы получите:
• Структурированный подход к архитектуре и деплою AI-агентов
• Навыки настройки мониторинга, тестирования и контроля расходов на токены
• Разбор сложных инженерных кейсов из реальной практики
🎁 Доступ к материалам курса «Разработка ИИ-агентов» в подарок при покупке Инженерного трека
Please open Telegram to view this post
VIEW IN TELEGRAM