Зачем переводить работающий проект с RDBMS на noSql? Как это сделать, и как это нельзя делать? Что важнее для успеха пректа - технологическое преимущество или доверительные отношения в команде? Какова роль процесса в успехе проекта и что бывает, когда каждый член команды действует в соответствии со своими локальными интересами.
Человеческий фактор в разработке, или ORM на noSql через JPA.
1. Java Day Minsk 2015
ORM
на noSql
через JPA
Павел Вейник
Head of Dev @ geomotiv
2. Java Day Minsk 2015
1. SQL vs noSql
2. JPA +
Kundera + Pelops + Thrift +
Cassandra
3. Проект и команда
3. Java Day Minsk 2015
SQL vs noSql
SQL-2011 и др
ясная концепция
матаппарат
зрелое решение
не теряет данные
масштабируется
целостность данных
ACID
нет стандарта
расплывчатая
нет
нет
может
масштабируется
нет FK и PK
eventual constistency
4. Java Day Minsk 2015
SQL vs noSql: разработка
commercial
легко менять код под
новые выборки
быстрое прототипирование
ORM стандарт JPA
Hibernate
триггеры, процедуры
громоздкий код
не нужно думать о
производительности
open source
трудно менять код под
новые выборки
быстрое прототипирование?
нет стандарта
Thrift
все в клиентском коде
сложный код
вы думаете о
производительности
5. Java Day Minsk 2015
noSql
● Используется в целях маркетинга
Not Only SQL
● Используется жертвами маркетинга
● Используется как вспомогательное решение
рядом с РСУБД
● Используется как самостоятельное решение
в нестандартных проектах
8. Java Day Minsk 2015
NoSql?
Каждому приложению не нужна вся мощь
Oracle, DB2 или даже Mysql, часто даже
полный ACID не нужен.
NoSql — усеченный вариант, разработчику
предоставляются низкоуровневые средства
работы с БД и ответственность за их
использование.
9. Java Day Minsk 2015
Задача
Перевести большой проект с MySql на
Cassandra
Разработать новый уровень обращения к бд
JPA, Hibernate, 300+ таблиц, много данных
10. Java Day Minsk 2015
Решение
● JPA
● Kundera
● scale7-pelops
● Thrift
● Cassandra
13. Java Day Minsk 2015
Боль
Снижение производительности работы с бд
примерно в 2 раза.
Увеличение времени ожидания ответа.
Вернули MySql назад и придумали разумный
план на полгода по переходу на Cassandra.
В результате добавили пару кэшей.
15. Java Day Minsk 2015
Умник
– Неизвестный фактор
CTO
– Интересы в компани несколькими уровнями выше
чем технологии
Команда
– Не хочет ссориться с CTO
– Не хочет делать дурную работу и отвечать за нее
Фрилансер
– Хочет сделать задание и получить деньги
16. Java Day Minsk 2015
Почему?
● Почему CTO выдал распоряжение по
переходу на noSql?
● Почему команда не донесла до СТО
масштабы перехода?
● Почему оказалось проще потратить время и
ресурсы, чем подумать сразу?
● Почему фрилансер взялся за странную
работу?
17. Java Day Minsk 2015
Технологии?
Процессы?
Роли?
Исполнители?
Разработчики
Отношения?
Управление?
HR? Внутренний HR?
Успех проекта
18. Java Day Minsk 2015
?
Павел Вейник
Head of Dev @ geomotiv