Чек-лист: эффективная работа с многопоточностью
Держите под рукой этот чек-лист, чтобы избежать проблем с многопоточностью и повысить производительность кода:
🟢 Синхронизация
✓ Избегайте synchronized для долгих операций
✓ Используйте ReentrantLock для гибкой блокировки
✓ Следите за возможностью deadlock
🟢 Исполнители (Executors)
✓ FixedThreadPool подходит, когда количество потоков заранее известно и ограничено
✓ CachedThreadPool динамически создает потоки, но может привести к их неконтролируемому росту
✓ ForkJoinPool для задач, разбиваемых на подзадачи
🟢 Коллекции и очереди
✓ ConcurrentHashMap потокобезопасная альтернатива HashMap, но не подходит для сценариев с частыми изменениями
✓ BlockingQueue для потокобезопасных очередей
✓ CopyOnWriteArrayList хорош при редких изменениях списка, но ⚠️ медленный при частых модификациях (из-за копирования)
🟢 Работа с Future & CompletableFuture
✓ Используйте CompletableFuture для асинхронных операций вместо Future
✓ thenApply() и thenCompose() позволяют строить цепочки вызовов без блокировки
✓ exceptionally() для обработка ошибок без использования try-catch в коде
Автоматизируйте проверку кода с помощью FindBugs, SonarQube и Checkstyle.
❓ Какие задачи на проекте решаете с помощью многопоточки?
Подписывайся на наш канал в Max🟪
Держите под рукой этот чек-лист, чтобы избежать проблем с многопоточностью и повысить производительность кода:
✓ Избегайте synchronized для долгих операций
✓ Используйте ReentrantLock для гибкой блокировки
✓ Следите за возможностью deadlock
✓ FixedThreadPool подходит, когда количество потоков заранее известно и ограничено
✓ CachedThreadPool динамически создает потоки, но может привести к их неконтролируемому росту
✓ ForkJoinPool для задач, разбиваемых на подзадачи
✓ ConcurrentHashMap потокобезопасная альтернатива HashMap, но не подходит для сценариев с частыми изменениями
✓ BlockingQueue для потокобезопасных очередей
✓ CopyOnWriteArrayList хорош при редких изменениях списка, но ⚠️ медленный при частых модификациях (из-за копирования)
✓ Используйте CompletableFuture для асинхронных операций вместо Future
✓ thenApply() и thenCompose() позволяют строить цепочки вызовов без блокировки
✓ exceptionally() для обработка ошибок без использования try-catch в коде
Автоматизируйте проверку кода с помощью FindBugs, SonarQube и Checkstyle.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2
Работаете с PostgreSQL и хотите забыть про простои и потери данных? 🤔
Не хотите оказаться в ситуации “руками переключать мастера” в 3 ночи?
Этот практикум OTUS для вас! 6 ноября в 20:00 - бесплатно по записи.
Разберем вместе с Senior Developer Unlimint:
Как устроен Patroni и почему его выбирают для High Availability
Как настроить кластеры Postgres, чтобы пережить любой фейловер без паники Демонстрация настройки кластера — всё покажем на живых примерах
Как избежать split-brain, не “запилить” себе геморроя с Etcd/Consul
Что мониторить, как обновлять, как спасать кластер после сбоев
Только живой разбор, без воды и маркетингового бла-бла.
Спикер: Андрей Поляков, Senior Developer в Unlimint
🎁Бонусы для участников:
Скидка 7% на любой курс OTUS
Видео-разбор: Мониторинг в highload-проектах
Чек-лист: 5 частых ошибок в отказоустойчивых хранилищах
Запишись сейчас — чтобы не искать решение в 3 часа ночи, когда что-то пойдет не так. Увидимся на эфире: https://tglink.io/fdd0de15fa18
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFH6UaHv
Не хотите оказаться в ситуации “руками переключать мастера” в 3 ночи?
Этот практикум OTUS для вас! 6 ноября в 20:00 - бесплатно по записи.
Разберем вместе с Senior Developer Unlimint:
Как устроен Patroni и почему его выбирают для High Availability
Как настроить кластеры Postgres, чтобы пережить любой фейловер без паники Демонстрация настройки кластера — всё покажем на живых примерах
Как избежать split-brain, не “запилить” себе геморроя с Etcd/Consul
Что мониторить, как обновлять, как спасать кластер после сбоев
Только живой разбор, без воды и маркетингового бла-бла.
Спикер: Андрей Поляков, Senior Developer в Unlimint
🎁Бонусы для участников:
Скидка 7% на любой курс OTUS
Видео-разбор: Мониторинг в highload-проектах
Чек-лист: 5 частых ошибок в отказоустойчивых хранилищах
Запишись сейчас — чтобы не искать решение в 3 часа ночи, когда что-то пойдет не так. Увидимся на эфире: https://tglink.io/fdd0de15fa18
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFH6UaHv
❤3👍2🔥2
📚 Java & Related Concepts — полный гайд по Java-экосистеме. Этот репозиторий представляет собой целую энциклопедию для Java-разработчиков. Автор структурировал материал от основ языка до продвинутых тем: многопоточность, проектирование систем, алгоритмы и даже Kotlin с Android-разработкой.
Проект имеет полезные разделы с примерами кода: от классических паттернов вроде Singleton до задач на динамическое программирование. Для тех, кто готовится к собеседованиям, есть подборка LeetCode-шаблонов и реальных interview-задач.
🖥 GitHub
Подписывайся на наш канал в Max🟪
Проект имеет полезные разделы с примерами кода: от классических паттернов вроде Singleton до задач на динамическое программирование. Для тех, кто готовится к собеседованиям, есть подборка LeetCode-шаблонов и реальных interview-задач.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4❤1
Безопасность — базовая вещь. Spring Security по умолчанию кидает вас в дефолтную форму логина. Но в реальности — нужна своя, кастомная.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/login", "/css/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(form -> form
.loginPage("/login")
.defaultSuccessUrl("/dashboard", true)
.permitAll()
)
.logout(logout -> logout
.logoutSuccessUrl("/login?logout")
);
return http.build();
}
@Bean
public UserDetailsService userDetailsService() {
var user = User.withUsername("admin")
.password("{noop}admin123") // Для простоты, без шифрования
.roles("ADMIN")
.build();
return new InMemoryUserDetailsManager(user);
}
}
src/main/resources/templates/login.html (если используете Thymeleaf):
<!DOCTYPE html>
<html>
<head><noscript>Login</noscript></head>
<body>
<h2>Login</h2>
<form method="post" action="/login">
<label>Username: <input type="text" name="username" /></label><br/>
<label>Password: <input type="password" name="password" /></label><br/>
<button type="submit">Login</button>
</form>
</body>
</html>
@RestController
public class DashboardController {
@GetMapping("/dashboard")
public String dashboard() {
return "Welcome to the dashboard!";
}
}
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍6🔥5
⚡Открытая трансляция главного зала HighLoad++ 2025!
🖐️ Подключайтесь и слушайте доклады от спикеров MTС Web Services (MWS), VK Tech, Яндекса, Т-Банка, СберТеха и других компаний.
HighLoad++ 2025 — это конференция, которая определяет будущее высоконагруженных систем.
📍6 и 7 ноября все желающие могут бесплатно посмотреть онлайн-трансляцию главного зала. Открытую трансляцию мы организовали совместно с генеральным партнером конференции — МТС Web Services (MWS).
МТС Web Services (MWS) — бигтех-компания, предоставляющая облачные и Al-сервисы, а также платформенные решения под задачи бизнеса: от работы с данными до разработки продуктов и оптимизации бизнес-процессов.
Как всегда, в главном зале — топовые эксперты и самые актуальные темы.
✅ Подробности и расписание на сайте
🖐️ Подключайтесь и слушайте доклады от спикеров MTС Web Services (MWS), VK Tech, Яндекса, Т-Банка, СберТеха и других компаний.
HighLoad++ 2025 — это конференция, которая определяет будущее высоконагруженных систем.
📍6 и 7 ноября все желающие могут бесплатно посмотреть онлайн-трансляцию главного зала. Открытую трансляцию мы организовали совместно с генеральным партнером конференции — МТС Web Services (MWS).
МТС Web Services (MWS) — бигтех-компания, предоставляющая облачные и Al-сервисы, а также платформенные решения под задачи бизнеса: от работы с данными до разработки продуктов и оптимизации бизнес-процессов.
Как всегда, в главном зале — топовые эксперты и самые актуальные темы.
✅ Подробности и расписание на сайте
❤3👍2🔥2
Поработать с Kafka или RabbitMQ, но нет времени вникать в тонкости конфигурации и шаблонного кода? AI справится с этим за секунды — с учётом лучших практик и особенностей выбранного брокера.
📝 Промпт:
Generate a Spring Boot service that integrates with [Kafka/RabbitMQ] to handle asynchronous message processing for [описание бизнес-задачи].
Include configuration, producer, and consumer code.
Ensure reliability with retry mechanisms, message acknowledgment, and error handling.
Use Spring Cloud Stream or native client APIs. Explain architectural choices and trade-offs.
— Добавьте
Dead Letter Queue (DLQ) для обработки неуспешных сообщений— Настройте
observability (Micrometer + Prometheus/Grafana) для мониторинга очередейПодписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2
🎥 Открытый урок «Наблюдаемость микросервиса: метрики + Prometheus/Grafana».
🗓 11 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced».
Что будет на вебинаре:
✔️ Полезные метрики для микросервисов: технические и продуктовые; типовые анти-метрики.
✔️ Интеграция Spring Actuator/Micrometer и экспорт /actuator/prometheus.
✔️ Сбор в Prometheus: таргеты, ретенция, базовые правила алертинга.
✔️ Дашборды «для разработчика» в Grafana: структура панелей, аннотации, drill-down.
В результате вебинара вы:
- Сможете выделять действительно важные метрики, подключить Actuator/Micrometer, настроить сбор в Prometheus и собрать базовый дашборд в Grafana.
Кому будет интересно:
Java backend-разработчикам, DevOps/SRE и инженерам, отвечающим за эксплуатацию микросервисов.
🔗 Ссылка на регистрацию: https://vk.cc/cR2r3Q
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🗓 11 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced».
Что будет на вебинаре:
В результате вебинара вы:
- Сможете выделять действительно важные метрики, подключить Actuator/Micrometer, настроить сбор в Prometheus и собрать базовый дашборд в Grafana.
Кому будет интересно:
Java backend-разработчикам, DevOps/SRE и инженерам, отвечающим за эксплуатацию микросервисов.
🔗 Ссылка на регистрацию: https://vk.cc/cR2r3Q
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2
Работаете в большом Java-проекте и боитесь, что при переименовании метода или переменной что-то сломаете? IntelliJ IDEA умеет безопасно и быстро переименовывать элементы кода с помощью Shift + F6.
— Вместо ручного поиска и замены по всему проекту IDEA обновит все ссылки на метод, переменную или класс автоматически.
— Переименование учитывает контекст — не затронет одноимённые элементы в других частях кода.
— Работает со всеми элементами: методами, классами, переменными, параметрами и даже с ресурсами.
— Наведите курсор на имя метода, класса или переменной, которую хотите переименовать.
— Нажмите Shift + F6.
— Введите новое имя. IDEA покажет, где будет произведено переименование.
— Подтвердите и все ссылки обновятся мгновенно.
Очень удобно, когда нужно быстро рефакторить код, не опасаясь сломать логику, особенно в крупных проектах с множеством взаимосвязей.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍10🔥4⚡1😁1
OpenAPI + Spring: ускоряем разработку и повышаем качество API
Разработка REST API — рутинная? Только если без OpenAPI. Узнайте, как избавиться от ручной синхронизации между фронтом, бэком и тестами.
На вебинаре разберём:
• зачем нужна OpenAPI-спецификация и как с ней жить удобно;
• генерацию кода и документации;
• интеграцию OpenAPI в Spring-приложение;
• советы по масштабируемости и поддержке API.
После вебинара вы сможете:
— быстро внедрить OpenAPI в свой проект;
— сократить ошибки на стыке команд;
— улучшить поддержку и документирование микросервисов.
12 ноября в 20:00 открытый урок проходит в преддверие старта курса «Разработчик на Spring Framework». Все участники получат скидку на обучение.
👉 Регистрация бесплатная, но количество мест ограничено — успей занять своё место:
https://vk.cc/cR6vHU
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Разработка REST API — рутинная? Только если без OpenAPI. Узнайте, как избавиться от ручной синхронизации между фронтом, бэком и тестами.
На вебинаре разберём:
• зачем нужна OpenAPI-спецификация и как с ней жить удобно;
• генерацию кода и документации;
• интеграцию OpenAPI в Spring-приложение;
• советы по масштабируемости и поддержке API.
После вебинара вы сможете:
— быстро внедрить OpenAPI в свой проект;
— сократить ошибки на стыке команд;
— улучшить поддержку и документирование микросервисов.
12 ноября в 20:00 открытый урок проходит в преддверие старта курса «Разработчик на Spring Framework». Все участники получат скидку на обучение.
👉 Регистрация бесплатная, но количество мест ограничено — успей занять своё место:
https://vk.cc/cR6vHU
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍5🔥5❤3
—
curl -Ls https://sh.jbang.dev | bash -s - app setupJBang позволяет интерактивно с Java из командной строки и очень быстро писать простые сценарии
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍7🔥4
Более чем за десять лет работы со Spring Framework и Enterprise Java автор успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
Всё это из-за того, что магия фреймворков иногда ломается, и делает это очень неочевидно.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
VK Видео
Когда ломается магия фреймворков...
Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности. Всё это…
👍7🔥3❤2
Знаете, в чём самая частая ловушка автоматизации?
Слить ресурсы в “идеальный” фреймворк, который годами будет поддерживать один энтузиаст, а ценности почти не даст.
Второй сценарий — пытаться всё автоматизировать вручную, игнорируя современные инструменты на базе ИИ, и внезапно оказаться в хвосте “конвейера тестов”.
Хотите выбраться из этого круга?
👨💻13 ноября в 20:00 собираемся на Практикум! Спикер: Павел Балахонов, 15+ лет автоматизации.
Узнаем:
— Что реально даёт платформа управления автотестами с ИИ, а где скрыты грабли.
— Когда “универсальный фреймворк” превращается в долгострой и почему ИИ — не просто модный хайп, а must-have в современных проектах.
Обсудим:
— Как не слить ресурсы в “универсальный” фреймворк без профита
— Почему платформа автотестирования = гибкость, а не компромисс
— Как реально внедрять ИИ: практика и подводные камни
— Почему распределение автотестов по потокам — это новый “золотой стандарт”
— И бонус — где платформы с ИИ реально экономят время команды
🎁Бонусы для всех участников:
7% скидка на любой курс OTUS
Настольный гайд: “Использование базовых команд Docker CLI”
Подборка musy-have уроков для middle+ QA
Дата: 13 ноября, 20:00
Ограниченное количество мест - успейте: https://tglink.io/18f1391e96b7
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFHSjBVa
Слить ресурсы в “идеальный” фреймворк, который годами будет поддерживать один энтузиаст, а ценности почти не даст.
Второй сценарий — пытаться всё автоматизировать вручную, игнорируя современные инструменты на базе ИИ, и внезапно оказаться в хвосте “конвейера тестов”.
Хотите выбраться из этого круга?
👨💻13 ноября в 20:00 собираемся на Практикум! Спикер: Павел Балахонов, 15+ лет автоматизации.
Узнаем:
— Что реально даёт платформа управления автотестами с ИИ, а где скрыты грабли.
— Когда “универсальный фреймворк” превращается в долгострой и почему ИИ — не просто модный хайп, а must-have в современных проектах.
Обсудим:
— Как не слить ресурсы в “универсальный” фреймворк без профита
— Почему платформа автотестирования = гибкость, а не компромисс
— Как реально внедрять ИИ: практика и подводные камни
— Почему распределение автотестов по потокам — это новый “золотой стандарт”
— И бонус — где платформы с ИИ реально экономят время команды
🎁Бонусы для всех участников:
7% скидка на любой курс OTUS
Настольный гайд: “Использование базовых команд Docker CLI”
Подборка musy-have уроков для middle+ QA
Дата: 13 ноября, 20:00
Ограниченное количество мест - успейте: https://tglink.io/18f1391e96b7
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFHSjBVa
👍2🔥2❤1
Fastexcel
Это легкая и производительная библиотека Java для работы с файлами Excel. Она позволяет читать, создавать и модифицировать электронные таблицы XLSX, используя простой и понятный API.
Подписывайся на наш канал в Max🟪
Это легкая и производительная библиотека Java для работы с файлами Excel. Она позволяет читать, создавать и модифицировать электронные таблицы XLSX, используя простой и понятный API.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍6🔥2
Приглашаем на открытый урок.
🗓 20 ноября в 19:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».
Программа вебинара:
Вебинар будет полезен:
Бэкенд-разработчикам на Kotlin, тимлидам и всем, кто хочет писать более чистый и поддерживаемый код.
В результате вебинара:
Научитесь создавать собственные DSL и применять их при разработке
🔗 Ссылка на регистрацию: https://vk.cc/cR9yrX
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🔥2
Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
Таким образом, исходя из факта, что
Подписывайся на наш канал в Max🟪
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).Таким образом, исходя из факта, что
FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1🔥1
ConnectBot — это клиент Secure Shell для Android, позволяющий подключаться к удаленным серверам по криптографически защищенному каналу.
ConnectBot удобнее всего использовать в Android Studio.
Быстрый старт с Docker и Jenkins CI:
docker run -it -v $(pwd):/workspace \
-v jenkinsfile-runner-cache:/var/jenkinsfile-runner-cache \
-v jenkinsfile-runner:/var/jenkinsfile-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):$(which docker) \
-e ANDROID_ADB_SERVER_ADDRESS=host.docker.internal \
jenkins/jenkinsfile-runner
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2❤1
Java-разработчики, у вас спрашивали про DDD на собеседовании?
А вы не знали, что ответить — кроме «ну это про бизнес-логику»?
Пора закрыть пробелы.
На практическом курсе по DDD и архитектуре микросервисов для Java-разработчиков вы:
✅ Соберёте сервис «Диспетчеризации заказов» с нуля
✅ Реализуете Aggregate, Value Object, Domain Service
✅ Освоите Clean Architecture, gRPC, Kafka, CQS
✅ Получите проект в портфолио — и уверенность в собеседованиях
👨🏫 Курс ведёт Кирилл Ветчинкин — действующий архитектор в Авито, ex-Staff Engineer в Купер, работает с 2019 года.
Всё на Java — никакого отрыва от вашей среды.
12 модулей, 6 недель практики, ревью от эксперта и живые эфиры.
Уже более 350 разработчиков прошли — теперь очередь за вами.
🔗 Записаться на курс https://microarch.ru/courses/ddd/languages/java?utm_source=posev&utm_medium=erid:2VtzqvCf2zB&utm_campaign=7
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqvCf2zB
А вы не знали, что ответить — кроме «ну это про бизнес-логику»?
Пора закрыть пробелы.
На практическом курсе по DDD и архитектуре микросервисов для Java-разработчиков вы:
✅ Соберёте сервис «Диспетчеризации заказов» с нуля
✅ Реализуете Aggregate, Value Object, Domain Service
✅ Освоите Clean Architecture, gRPC, Kafka, CQS
✅ Получите проект в портфолио — и уверенность в собеседованиях
👨🏫 Курс ведёт Кирилл Ветчинкин — действующий архитектор в Авито, ex-Staff Engineer в Купер, работает с 2019 года.
Всё на Java — никакого отрыва от вашей среды.
12 модулей, 6 недель практики, ревью от эксперта и живые эфиры.
Уже более 350 разработчиков прошли — теперь очередь за вами.
🔗 Записаться на курс https://microarch.ru/courses/ddd/languages/java?utm_source=posev&utm_medium=erid:2VtzqvCf2zB&utm_campaign=7
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqvCf2zB
🔥2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
10 важнейших компонентов веб-приложения
1. CI/CD pipelines: Все начинается с непрерывной интеграции и доставки (Jenkins, GitHub).
2. Запросы пользователей: После разрешения DNS запросы поступают на сервера.
3. Балансировщики: Равномерно распределяют запросы между серверами (Nginx, HAProxy).
4. CDN: Запросы могут обслуживаться через сеть доставки контента.
5. API: Веб-приложение взаимодействует с бекендами через API.
6. Базы данных и кэши: Бекенды взаимодействуют с базами данных или кэшами для получения данных.
7. Очереди задач: Большие задачи отправляются на воркеры с помощью очередей.
8. Поисковые службы: Поиск поддерживается службами полнотекстового поиска (Elasticsearch, Apache Solr).
9. Мониторинг и логирование: Хранение логов помогает анализировать данные, чтобы убедиться, что все работает исправно (Sentry, Grafana, Prometheus).
10. Службы оповещения: Уведомляют разработчиков о проблемах для быстрого реагирования.
💬 Какие еще компоненты вы добавили бы в архитектуру производственного веб-приложения?
Подписывайся на наш канал в Max🟪
1. CI/CD pipelines: Все начинается с непрерывной интеграции и доставки (Jenkins, GitHub).
2. Запросы пользователей: После разрешения DNS запросы поступают на сервера.
3. Балансировщики: Равномерно распределяют запросы между серверами (Nginx, HAProxy).
4. CDN: Запросы могут обслуживаться через сеть доставки контента.
5. API: Веб-приложение взаимодействует с бекендами через API.
6. Базы данных и кэши: Бекенды взаимодействуют с базами данных или кэшами для получения данных.
7. Очереди задач: Большие задачи отправляются на воркеры с помощью очередей.
8. Поисковые службы: Поиск поддерживается службами полнотекстового поиска (Elasticsearch, Apache Solr).
9. Мониторинг и логирование: Хранение логов помогает анализировать данные, чтобы убедиться, что все работает исправно (Sentry, Grafana, Prometheus).
10. Службы оповещения: Уведомляют разработчиков о проблемах для быстрого реагирования.
💬 Какие еще компоненты вы добавили бы в архитектуру производственного веб-приложения?
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5🔥4
Маркерный интерфейс — это интерфейс, который не содержит ни одного метода.
Он используется для пометки классов, чтобы указать на определенные свойства или функциональность, которые могут быть использованы во время выполнения программы.
Подписывайся на наш канал в Max🟪
Он используется для пометки классов, чтобы указать на определенные свойства или функциональность, которые могут быть использованы во время выполнения программы.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤5🔥2