Make. Build. Break. Reflect.
908 subscribers
115 photos
1 video
119 links
Полезные советы, всратые истории, странные шутки и заметки на полях от @kruchkov_alexandr
Download Telegram
#kubernetes #java

Считаю, что java великолепный язык, но он не подходит для работы в Kubernetes из коробки.

- Долгий холодный старт *
Да, есть современные фреймворки типа Quarkus или Micronaut, но у них есть и свои другие минусы по сравнению со спрингбут. Экосистема крайне малая.
- Большое жорево ресурсов при старте, но потом кушает совсем немного (при малом рпс).
Отсюда сложности расчётов "да сколько тебе ставить реквестов?".
Поставишь мало - как юсадж - ещё медленнее будет стартовать, поставишь много - оверкоммит ресурсов и кластер впустую простаивает.
В 2025 может решаться через новые альфа фичи https://kubernetes.io/docs/concepts/workloads/autoscaling/#in-place-pod-vertical-scaling , но я сам руками ещё не пробовал.
- размеры имаджей для джавы больше остальных рантаймов (аргумент высосан из практики 2-3 летней давности, когда крутил на базе OpenJDK, сейчас может ок). Просто мнение, его можно не считать.
- realtime/driven-event в связке HPA/KEDA это не про джаву (см. первый пункт *)
- исключительно на мой взгляд всратый GC, который, к тому же, может вызывать спонтанные OOMирания
Говорят, что переход на GraalVM может решить проблему, но не могу контр аргументировать, не было опыта.
- без опыта с джавой и кубером для первого старта это боль подстроить все десятки параметров, от метаспейс до размера кучи. Ты вынужден изучить все параметры, чтоб это хоть как-то стартовало в кубере.
Когда опыт есть конечно ок, поставил нужные параметры и полетело. Одно из самых сложных как по мне.
- логи, стактрейсы это стыд на 99999 строчек, нужен ультравайд монитор поставить вертикально, чтобы уместить весь аутпут. Обязательно вскроются проблемы с тем, что в системе логировании этот стактрейс будет разбит на отдельные строки, а не в одном сообщении и надо подстраивать. Ну почему бы не сделать сразу и нормально, ну камон?
- сложности с graceful shutdown
Честно говоря не помню почему, может есть специфика, может баг, а может мои кривые руки(скорее всего🐒), но спрингбут срать хотел на сигтерм от кублета.
POD висит 30 секунд, спрингбут закрывает контекст, а юзеры уже видят 503.
Когда с ним работал, решал эту проблему через терминейшн период 60 секунд, но это вообще неудобно при деплое, он очень долгий становится.
- отвратительно неудобное профилирование и снятие дампов в случае траблшутинга
Несколько раз надо было понять почему память течёт, как барышни на концерте Моя Мишель, вообще неудобно было. Может сейчас с этим проще.

Люблю ли я джаву? Да.
Готова ли она из коробки* к куберу? Нет.

* с популярным фреймворком спрингбут

Всё вышенаписанное не является истиной, лишь мнение одного инженера из 8 миллиардов человек на планете.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133