Scylladb спонсировал этот пост.
«Одно дело решать проблемы производительности, когда у вас есть достаточно времени, денег и опыта. Но что вы делаете в противоположной ситуации: если вы маленький стартап без времени или денег, и все еще нужно выполнять выдающуюся производительность? » -Гвен Шапира, соучредитель Нила (PostgreSQL реинжинирирован для многопользовательских приложений)
Это многомиллионный вопрос для многих стартапов на ранней стадии. И кто лучше возглавить эту дискуссию, чем Гвен Шапира, который справился с выступлением с двух совершенно разных точек зрения? После многих лет сосредоточения внимания на производительности систем данных в крупных организациях, она недавно сменила стартап, где она оказалась ответственной за результаты полного стека с нуля.
В своем основном доме P99 Conf, «Высокая производительность по низкому бюджету», Шапира исследовала эту тему, поделившись проблемами производительности, которые она и ее небольшая команда столкнулись в Ниле: как они подошли к ним, компромисс и извлеченные уроки. Несколько выводов, которые поджигают чат конференции:
- Бессмы должны платить арендную плату.
- Держите тесты глупыми простыми.
- Если у вас нет времени для оптимизации, по крайней мере, не «пессимизируйте».
Но реальная ценность заключается в том, чтобы услышать опыт, стоящий за этими и другими зингерами.
Вы можете посмотреть, как она разговаривает ниже, или продолжать читать для экскурсии.
Наслаждайтесь пониманием Шапиры? Она доставит еще одну основную докладу на саммите по шкале Monster вместе с Келси Хайтауэр и инженерами из Discord, Disney+, Slack, Canva, Atlassian, Uber, Scylladb и многих других лидеров, делясь тем, как они решают чрезвычайные инженерные задачи. Присоединяйтесь к нам. Это бесплатно и виртуально.
Обоитесь о производительности, прежде чем отправить его
По словам Шапиры, основатели получают всевозможные советы о том, как управлять компанией (хотят ли они этого или нет). Что касается производительности, часто слышать советы, такие как:
- Не беспокойтесь о производительности, пока пользователи не будут жаловаться.
- Не беспокойтесь о производительности, пока у вас не появится рынок продукта.
- Производительность — хорошая проблема.
- Если люди жалуются на производительность, это отличный знак!
Но она с уважением не согласен. После многих лет сосредоточения внимания она слишком знакома с последствиями этого подхода.
Шапира поделилась: «Когда вы разговариваете с людьми, вы хотите выяснить минимальный набор функций, необходимый для вынесения эффективного продукта на рынок. И производительность является частью этого пакета. Вы должны обнаружить ожидания производительности целевого рынка, когда вы обнаружите другие ожидания ».
Вещи, которые следует учитывать на ранней стадии:
- Если вы пытаетесь преодолеть конкуренцию по выступлению, насколько быстрее вам нужно быть?
- Даже если производительность не является вашим ключевым отличием, каковы ожидания ваших пользователей относительно производительности?
- В какой степени пользователи готовы принимать задержку или компромиссы пропускной способности для различных возможностей-или принимать более высокие затраты, чтобы избежать этих компромиссов?
Основателям часто говорят, что даже если они не полностью удовлетворены продуктом, просто отправьте его и посмотрите, как люди реагируют. Реакция Шапиры: «Если вы делаете стартап, есть на 100% шанс, что вы отправите что -то, чем вы не на 100% довольны. Но причина, по которой вы отправляете рано и итерацию, заключается в том, что вы действительно хотите быстро учиться. Если вы определили ожидания производительности на этапе обнаружения, попробуйте отправить что -то в этот стадион. В противном случае, вы, вероятно, не учитесь так много — по крайней мере, в отношении производительности ».
Гиперфокусировка на воспринимаемой задержке пользователя
Для стартапов, стремящихся оказать наибольшее влияние на производительность с ограниченными ресурсами, вы можете «обмануть», сосредоточившись на том, что действительно поможет вам привлечь и удержать клиентов: оптимизация воспринимаемой задержки пользователя.
Веб -приложения — отличное место для начала. Даже если ваш основной продукт представляет собой базу данных EBPF Edge, ваши пользователи, вероятно, будут взаимодействовать с веб-приложением с начала пути пользователя. Кроме того, есть много хороших метрик для отслеживания (например, основные веб -сайты Google).
Шапира отметила: «У стартапов очень редко проблема масштаба. Если у вас есть проблема с масштабами, вы можете, например, поместить людей в список ожидания, пока вы определяете, как масштабировать и добавлять машины. Однако, даже если у вас есть небольшое количество пользователей, вы определенно заботитесь о том, чтобы у них отличный опыт с низкой задержкой. И воспринимаемая низкая задержка — это то, что действительно имеет значение ».
Например, рассмотрим эту панель панели:
Когда пользователи вошли в систему, команда Нила хотела произвести на них впечатление, мгновенно запустив эту классную нагрузку на панели. Тем не менее, они обнаружили, что время отклика варьировалось от ускоренных 200 миллисекунд до ужасных 10 с лишним секунд.
Чтобы решить эту проблему, команда начала с параллелизирующих запросов, заполняя элементы панели инструментов по мере появления данных и создавая прогрессивный опыт загрузки. Эти оптимизации помогли, и прогрессивная нагрузка оказалась фантастическим способом скрыть задержку (держать пользователя вовлеченным, например, зеркала отвлекает вас в медленном лифте).
Тем не менее, оптимизация выявила другую проблему: приложение делало 2000 отдельных вызовов API, чтобы подсчитать открытые билеты. Это классическая проблема N+1 (когда вы запускаете запрос для каждого результата вместо того, чтобы запустить один оптимизированный запрос, который получает все необходимые данные одновременно).
Естественно, это вдохновило некоторую уточнение и настройку API. Затем, другое открытие: их фронтальный DEV заметил, что они получают больше данных, чем необходимо, поэтому он кэшировал его в браузере. Это обновление ускорило приборные взаимодействия, обслуживая предварительно кэшированные данные из локального хранилища браузера.
Однако, несмотря на все эти оптимизации, панель инструментов оставалась тяжелой. «Нашим клиентам это понравилось, но не было никаких причин, почему это должна была быть первая страница после входа в систему», — отметил Шапира. Таким образом, они переместили приборную панель слой вниз в навигации. Вместо этого они добавили гораздо более простую целевую страницу с легким доступом к наиболее распространенным задачам пользователей.
Тесты должны платить арендную плату
Следующая тема: важность стратегической в отношении сравнительного анализа. «Производительность Люди любят бенчмаркинг (и я виноват в этом)», — призналась Шапира. «Но вы можете провести бесконечное время на сравнение с очень небольшим, чтобы показать это. Поэтому я хочу поделиться некоторыми советами о том, как тратить меньше времени, и иметь больше, чтобы показать это ».
Она продолжила: «Бесссылки должны заплатить арендную плату, отвечая на некоторые важные вопросы, которые у вас есть. Если у вас нет важного вопроса, не запускайте эталон. Там я только что спас вас неделями вашей жизни — что -то неоценимое для стартапов. Вы можете поблагодарить меня позже. «
Если вашим основным конкурентным преимуществом является производительность, вы должны поделиться тестами на производительность, чтобы (попытаться) доказать, насколько быстро и круто. Назовите это «Cladmarking». Для всех остальных, два общих вопроса, чтобы ответить с помощью сравнительного анализа:
- Наша база данных оптимальной?
- Мы предоставляем хороший пользовательский опыт?
Чтобы оценить настройку базы данных, команды склонны:
Но действительно ли это лучший способ для стартапа потратить ограниченное время и ресурсы?
Учитывая ее опыт в качестве эксперта по выступлению, Шапира не смогла удержаться от такого эталона в начале в Ниле. Но она не рекомендует это — по крайней мере, не для стартапов: «Во -первых, требуется много времени, чтобы запустить стандартные тесты, когда вы не привыкли делать это неделю, Week Out. Требуется время, чтобы настроить все ручки и параметры. Требуется время, чтобы проанализировать результаты, промыть и повторить. Даже с хорошими инструментами это никогда не бывает легко ».
Они идентифицировали и исправляли некоторые низко висящие фрукты из этого упражнения. Но поскольку тесты были основаны на стандартном эталонном этапе, было неясно, насколько хорошо он сопоставляется с фактическим пользовательским опытом. Шапира продолжила: «Я не чувствовал рентабельность [return on investment] был совершенно убедительным. Если вы эксперт по выступлению, и это у вас займет всего около дня, это, вероятно, того стоит. Но если вам нужно встать на скорость, если вы тратите значительное время на настройке, вам лучше сосредоточить свои усилия в другом месте ».
Лучший вопрос, чтобы зацикливаться на: «Доставляем ли мы хороший опыт?» Более конкретно, сосредоточьтесь на этих трех областях:
- Оптимизация путей работы пользователя
- Решение проблем производительности, которые раздражают разработчиков (эти вероятно, раздражают пользователи)
- Обращая внимание на метрики, которые одержимы клиентами, даже если они не те, которые сосредоточилась на вашей команде
Держите тесты на сравнение с глупыми простыми
Еще один урок тестирования: сосредоточьтесь на дополнительных глупых тестах на здравомыслие. В Ниле команда запустила самые простые возможные запросы, например, загрузка пустой страницы или запрос пустой таблицы. Если бы они были медленными, не было никакого смысла провести более сложные тесты. Остановите, исправьте проблему, затем пройдите с более интересными тестами.
Кроме того, одержим пониманием того, что на самом деле измеряют цифры. Вы не хотите основываться на критических решениях на результатах вводящих в заблуждение результатов (таких как пустые ответы) или непреднамеренное поведение. Например, ее команда однажды намеревалась проверить путь записи, но в конечном итоге проверила путь чтения благодаря неправильно настроенным DNS.
Создайте инфраструктуру для долгосрочной стоимости, оптимизируйте для быстрых побед
Инструменты и инструменты наблюдения, созданные во время тестирования, будут окупаться на долгие годы. В Ниле эта инфраструктура стала неоценимой на протяжении всей жизни продукта для ответа на постоянный вопрос: «Почему она медленно?» Как сказал Шапира: «Эти ранние номера тестирования производительности, этот инструмент, вся наблюдаемость — это очень подарок, который продолжает дарить, продолжая строить, и пользователи неизбежно жалуются на производительность».
При расстановке приоритетов улучшений производительности ищите быстрые победы. Например, Нил обнаружил, что медленный запрос тратил 40% случаев на анализ, 40% на поиски и всего 20% на реальную работу.
Разработчик понял, что может повторно использовать существующую библиотеку кэширования, чтобы ускорить поиск. Это была хорошая быстрая победа, давая 40% времени назад с минимальными усилиями. Однако, если бы он сказал: «Я не уверен в кэшировании, но у меня есть эта библиотека быстрого анализа JSON», то это был бы лучший способ сберечь эквивалентные 40%.
Примерно через год они продвинули большую часть разбора к расширению Postgres, которое было написано в C и хорошо оптимизировано. Оптимизации никогда не заканчиваются!
Нет времени для оптимизации? Тогда, по крайней мере, не «пессимизируй»
Последний совет Шапиры включал в себя расширение возможностей опытных инженеров для улучшения здравого смысла.
«И последнее, но не менее важное: иногда у вас действительно нет времени для оптимизации. Но если у вас есть команда опытных инженеров, они знают, что не нужно пессимизировать. Они знакомы с более быстрыми библиотеками JSON, асинхровыми библиотеками, которые работают за кулисами, они знают, что не нужно помещать медленные вещи на критический путь и так далее. Даже если вам не хватает времени, чтобы доказать, что эти вещи на самом деле быстрее, просто сделайте их. Это не преждевременная оптимизация. Это просто избегает преждевременной пессимизации ».
Scylladb разработан для обеспечения предсказуемой производительности в масштабе. Он принят организациями, которые требуют ультра-низкую задержку, даже с рабочими нагрузками, превышающими 1M OPS/SEC. Наша уникальная архитектура использует силу современной инфраструктуры — переводится на меньшее количество узлов, меньшую административную и снижающую затраты. Узнайте больше последних из Scylladb Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Синтия Данлоп пишет о разработке программного обеспечения и тестировании гораздо дольше, чем она хочет признать. В настоящее время она является старшим директором по контент -стратегии в Scylladb. Подробнее от Синтии Данлоп