А. Аксенов "Как мы разрабатываем Сфинкс", dump-2014

28
Как мы разрабатываем Sphinx Аксенов Андрей Sphinx Technologies Inc

Upload: it-people

Post on 26-Jan-2015

355 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Как мы разрабатываем Sphinx

Аксенов Андрей

Sphinx Technologies Inc

Page 2: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Про доклад

• Nsk12…Ekb14• Что? Сфинкс (сервер такой)• Кто? Команда!• Как? Удаленно!• Что хорошо? Что плохо?• Выводов не будет!

Page 3: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Структура компании

• Консультанты, 2• Разработка, 6 (*)

• Консультации тоже• (*) Условно включая меня…

• Продажи, 2• Инфра, 2• – А чо так мало? – А вот!!!

Page 4: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Мы говорим Ленин...

• Команда разработчиков

Page 5: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Мы говорим Ленин...

• Команда разработчиков• Маленькая, очень• Удаленная, полностью• Звездочка, исторически• Диктатура, вынужденно

• Ничто не религия – так сложилось• Работа по домам – и плюсы и

минусы

Page 6: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Вольно пасущиеся коты

• Внешняя часть• Mantis, форум

• Внутренняя часть• IRC, Skype, email, телефон• Eventum, Wiki, Mantis• Google Docs

Page 7: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Кафка. «Процесс».- Холст, сыр, масло

• Как устроен процесс “про код”?• Какие именно Мега Практики

есть?• Каких нету, каких зря, каких

спецом?• Как и почему именно так

получилось?• Полтора выстраданных опытом

фокуса

Page 8: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

“Мы е…и все на свете”

• Waterfall ?• Agile ?• SCRUM ?• Kanban ?• Six Sigma ?

. . .

Page 9: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014
Page 10: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

“Мы е…и все на свете”

• Waterfall ?• Agile ?• SCRUM ?• Kanban ?• Six Sigma ?

. . .• X3M !

Page 11: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

“Do the reasonable thing”

• По-русски, возможно, “включи мозг”

• Раскидываем баги, фичи, редкий R&D

• Мини-лекции и “атаки” по потребности

• Отчитываемся (еженедельный звонок)

• Итерации типично короткие• Результаты типично прозрачные• Ничего особенного, как и обещал

Page 12: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Зоопарк VCS

• Публичный svn (R/O зеркало, Gcode)

• Был внутренний hg• Стал внутренний git-svn

• Для длинных веток• Для секретных веток• Для промежуточных патчей

• Когда-нибудь будет чисто Github

Page 13: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Зоопарк сред разработки

• Каждый строчит, как он хочет• gcc + emacs + …, MSVC

2008/2012• MSVS 2005, Xcode, Codeblocks

• Довольно кроссплатформенно• Платформо-зависимого кода...

МАЛО

Page 14: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Про кодстиль

for ( int i=0; i<m_tSchema.GetAttrsCount(); i++ )

{

const CSphColumnInfo & tCol = m_tSchema.GetAttr(i);

ESphAttr eAttrType = tCol.m_eAttrType;

if ( eAttrType==SPH_ATTR_UINT64SET )

{

if ( tCol.m_eSrc==SPH_ATTRSRC_FIELD )

bHaveFieldMVAs = true;

dMvaIndexes.Add ( i );

dMvaLocators.Add ( tCol.m_tLocator );

Page 15: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Про кодстиль

• Своеобразный• Пробелы• Мини-венгерская нотация• Смесь систем именования

типов• Но оправданный!

• Мгновенный контекст• Читаемость без подсветки и в

целом

Page 16: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Про кодстиль

• Форсирую стиль• Форсирую компактность

• Политика?• Религия?• Прагматика!

• Ревью на старте. Типично ~1 мес• Линт и сразу и потом. Google ftw

Page 17: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Про библиотеки итп STL

• STL, boost исторически не пользуемся• Было нельзя, сейчас незачем• Только вручную, только

хардкор!• Сторонние библиотеки, эээ, по

ситуации• libstemmer, libre2 линкуем• libaot, часть стеммеров

переписали

Page 18: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014
Page 19: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Про ревью

• Все еще без спецтулзов• Git бранчи FTW• NB, важно осознавать цели

• Баги так ловить нельзя• Проверка стиля итп дури• Проверка “туда ли идем”• Двойные проверки особо

важного

Page 20: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Внутренняя документация

• Есть полупубличная, полудохлая• doc/internals*.txt

• Есть совсем внутренняя• Особо секретная, так надо!!!• Маленькая, всего 10 18

страниц• Пишется по ситуации (найм /

новое / хорошо забытое старое)

Page 21: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Внешняя документация

• Неизменно БОЛЬ• Программисты плохо пишут• Пользователи плохо спрошают• Нужен уникальный спец-человек

• Штоп разбирался• Штоп интересовался

• Все еще пока не нашли!

Page 22: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Про тестирование

• Внутреннее, автоматизированное• Функциональные тесты• 200+ штук, 4000+ запросов

• Юнит-тесты• Тесты производительности

(***)• Спецтестеров нет, вряд ли будет• Плюс фидбэк! (когда бывает)

Page 23: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014
Page 24: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

“Толька! Этого мало!”

• Все равно проникают адовые баги :)

• Баги бывают трех классов, A, B, C• Но иногда! бывают баги класса Ы

• issue-72, issue-136, …• bug-660, bug-1117, …

• И отдельной строкой performance issues• prefork spin, O(n^2) zones, …

Page 25: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014
Page 26: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Специфика удаленки

+ Спокойно, нету геопривязки, офиса, свободный график…

– Спокойно, ограниченный контакт, свободный график…

• Ключевое, самодисциплина• Push модель vs pull модель• В остальном – вроде обычный

orgchart

Page 27: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Стоит ли так жить?

• Не знаю!!!• Но вот – иногда возможно

Page 28: А. Аксенов "Как мы разрабатываем Сфинкс", DUMP-2014

Вопросы?

Аксенов АндрейSphinx Technologies Inc

[email protected]+1 (888) 333-1345