Как стать автором
Обновить
18
0
Андрей Чернов @ChernovAF

Java Architect

Отправить сообщение

Spring Cloud Config и обновление компонентов в рантайме

Время на прочтение8 мин
Количество просмотров7.5K

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

На проекте используется spring boot 2.6.4 и kotlin 1.5.31. Также для конфигурации сервисов используется spring cloud config server, где в качестве backend используются Git + Vault.

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии6

Почему у CockroachDB меняют Open Source-лицензию

Время на прочтение6 мин
Количество просмотров9.9K
Прим. перев.: Гибкость и свободы, предлагаемые Open Source-лицензиями, позволили современным поставщикам крупных SaaS-решений поставить под большой вопрос успешность бизнеса у небольших компаний, стоящих за разработкой востребованных Open Source-проектов. В этой заметке от авторов CockroachDB — распределённой и отказоустойчивой РСУБД — в полной мере раскрывается суть проблемы и возможный путь её решения.



CockroachDB задумывалась как программное обеспечение с открытым кодом. В те годы, что прошли с момента появления проекта на GitHub (впервые код был опубликован в феврале 2014 года — прим. перев.), мы придерживались относительно типичного пути развития, балансируя между философией открытого исходного кода и созданием жизнеспособного бизнеса. Основной код выходил под лицензией Apache License 2 (APL), был запущен управляемый сервис, часть дополнений для компаний выпускалась под enterprise-лицензией.

Но наши прошлые представления о верной бизнес-модели основывались на ключевой норме OSS-мира: можно строить бизнес вокруг мощного Open Source-продукта, не предполагая, что придет более крупная технологическая компания, предлагающая тот же продукт как услугу. Эта норма больше не действует.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии17

Как мы обеспечиваем безопасность прикладных API с помощью Platform V Synapse

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.4K

Привет, Хабр! Я Наталья Грачева, владелец продукта в СберТехе, ведущий руководитель ИТ-направления. Мы с командой развиваем продукт Platform V Synapse — децентрализованную платформу для задач интеграции. Я расскажу, почему важно обеспечивать безопасность API прикладных решений и как мы помогаем командам разработки делать это самостоятельно, с помощью специального инструмента в составе нашего продукта.

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

Разгоняем Ignite в облачной инфраструктуре. Часть 1

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров2.8K

Привет, Хабр! На связи Дмитрий Пшевский @pshevskiy и Семен Попов @samansay, технические лидеры юнита Data в Сбере.

Уже более 6 лет мы заботимся о клиентских данных Сбера — храним, дедублицируем, стандартизируем, маркируем. А сегодня хотим поговорить о производительности сервисов при работе с Ignite или другой подобной системой из облачной инфраструктуры. Мы не будем рассматривать аспекты развертывания и оптимизации работы самого кластера и обсудим производительность сервисов именно на прикладном уровне. Расскажем про сложности перехода на микросервисную архитектуру, работу с толстым и тонким клиентом и отказ от транзакций. Эта статья — обзор нашего доклада на JPoint 2023.

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии7

CPU-лимиты и агрессивный троттлинг в Kubernetes

Время на прочтение8 мин
Количество просмотров38K
Прим. перев.: эта поучительная история Omio — европейского агрегатора путешествий — проводит читателей от базовой теории до увлекательных практических тонкостей в конфигурации Kubernetes. Знакомство с такими случаями помогает не только расширять кругозор, но и предотвращать нетривиальные проблемы.



Доводилось ли вам сталкиваться с тем, что приложение «застревало» на месте, переставало отвечать на запросы о проверке состояния (health check'и) и вы не могли понять причину такого поведения? Одно из возможных объяснений связано с лимитом квот на ресурсы CPU. О нем и пойдет речь в этой статье.

TL;DR:
Мы настоятельно рекомендуем отказаться от CPU limit'ов в Kubernetes (или отключить квоты CFS в Kubelet), если используется версия ядра Linux с ошибкой CFS-квот. В ядре имеется серьезный и хорошо известный баг, который приводит к избыточному троттлингу и задержкам
.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии3

Кэширование обмена данными между сервисами в Kubernetes и Istio

Время на прочтение7 мин
Количество просмотров3.4K

Команда Trendyol Platform разработала решение проблемы межмикросервисного кэширования в Kubernetes. Приводим перевод статьи, где она делится опытом и рассказывает о создании приложения Sidecache.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

finalize и Finalizer

Время на прочтение5 мин
Количество просмотров53K
Сегодня немного поэкспериментируем с методом finalize() и уничтожением объектов. Хотя даже начинающие Java-программисты примерно представляют, что finalize() вызывается, когда сборщик мусора решит уничтожить ваш объект, некоторые вещи могут всё-таки оказаться неожиданными. К примеру, зададимся вопросом: что случится с вашим приложением, если метод finalize() работает очень долго?
Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии26

Руководство по версиям и возможностям Java

Время на прочтение12 мин
Количество просмотров156K

Здесь есть все, что вам нужно знать о различных версиях и функциях Java.



Java 8, Java 11, Java 13 — какая разница?


Вы можете использовать это руководство, чтобы найти и установить последнюю версию Java, понять различия между дистрибутивами Java (AdoptOpenJdk, OpenJDK, OracleJDK и т.д.), А также получить обзор возможностей языка Java, включая версии Java 8-13.


Примечание переводчика
09 апреля 2020 г. Марко опубликовал новую версию Руководства, в которую добавлено описание Java 14.
Перевод новой версии Руководства предлагается Вашему вниманию.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии14

Как отследить pod-to-pod-трафик Kubernetes

Время на прочтение8 мин
Количество просмотров4K

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

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии3

Переизобретаем сжатие в распределенной базе данных

Время на прочтение4 мин
Количество просмотров2.4K

В используемой нами базе данных уже была эффективная функциональность сжатия, которая обеспечивала хранение объемной информации.

Но рост объема хранимых данных — не единственный возможный выигрыш от применения сжатия, поэтому мы задумались о разработке собственного решения.

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

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии1

Траблшутинг в K8s — узел не готов к работе

Время на прочтение3 мин
Количество просмотров3.4K

Узел K8s — это физическая или виртуальная машина, участвующая в кластере K8s, которая может использоваться для запуска подов. Когда узел выключается, выходит из строя или процесс kubelet сталкивается с проблемой, узел переходит в состояние NotReady. Он не может использоваться для запуска подов. В этом случае все запускаемые на узле поды становятся недоступными.

Обычными причинами перехода узла K8s в состояние NotReady являются:

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии0

Как мы упростили жизнь высоконагруженным сервисам с Platform V SessionsData. Часть 2

Время на прочтение6 мин
Количество просмотров1.3K

Привет, Хабр! На связи Андрей Чернов, Java-архитектор микросервисов в СберТехе. Эта статья — продолжение материала о том, как мы развиваем Platform V SessionsData — высокопроизводительное распределённое in-memory хранилище для общего контекста сессионных запросов key-value, которое СберБанк Онлайн использует в качестве микросервиса на своём server side.

В первой части мы говорили о том, почему решили создать собственный микросервис и как он помогает справляться с нагрузкой СберБанк Онлайн. В этой разберём, как мы достигаем высокой доступности сервиса. Будет и третья часть: расскажем, какие доработки помогут нам и дальше развивать Platform V SessionsData.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии9

Kotlin DSL: Теория и Практика

Время на прочтение17 мин
Количество просмотров57K

Sql, RegExp, Gradle — что их объединяет? Всё это примеры использования проблемно-ориентированных языков или DSL (domain-specific language). Каждый такой язык решает свою узконаправленную задачу, например, запрос данных из БД, поиск совпадений в тексте или описание процесса сборки приложения. Язык Kotlin предоставляет большое количество возможностей для создания собственного проблемно-ориентированного языка. В ходе статьи мы разберемся, какие инструменты есть в арсенале программиста, и реализуем DSL для предложенной предметной области.


Весь синтаксис, представленный в статье, я объясню максимально просто, однако, материал рассчитан на практикующих инженеров, которые рассматривают Kotlin, как язык для построения проблемно-ориентированных языков. В конце статьи будут приведены недостатки, к которым нужно быть готовым. Используемый в статье код актуален для Kotlin версии 1.1.4-3 и доступен на GitHub.


Читать дальше →
Всего голосов 40: ↑35 и ↓5+30
Комментарии12

Как легко пройти собеседование по Kubernetes в 2023 году?

Время на прочтение7 мин
Количество просмотров20K

Сегодня одним из самых популярных в использовании инструментов в стеке техкомпаний является Kubernetes. С момента своего выхода K8s получил массовое распространение, расширив свою экосистему и увеличив количество пользователей. В 2021 году CNCF (Cloud Native Computing Foundation) провел опрос, который показал, что 96% организаций (которые приняли в нём участие) используют или уже пробуют Kubernetes в своем технологическом стеке.

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии11

Обработка аннотаций в процессе компиляции

Время на прочтение10 мин
Количество просмотров35K
magicМетапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода), либо программ, которые меняют себя во время выполнения.

Аннотации, как инструмент метапрограммирования появились вместе с релизом Java 5 в далеком 2004 году. Вместе с ними появился инструментарий Annotation Processing Tool, на смену которому пришла спецификация JSR 269 или Pluggable Annotation Processing API. Что интересно, этой спецификации без малого 10 лет, но свою популярность в Android разработке она начала обретать только сейчас.

О возможностях, которые открывает эта спецификация мы поговорим чуть позже (будет мнооого кода), а сперва, не хотите ли поговорить о компиляции Java кода?
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии17

Redis на практических примерах

Время на прочтение11 мин
Количество просмотров105K

Redis — достаточно популярный инструмент, который из коробки поддерживает большое количество различных типов данных и методов работы с ними. Во многих проектах он используется в качестве кэшируещего слоя, но его возможности намного шире. Мы в ManyChat очень любим Redis и активно используем его в нашем продукте для решения огромного количества задач. Про некоторые интересные кейсы использования этой in-memory key-value базы данных я расскажу на примерах. Надеюсь, вам они будут полезны, и вы сможете применить что-то в своих проектах.

Рассмотрим следующие кейсы:

  • Кэширование данных (да, банально и скучно, но это классный инструмент для кэширования и обойти стороной этот кейс, кажется будет не правильно)
  • Работа с очередями на базе redis
  • Организация блокировок (mutex)
  • Делаем систему rate-limit
  • Pubsub — делаем рассылки сообщений на клиенты

Буду работать с сырыми redis командами, чтобы не завязываться на какую-либо конкретную библиотеку, предоставляющую обертку над этими командами. Код буду писать на PHP с использованием ext-redis, но он здесь для наглядности, использовать представленные подходы можно в связке с любым другим языком программирования.


Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии14

Наша новая удачная попытка бесшовной замены Redis на KeyDB

Время на прочтение5 мин
Количество просмотров13K

Мы уже как-то рассказывали о базе данных KeyDB — форке Redis, разработка которого началась в 2019 году. Проект распространяется под свободной лицензией BSD, и у него уже почти 6k звезд на GitHub. Авторы в свое время столкнулись с проблемами производительности оригинала и пошли хардкорным путём: взяли всё в свои руки и привнесли много нового как в части многопоточности, так и в других областях.

В статье делимся еще одним положительным опытом замены Redis на KeyDB.

Читать далее
Всего голосов 45: ↑45 и ↓0+45
Комментарии19

Изучаем Docker, часть 6: работа с данными

Время на прочтение5 мин
Количество просмотров217K
В сегодняшней части перевода серии материалов о Docker мы поговорим о работе с данными. В частности — о томах Docker. В этих материалах мы постоянно сравнивали программные механизмы Docker с разными съедобными аналогиями. Не будем отходить от этой традиции и здесь. Данные в Docker пусть будут специями. В мире существует множество видов специй, а в Docker — множество способов работы с данными.

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными


Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии5

Изучаем Docker, часть 5: команды

Время на прочтение9 мин
Количество просмотров214K
Сегодняшняя часть цикла материалов по Docker, перевод которого мы публикуем, посвящена командам Docker. Документация Docker содержит подробнейшее описание великого множества команд, но тот, кто только начинает работу с этой платформой, может в них и потеряться, поэтому здесь приведены почти два десятка самых важных команд для работы с Docker. Продолжая сложившуюся традицию, мы сравним команды с россыпью ягод.

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными

Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии6

Изучаем Docker, часть 4: уменьшение размеров образов и ускорение их сборки

Время на прочтение8 мин
Количество просмотров132K
В этой части перевода серии материалов, которая посвящена Docker, мы поговорим о том, как оптимизировать размеры образов и ускорить их сборку. В прошлых материалах мы сравнивали образы Docker с пиццей, термины с пончиками, а инструкции файлов Dockerfile с бубликами. Сегодня же не будет никакой выпечки. Пришло время посидеть на диете.

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными


Для того чтобы разобраться с тем, о чём мы будем тут говорить, вам будет полезно освежить в памяти то, о чём шла речь в третьей части этой серии материалов. А именно, там мы говорили об инструкциях файлов Dockerfile. Знание этих инструкций и тех особенностей Docker, которые мы обсудим сегодня, поможет вам оптимизировать файлы образов Docker.
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии1

Информация

В рейтинге
Не участвует
Откуда
Вологда, Вологодская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность