Как устроена инфраструктура в ваших проектах
Что проверяют
Работали ли вы с тем, что происходит с кодом после git push, или видели только свою часть. Интервьюер хочет услышать путь сервиса от коммита до прода и понять, где вы участвовали сами. Следом обычно спрашивают, что было, когда сервис падал ночью, и как вы это заметили.
Как отвечать
Рассказывайте про свой реальный проект, по цепочке, и отмечайте, что делали лично:
- сборка: Maven или Gradle, тесты на этапе сборки, артефакт это fat jar Spring Boot или сразу образ через Jib либо
bootBuildImage; - CI/CD: GitLab CI, Jenkins или GitHub Actions, стадии build, test, проверка зависимостей на уязвимости, публикация образа в registry, выкатка по окружениям;
- запуск: Docker и Kubernetes, манифесты через Helm или Kustomize, probes на
/actuator/health/livenessи/actuator/health/readiness; - конфигурация:
application.ymlпо профилям, ConfigMap и Secret, секреты в Vault, реже Spring Cloud Config; - наблюдаемость: метрики через Micrometer в Prometheus и Grafana, логи в ELK или Loki, трассировка через OpenTelemetry;
- данные: PostgreSQL, миграции Flyway или Liquibase, Kafka или RabbitMQ, Redis для кэша.
Плюс, если скажете про JVM в контейнере: современные JDK видят лимиты cgroup, а кучу задают через -XX:MaxRAMPercentage, а не жёстким -Xmx.
Нужны свои цифры: сколько сервисов, как часто релизы, сколько идёт пайплайн. Если инфраструктурой занимались DevOps, так и скажите: «пайплайн настраивала платформенная команда, я писал Dockerfile, Helm values и алерты своего сервиса». Это честный ответ.
Где спотыкаются
Перечисляют модные слова без связей: Kubernetes, Kafka, ELK. Первый же вопрос «как сервис получает пароль от базы» ставит такой ответ в тупик.
Рассказывают идеальную схему из статьи, а не свой проект. Интервьюер быстро находит расхождения, например, вы упомянули blue-green, но не можете объяснить, как переключался трафик.
Не знают, как их сервис ведёт себя при выкатке: есть ли graceful shutdown (в свежих версиях Spring Boot он включён по умолчанию, в старых задаётся server.shutdown=graceful), чем отличаются liveness и readiness и что будет, если миграция базы упадёт посреди релиза.