Kora облачно ориентированный серверный фреймворк написанный на Java для написания Java / Kotlin приложений с упором на производительность, эффективность, прозрачность сделанный разработчиками Т-Банк / Тинькофф

Kora is a cloud-oriented server-side Java framework for writing Java / Kotlin applications with a focus on performance, efficiency and transparency made by T-Bank / Tinkoff developers

Главная

Kora - это Java фреймворк общего назначения для написания серверных Java или Kotlin приложений с упором на Производительность, Эффективность, Прозрачность, Простоту. Kora стремится предоставить достаточно высокоуровневые и простые декларативные инструменты, тонкие и знакомые высокоуровневые абстракции для разработчиков, которые на этапе компиляции преобразуются в производительный для железа и понятный для человека код. Оба языка программирования поддерживаются равнозначно.

Фреймворк написан на Java и имеет свой собственный контейнер зависимостей с инверсией управления который работает на этапе компиляции. Kora является облачно ориентированным фреймворком и предлагает множество различных модулей для быстрого создания приложений такие как HTTP сервер, Kafka потребители, абстракция над базой данных в виде репозиториев, телеметрию всех модулей, отказоустойчивость и многое другое.

Производительность - Kora подразумевает создание сопутствующего высокопроизводительного кода на этапе компиляции, отказ от использования Reflection API во время работы, отказ от динамических прокси, предлагает тонкие абстракции, бесплатные аспекты, только максимально эффективные реализации модулей, все это ведет к высокой производительности приложения, низкому времени ответа и возможности обрабатывать большое количество запросов в секунду.

Эффективность - Вышеописанные факторы и факт того что контейнер зависимостей создается на этапе компиляции и инициализируется максимально параллельно, позволяют достигнуть низкого времени старта. Эти факторы позволяют эффективно использовать практики горизонтального масштабирования и максимально утилизировать ресурсы не только в рамках приложения, но и в рамках всего кластера. Kora подразумевает ровно одно наиболее эффективное решение на одну проблему, использует и поощряет подходы направляющие разработчика писать понятный и эффективный код. Это дает эффективность работы всей команды разработки и позволяет выгружать контекст из головы разработчика в понятный код который легко писать, а впоследствии читать и поддерживать.

Прозрачность - Создание читаемого исходного кода во время компиляции, в купе с тонкими абстракциями и бесплатными аспектами ведет к высокой читаемости кода и понимания основных механизмов работы фреймворка со стороны разработчика если требуется. Отсутствие эффекта черного ящика где не требуется ни магия вуду ни потрошители, высокая читаемость, одно решение на одну проблему, знакомые высокоуровневые абстракции, все это дает прозрачность в понимании кодовой базы со стороны всей команды разработки и позволяет легко погружать в проект новых разработчиков, в особенности стажеров. Контейнер зависимостей проверяется на этапе компиляции и имеет совместимость с GraalVM из коробки.

Простота - Прозрачность кода, которую предоставляет Kora вкупе с простыми и понятными абстракциями и подходами, позволяет легко осваивать инструмент разработки без необходимости разработчикам заучивать годами "кишки и тонкости работы с фреймворком". Kora не предполагает сложных конструкций или абстракций, а наоборот поощряет использовать маленькие и простые кубики абстракции для решения небольших задач. Впоследствии совокупность таких простых кубиков, позволяет в итоге решать большие сложные задачи, но и не представляет сложности в понимании по если смотреть на них по отдельности, не создавая излишнюю умственную нагрузку на разработчика.

Kora предоставляет все необходимые для современной Java или Kotlin серверной разработки инструменты:

  • Внедрение и инверсию зависимостей посредствам аннотаций
  • Достаточно высокоуровневые простые абстракции и инструменты разработки
  • Аспектно-ориентированное программирование посредствам аннотаций
  • Большой набор пред-сконфигурированных интеграций
  • Трассировка и метрики по OpenTelemetry стандарту и логирование всех модулей
  • Легкое и быстрое тестирование с помощью JUnit5
  • Простая и подробная документация подкрепленная примерами рабочих сервисов