Рубрика «dao»

На дворе 2020 год и фоновым шумом вы уже привыкли слышать: «Кубернетес — это ответ!», «Микросервисы!», «Сервис меш!», «Сесурити полиси!». Все вокруг бегут в светлое будущее.

Подходы в том, что касается баз данных, в нашей компании более консервативны, чем в прикладных приложениях. Крутится база данных у нас не в кубернетесе, а на железе или в виртуалке. Для изменений базы данных процессинга платежных сервисов у нас есть устоявшийся процесс, который включает в себя множество автоматических проверок, большое ревью и релиз с участием DBA. Количество проверок и привлекаемых людей в этом случае негативно влияет на time-to-market. С другой стороны, он отлажен и позволяет надежно вносить изменения в продакшен, минимизируя вероятность что-то сломать. А если что-то сломалось, то нужные люди уже включены в процесс починки. Этот подход делает работу основного сервиса компании стабильнее.

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

Как мы в 2020 году изобретали процесс разработки, отладки и доставки в прод изменений базы данных - 1

Если хотите узнать, к каким проблемам это привело и как мы их порешали, — добро пожаловать под кат.
Читать полностью »

Всем доброго времени суток.

Эта статья рассчитана для новичков в мире Web и Java. Мы рассмотрим стандартную архитектуру веб-приложения и сделаем небольшой проект с нуля.

Будем использовать Spring (Огромный фреймворк для веба), но по минимуму. Если не иметь предыдущего опыта использования и сразу пытаться использовать весь функционал, то не будет базового понимания, так как имеется перечень подводных камней.

Что будет делать приложение

Хочу представить короткий и в то же время полезный пример. Он минимально загружен и по итогу вы сможете использовать его как шаблон.

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

Исходный код вы сможете найти здесь.

Читать полностью »

Вводная

Мне часто в проектах приходится сталкиваться с фреймворками по работе с БД. Концептуально, эти фреймворки можно разбить на 2 больших класса:

  • ORM-ориентированные
  • SQL-ориентированные

Некоторые из них хороши, какие-то не очень. Но субъективно могу сказать: SQL-ориентированные уступают в развитии ORM-ориентированным. Подчеркну, в развитии, а не в возможностях. Хоть изменить эту чашу весов и не получится, но предложить необычный взгляд на мир SQL-ориентированного подхода — вполне. Кому интересно, добро пожаловать под кат
Читать полностью »

Децентрализованные организации (DAO: Decentralized autonomous organization) являются одной из главных инноваций, которые стали возможны благодаря блокчейну Ethereum, позволяющему хранить в себе так называемые "контракты". Каждый контракт имеет свой собственный адрес (по аналогии с адресами кошельков Bitcoin), а по сути — представляет из себя программу со сводом правил, который исполняется в случае проведения транзакции с ним. Главной особенностью DAO как организации является отсутствие посредников в лице человека — правила принятия решений, и, соответственно, распоряжения средствами организации принимаются при исполнении кода, использованного при создании этого контракта. Именно это и сыграло ключевую роль в нападении на крупнейшую децинтрализованную организацию — "The DAO" 17 июня 2016 года (подробнее об организации можно почитать в недавней статье на Geektimes).

image
Читать полностью »

imageЗа последние 3 года развития Биткойна мы увидели появление многих инфраструктурных приложений, большую часть из которых составляли биржи и кошельки. Но на этом список практически значимых и по-настоящему новых разработок на базе Биткойн заканчивается. Чем же можно объяснить такую ситуацию?

Существует теория, которая заключается в том, что скриптовый язык Биткойн — та сама часть каждой биткойн-операции, которая позволяет вам запускать небольшую программу в ходе этой операции — слишком ограничена в возможностях. В этом контексте соучредитель Coinbase Фред Эсем (Fred Ehrsam) предлагает обратить внимание на Ethereum, появление которого, по его мнению, можно сравнить с изобретением полноценного компьютера, пришедшего на смену рассчитанному на 4 действия калькулятору по имени Биткойн. На первый взгляд нам в Wirex, финтех стартапе, предоставляющем услуги платежей и денежных переводов без банковского посредничества и с использованием blockchain, сравнение Эсема показалось немного грубоватым, но вынуждены согласиться, что такая точка зрения имеет право на жизнь. Кому нужны аргументы, приглашаем под кат.
Читать полностью »

image

В мире криптовалют все говорят о «Гражданской войне», и не о той, что развязалась между Капитаном Америкой и Железным человеком. Они говорят о гражданской войне в проекте Bitcoin, которая длится уже год. Это ожесточенное сражение за контроль над масштабируемостью.

С одной стороны, есть разработчики Core, которые хотят сохранить ограничение размера блока в 1 Мбайт. Они рассчитывают, что подающая надежды сеть Lightning Network решит любые проблемы с перегрузками.

С другой стороны, есть сторонники из лагеря Bitcoin Classic, которые хотят увеличить ограничение размера блока как минимум до 2 Мбайт. Пока побеждают Core, так как большая часть майнеров Bitcoin придерживается их варианта реализации проекта.

Эти разногласия подняли некоторые фундаментальные вопросы о природе децентрализованного проекта вроде Bitcoin. Кто же в итоге задает направление развития децентрализованного проекта? Кто принимает окончательные решения по разработке? Другими словами, как следует управлять подобным проектом?
Читать полностью »

При устройстве на работу java программистом меня попросили написать тестовое web приложение «Телефонный справочник». Хочу поделиться с вами этим «шедевром».

Вид и функциональность приложения

  • Добавление;
  • Удаление;
  • Поиск;
  • Валидация данных.

Читать полностью »

В процессе роста и развития проекта «АвтоОфис — Прием платежей и полная автоматизация продаж» мы столкнулись с тем, что при появлении клиентов имеющих у себя в базах более 100 000+ контактов, одна из основных функций, отвечающих за создания и отправку массовых email-рассылок по базе клиентов данных интернет-магазинов стала безбожно тормозить.

Покопавшись в коде, было выявлено, что при выборках данных, насчитывающих 100 000+ записей из таблиц MySQL с использованием класса ActiveRecord, сильно увеличивается потребление оперативной памяти и времени отработки скриптов. Доходило до того, что одна переменная, хранящая в себе результат выборки из 100 000 записей, потребляла 644 750 972 байт (614 Мб) оперативки, а время выполнения скрипта превышало 50 секунд.

Т.к. 100 000 записей, это мягко говоря, не предел мечтаний, и количество клиентов сервиса АвтоОфис уже давно исчисляется тысячами, мы не могли оставить данную проблему без внимания и не принять меры по её устранению. В итоге описанная выше функция была полностью переписана на выборки с использованием широко известного DAO, что существенно снизило расход ресурсов и увеличило скорость выполнения скрипта.

В процессе перехода наши программисты не поленились и сделали несколько тестов, наглядно показывающие сравнительные характеристики использования ActiveRecord и DAO при попытке выборки из БД MySQL 1, 5, 10, 50, 100, 500, 1 000, 5 000, 10 000, 50 000 и 100 000 записей. С результатами данных тестов и предлагаю Вам ознакомиться прямо сейчас.Читать полностью »

Введение

Ни для кого не секрет, что такой архитектурный антипаттерн как God object препятствует эффективному поддерживанию кода проекта. Однако его все равно можно встретить в Legacy-системах корпоративного сектора. Со временем код становится настолько сложным, что изменить его функциональность, даже при наличии Unit-тестирования, становится большой проблемой. Такие системы никто не хочет поддерживать, все боятся что-либо улучшать, количество проблем в трекере держится постоянным числом, но может и расти. Как правило, у команды упавшее настроение, которое со временем становится чемоданным: все хотят свалить.
Иллюстрация проблемы
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js