Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 412новых вакансий за сутки·55 411вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 671
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 396 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 728
  • Облачные технологии6 606
  • QA вакансии2 165
  • Android1 317
  • Инженер данных878
  • Продакт-менеджер314

Разработка

  • iOS1 229
  • Backend вакансии1 210
  • AI вакансии545
  • Fullstack вакансии500
  • Frontend вакансии422
  • Mobile вакансии28

По стеку

  • Go5 192
  • Java3 112
  • Kotlin1 085
  • Node.js992
  • Rust846
  • .NET660
  • PHP319
  • C++266
  • C#208

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

  • Kubernetes3 904
  • Linux-инфраструктура2 843
  • DevOps вакансии2 684
  • Terraform / IaC2 162
  • Мониторинг и Observability1 062
  • CI/CD921
  • SRE303
  • Кибербезопасность31

Аналитика и данные

  • Аналитик данных537
  • Data Scientist445
  • Бизнес-аналитик402
  • Системный аналитик68

Другие направления

  • Проджект-менеджер103
  • UI/UX дизайн70
  • Ручное тестирование14

По регионам

  • Вакансии в США26 186
  • Вакансии в Европе10 369
  • Работа в России3 628
  • Вакансии в Канаде2 306

По формату

  • Удалённые вакансии43 484
  • Релокация в США26 186
  • Гибридная работа5 597
  • Офисная работа4 383

По уровню

  • Senior вакансии22 724
  • Middle вакансии11 726
  • Junior вакансии3 874

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise186 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen26 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме Spring BootВсе вопросы
Spring BootMiddleТеория

Что такое Spring Boot Actuator и какие endpoint'ы он открывает по умолчанию?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Spring Boot Actuator добавляет HTTP-эндпоинты для мониторинга: /actuator/health и /actuator/info открыты по умолчанию, остальные (metrics, env, loggers, threaddump, heapdump) нужно явно разрешить через management.endpoints.web.exposure.include.

Что такое Spring Boot Actuator

Spring Boot Actuator — модуль, который встраивает в приложение набор HTTP-эндпоинтов для мониторинга, диагностики и управления без написания дополнительного кода. Actuator работает поверх стандартного Spring MVC или WebFlux и маршрутизирует эндпоинты через отдельный порт или префикс /actuator.

Зависимость добавляется одной строкой:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Эндпоинты по умолчанию

После подключения зависимости Actuator регистрирует около 20 эндпоинтов, но наружу (web exposure) по умолчанию открыты только два:

  • /actuator/health — агрегированный статус приложения: UP / DOWN / OUT_OF_SERVICE. Включает sub-indicators (DB, Redis, Disk).
  • /actuator/info — произвольные метаданные из management.info.* или META-INF/build-info.properties.

Остальные эндпоинты включены (enabled=true), но не экспонированы через HTTP. Это разграничение между enabled и exposed — ключевая деталь, которую проверяют на собеседованиях.

Расширение exposure

Конфигурация через application.yml:

management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,loggers,env,threaddump,heapdump
        # или include: "*" — открыть все (только за фаерволом!)
  endpoint:
    health:
      show-details: always   # показывать sub-indicators без авторизации
  server:
    port: 8081               # вынести Actuator на отдельный порт

Реальный пример: кастомный HealthIndicator

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;

@Component
public class ExternalApiHealthIndicator implements HealthIndicator {

    private final ExternalApiClient client;

    public ExternalApiHealthIndicator(ExternalApiClient client) {
        this.client = client;
    }

    @Override
    public Health health() {
        try {
            boolean ok = client.ping(); // реальный HTTP-вызов
            return ok
                ? Health.up().withDetail("latency", client.lastLatencyMs()).build()
                : Health.down().withDetail("reason", "ping returned false").build();
        } catch (Exception ex) {
            return Health.down(ex).build();
        }
    }
}

Результат в /actuator/health:

{
  "status": "UP",
  "components": {
    "externalApi": {
      "status": "UP",
      "details": { "latency": 42 }
    },
    "db": { "status": "UP" },
    "diskSpace": { "status": "UP" }
  }
}

Пример: изменение уровня логирования в runtime

# Получить текущий уровень
curl http://localhost:8080/actuator/loggers/com.example.service

# Установить DEBUG без перезапуска
curl -X POST http://localhost:8080/actuator/loggers/com.example.service \
     -H 'Content-Type: application/json' \
     -d '{"configuredLevel": "DEBUG"}'

Защита эндпоинтов через Spring Security

@Bean
public SecurityFilterChain actuatorSecurity(HttpSecurity http) throws Exception {
    http
        .securityMatcher("/actuator/**")
        .authorizeHttpRequests(auth -> auth
            .requestMatchers("/actuator/health", "/actuator/info").permitAll()
            .anyRequest().hasRole("ADMIN")
        )
        .httpBasic(Customizer.withDefaults());
    return http.build();
}

Подводные камни

  • include: "*" в продакшене без фаервола — открывает /actuator/env (переменные окружения с паролями), /actuator/heapdump (дамп кучи), /actuator/shutdown (остановка приложения). Это реальный вектор атаки.
  • show-details: always без авторизации — /actuator/health начинает возвращать внутренние IP-адреса БД, имена хостов Redis и другие данные, полезные атакующему.
  • Путаница enabled vs exposed — эндпоинт может быть enabled=true, но не экспонирован через web. management.endpoint.shutdown.enabled=true сам по себе не открывает /actuator/shutdown снаружи без добавления в exposure.include.
  • Actuator на том же порту, что и приложение — если nginx проксирует 443→8080, а Actuator тоже на 8080, он доступен извне. Выносить на отдельный порт (management.server.port=8081) и не пробрасывать его через nginx — стандартная практика.
  • heapdump и threaddump весят сотни мегабайт — запросы к этим эндпоинтам под нагрузкой могут вызвать GC-паузу или OOM. Их следует ограничивать по IP или отключать в продакшене.
  • Кастомные HealthIndicator синхронные по умолчанию — если внешний сервис тормозит, health-check блокирует поток. Для реактивных приложений нужно реализовывать ReactiveHealthIndicator.
  • Метрики Micrometer не бесплатны — каждый тег (URI, метод, статус) создаёт отдельную временну́ю серию. Высококардинальные теги (user_id, request_id) приводят к memory leak в Prometheus/InfluxDB.
  • /actuator/info пуст без конфигурации — новички ожидают автоматических данных, но без spring-boot-maven-plugin с build-info goal или явных management.info.* свойств эндпоинт возвращает пустой объект.

Типичные ошибки

  • Путать термин «actuator endpoints» с соседним механизмом Spring Boot.
  • Не называть границу lifecycle, transaction, thread или request для «actuator endpoints».
  • Игнорировать production-эффекты «actuator endpoints»: latency, SQL shape, memory, security или observability.

Что проверяет интервьюер

  • Попросить объяснить механизм «actuator endpoints» на минимальном примере.
  • Проверить, видит ли кандидат failure mode и диагностику для «actuator endpoints».
  • Уточнить, какие настройки или API меняют «actuator endpoints» в реальном сервисе.

Как вы знаете этот вопрос?

Проверить себя по теме Spring Boot →

Источники

  • https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
←Предыдущий вопросКак работает авто-конфигурация Spring Boot?Следующий вопрос→Как защитить REST API на Spring Boot с помощью Spring Security?

Связанные темы

Spring Bootbackend-designtechnical-communication

Вакансии с этим навыком

  • Senior Java Software Engineer
  • CTO / Java Backend Developer
  • Backend-разработчик (Java/Kotlin)
  • IT Specialists: Cybersecurity, CPO, Java Backend Developer
  • Senior Software Engineer

Частые вопросы на собеседовании

  • Как реализовать health checks в Spring Boot Actuator?
  • Что делает аннотация @SpringBootApplication?
  • Что такое Spring Boot и чем он отличается от Spring Framework?
  • В каких backend-проектах Spring Boot является сильным выбором, а где лучше выбрать более простой или другой стек?