Pull to refresh

Синхронная репликация в Tarantool

Reading time35 min
Views6.7K


Tarantool — это платформа для in-memory вычислений, где упор всегда делался на горизонтальную масштабируемость. То есть при нехватке мощности одного инстанса нужно добавить больше инстансов, а не больше ресурсов одному инстансу.

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

Задача реализации синхронной репликации стояла перед командой разработчиков Tarantool долгие годы, к ней было совершено несколько подходов. И вот теперь в релизе 2.6 Tarantool обзавёлся синхронной репликацией и выборами лидера на базе алгоритма Raft.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments3

Масштабирование CI/CD монорепозитория

Reading time3 min
Views5.5K

Lerna


Дано


  1. Монорепозиторий на базе Lerna и Yarn workspaces.
  2. Десяток приложений, и десятки общих пакетов на TypeScript, Angular, NodeJS.
  3. Высокое покрытие тестами самых разных мастей (модульные, интеграционные, e2e).
  4. и Atlassian Bamboo CI/CD.

Задача


Ускорить имеющиеся пайплайны в 2 раза (до, хотя бы, получаса). Попутно повысив стабильность до 90%.


Забегая вперед, скажу что требуемые показатели были достигнуты.

Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments6

6 причин использовать Kubernetes на сервере bare metal

Reading time5 min
Views6.5K

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

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

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

Хотя сервисы managed Kubernetes, предоставляемые различными провайдерами услуг, обеспечивают простой механизм развертывания и начала работы, в основном они работают на базе виртуализированной инфраструктуры. Виртуальные машины удобны для провайдеров и в большинстве случаев обеспечивают хорошее качество работы для их клиентов.  Однако, стоит отметить, что развертывание Kubernetes на обычных серверах также дает несколько существенных преимуществ.

Читать далее
Total votes 13: ↑10 and ↓3+7
Comments0

Поваренная книга Ruby-разработчика: Domain Driven Design рецепты ( 1-я часть, область применения )

Reading time7 min
Views16K

Введение


Я хотел бы рассказать об опыте применения практик DDD к существующему Ruby on Rails проекту. Изначально, мы имели монолит, который писался 10 лет. Основная трудность проекта была в достаточно сложных процессах, и высокой связанности. Нам удалось не только декомпозировать приложение на отдельные сервисы, но и существенно повысить читаемость кода, сделать описываемые процессы прозрачными.


Решение задач в рамках системы стало предсказуемым, мы перестали работать с черным ящиком, и в конечном итоге система сама стала подсказывать нам решения.


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

Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments2

Поваренная книга разработчика: Domain Driven Design рецепты ( 2-я часть, структура и взаимодействие )

Reading time12 min
Views20K

ddd-header


Введение


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


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


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

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments4

Jelastic PaaS — major update: horizontal scaling, Java 7, Jetty, HTTPS

Reading time3 min
Views1.5K
Java Elastic Cloud Platform

Спешу поделиться большими новостями про большое обновление Jelastic — облачной платформы для Java приложений. Последний релиз действительно большой. В нем были добавлены долгожданные
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments40

ECP и API управления процессами

Reading time12 min
Views5.9K
Технология распределения нагрузки между несколькими серверами сравнительно небольшой мощности является стандартной возможностью СУБД Caché уже достаточно давно. В её основе лежит протокол распределённого кэша ECP (Enterprise Cache Protocol); здесь имеется в виду именно «cache» («кэш»), а не «Caché» («кашЭ»). ECP открывает богатые возможности для горизонтального масштабирования прикладной системы, обеспечивая высокую производительность при не менее высокой устойчивости к отказам, оставляя при этом бюджет проекта в достаточно скромных рамках. К достоинствам сети ECP справедливо будет отнести и возможность сокрытия особенностей её архитектуры в недрах конфигурации СУБД, так что прикладные программы, изначально разработанные для традиционной (вертикальной) архитектуры, как правило, легко переносятся в горизонтальную ECP-среду. Эта лёгкость настолько завораживает, что хочется, чтобы так было всегда. Например, все привыкли к возможности управлять не только текущим, но и «чужими» процессами Caché: системная переменная $Job и связанные с ней функции и классы в умелых руках позволяют «творить чудеса». Стоп, но теперь процессы могут оказаться на разных серверах Caché… Ниже — о том, как удалось добиться почти такой же прозрачности в управлении процессами в среде ECP, как и без неё.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments3

VShard — горизонтальное масштабирование в Tarantool

Reading time14 min
Views8.6K


Меня зовут Владислав, я участвую в разработке Tarantool — СУБД и сервера приложений в одном флаконе. И сегодня расскажу вам, как мы реализовали горизонтальное масштабирование в Tarantool при помощи модуля VShard.
Читать дальше →
Total votes 58: ↑58 and ↓0+58
Comments5

Legacy PHP-FPM в Kubernetes

Level of difficultyMedium
Reading time8 min
Views6.1K

Каждая стратегия масштабирования имеет свои плюсы и минусы. Почему бы не начать комбинировать их и оставить только плюсы? Поговорим об этом — как сделать хорошо, когда нельзя просто закопать — в контексте PHP. 

Узнать больше
Total votes 13: ↑13 and ↓0+13
Comments6