Доклад с конференции Стачка 2017
Нагрузочное тестирование в Lazada
* Как мы до этого дошли и зачем нам это надо
* Что мы используем готового и что пришлось разработать самим
* Как мы анализируем результаты тестов и какую статистику собираем
* Почему мы доверяем результатам тестирования
* Как мы стреляем по продакшену и ничего не боимся
* Какие ресурсы нужны для построения системы нагрузочного тестирования
* Что мы хотим сделать в будущем
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноBadoo Development
В условиях большой инфраструктуры и немалого количества критичных компонентов, время реакции на инцидент должно быть как можно меньше. В докладе я расскажу, какие инструменты помогают увеличить скорость реакции и уведомить о проблеме качественнее.
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения Iosif Itkin
КГТУ - Костромской Государственный Технологический Университет
Курс Лекций:
Обеспечение Качества Программного Обеспечения
Лекция 6: Обзор методов создания тестовых сценариев
Максим Рудовский, Инновационные Трейдинговые Системы
Иосиф Иткин, Exactpro Systems
Фреймворк для регрессионного тестирования на основе WebDriver, Бордюг Иван
В этом докладе слушатели услышат об идее автоматизации для людей с разным уровнем знаний в этой области. Также слушатель увидит, как быстро могут создавать тестовые сценарии по технологии BDD, которые в будущем станут тестами для регрессионного тестирования. Доклад будет построен на уже существующей разработке докладчика, будут высветлены все позитивные и негативные стороны данного подхода, а также проблемы, которые удалось решить в процессе автоматизации и проблемы, с которыми столкнулась команда в процессе использования данного подхода.
Доклад с конференции Стачка 2017
Нагрузочное тестирование в Lazada
* Как мы до этого дошли и зачем нам это надо
* Что мы используем готового и что пришлось разработать самим
* Как мы анализируем результаты тестов и какую статистику собираем
* Почему мы доверяем результатам тестирования
* Как мы стреляем по продакшену и ничего не боимся
* Какие ресурсы нужны для построения системы нагрузочного тестирования
* Что мы хотим сделать в будущем
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноBadoo Development
В условиях большой инфраструктуры и немалого количества критичных компонентов, время реакции на инцидент должно быть как можно меньше. В докладе я расскажу, какие инструменты помогают увеличить скорость реакции и уведомить о проблеме качественнее.
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения Iosif Itkin
КГТУ - Костромской Государственный Технологический Университет
Курс Лекций:
Обеспечение Качества Программного Обеспечения
Лекция 6: Обзор методов создания тестовых сценариев
Максим Рудовский, Инновационные Трейдинговые Системы
Иосиф Иткин, Exactpro Systems
Фреймворк для регрессионного тестирования на основе WebDriver, Бордюг Иван
В этом докладе слушатели услышат об идее автоматизации для людей с разным уровнем знаний в этой области. Также слушатель увидит, как быстро могут создавать тестовые сценарии по технологии BDD, которые в будущем станут тестами для регрессионного тестирования. Доклад будет построен на уже существующей разработке докладчика, будут высветлены все позитивные и негативные стороны данного подхода, а также проблемы, которые удалось решить в процессе автоматизации и проблемы, с которыми столкнулась команда в процессе использования данного подхода.
Тема: Как перестать бороться с графиками и начать жить
Я расскажу вам про интеграцию Zabbix и Grafana, чтобы вы могли улучшить возможности визуализации данных мониторинга с помощью Grafana.
1. Зачем нужны графики?
2. Как нарисовать 100 графиков за 10 секунд? (Query Editor, Regex, Templating)
3. И что потом с этим делать? ( Max Data Points, Functions, Performance)
4. События – это тоже Time Series (Annotations)
5. Seek & Destroy (Alerting в Grafana)
6. Бонус: Heatmap
Be productive with Javascript in the end of 2016 DataArt
Annotation: Today Javascript is one of the fastest growing programming languages. For the year to update and create a huge number of new libraries, frameworks, and development tools. We will look at the mainstream and well known tools, methodologies and approaches that allow you to be productive and effective with JS. There are a lot of code and examples under the hood.
In scope:
• Classes and Modules
• Promises, Generators, Async/Await
• Other ES6 magic
• Linters & JavaScript style guides
• Testing: TDD, BDD, Debugging
• Build tools
• IDEs
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрению Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
“Обезьянье тестирование” в мобильных проектах, Роман Подолян
Хотите уйти от проторённых путей, проверить приложение самыми разнообразными, случайными последовательностями действий? Задать ему встряску чтобы проверить его на выносливость? Сделать с ним то, что даже не собирались? Отдайте его “обезьяне”.
Bosun современный мониторинг / Дима Медведев (OneTwoTrip)Ontico
Доклад о Bosun (http://bosun.org) — мониторинге от StackExchange и его использовании в https://www.onetwotrip.com/ за 1,5 года.
Строить мониторинг сложно, не работает подход "посадить людей смотреть на дашборды" либо обнаруживать аномалии во всех данных. Алерты должны соответствовать реальности и проверять сложные сценарии. В Bosun, как и во многих современных продуктах, метрики (данные) ортогональны правилам (коду) обнаружения алертов. Это позволяет гораздо быстрее создавать и настраивать правила, в том числе тестируя их на данных из прошлого. Вместо итераций в дни или недели теперь минуты.
Workflow настройки мониторинга точно такой же, как у всех остальных разработчиков, причём они сами могут принимать участие без помощи админов, так же создавая оповещения, перенаправляя инциденты на себя. Таким образом принимая ответственность за то, что они выкатывают в продакшн.
В Bosun продуманная схема данных, а также мощный язык их обработки, напоминающий R/pandas. В несколько строк пишутся map/reduce выражения, проверяющие соотношения, например, входящего трафика и загрузки бэкендов. Всё это после серьёзного, но благодарного труда, работает в динамической инфраструктуре и не срабатывает без повода, а если уж срабатывает, то к каждому инциденту можно приложить какой угодно контекст с состоянием (графиком параметров) системы, вычислением условий и ссылками на дашборды.
MIT лицензия, продукт созданный в StackExchange для решения собственных задач, на мой взгляд, ориентирован на компании со средней+ инфраструктурой.
Вероятно, многие пробовали использовать решение Zabbix для мониторинга баз данных. Из моего доклада вы узнаете о нашем опыте его применения, и к чему мы в итоге пришли.
1. Штатный Zabbix-мониторинг баз данных: особенности реализации/настройки в промышленных масштабах
2. Преимущества/недостатки решения мониторинга баз данных от Zabbix SIA
3. Преимущества/недостатки существующих расширений Zabbix для мониторинга баз данных
4. Подробнее о расширении DBforBix v2.3 beta: конфигурирование, возможности
5. Доработка DBforBix: сохраняем преимущества и устраняем недостатки штатного мониторинга баз данных Zabbix
6. Варианты развития идеи
Как перестать хранить секреты в git и начать использовать Hashicorp VaultOleg Mykolaichenko
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрения Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
Prometheus мониторинг микросервисных приложений / Виталий ЛевченкоOntico
Prometheus, в отличие от классических систем, даёт возможность легко поднять и поддерживать мониторинг быстро меняющихся и сложно организованных систем. Я расскажу об опыте внедрения, подводных камнях и неожиданном поведении, покажу способы быстрой конфигурации всей системы, включая уведомления и дашборды.
В дополнение к классическим проблемам мониторинга монолитного приложения, микросервисы создают массу новой головной боли для мониторинга. Расположение сервисов постоянно меняется, часто появляются новые сервисы, меняются зависимости между ними, временные job'ы запускаются в случайном месте — пропадает понятие стабильной конфигурации. Пропадает понятие продакшна: в одной среде запущено множество версий одного сервиса — при деплое, для разных сегментов аудитории, для тестов и т.п. Разработчики же при виде такого счастья склонны быстро улучшать приложение, создавать много новых метрик, постоянно убивать старые и, несмотря на это, ожидать работающий мониторинг и реакции на новые проблемы.
Prometheus построен по мотивам Google Borgmon и отлично решает эти проблемы, предоставляя инструменты для автоматического и быстрого ручного обновления конфигурации. Запустился новый сервер, новый сервис, новая версия — и они уже подключены в мониторинг. Остановились — их там нет, если не нужны. Пропала неактуальная метрика — алертинг умеет с этим жить.
После этого доклада у вас будет понимание, насколько Prometheus подходит для использования в ваших системах.
D2D DevPro 2017: Golang — опыт промышленной разработкиYuriy Vasiyarov
Golang – опыт промышленной разработки
Три года в бою
Фреймворк;
Управление зависимостями;
CI;
Профилирование;
Конфигурирование;
Code style;
Статический анализ кода;
Типичные ошибки;
Производительность Golang приложений;
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Ontico
РИТ++ 2017, Frontend Сonf
Зал Мумбаи, 6 июня, 14:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2471.html
Знаете ли вы, что такое прогрессивный рендеринг?
Почему вам стоит его использовать?
Какие есть варианты сегодня?
Тема: Как перестать бороться с графиками и начать жить
Я расскажу вам про интеграцию Zabbix и Grafana, чтобы вы могли улучшить возможности визуализации данных мониторинга с помощью Grafana.
1. Зачем нужны графики?
2. Как нарисовать 100 графиков за 10 секунд? (Query Editor, Regex, Templating)
3. И что потом с этим делать? ( Max Data Points, Functions, Performance)
4. События – это тоже Time Series (Annotations)
5. Seek & Destroy (Alerting в Grafana)
6. Бонус: Heatmap
Be productive with Javascript in the end of 2016 DataArt
Annotation: Today Javascript is one of the fastest growing programming languages. For the year to update and create a huge number of new libraries, frameworks, and development tools. We will look at the mainstream and well known tools, methodologies and approaches that allow you to be productive and effective with JS. There are a lot of code and examples under the hood.
In scope:
• Classes and Modules
• Promises, Generators, Async/Await
• Other ES6 magic
• Linters & JavaScript style guides
• Testing: TDD, BDD, Debugging
• Build tools
• IDEs
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрению Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
“Обезьянье тестирование” в мобильных проектах, Роман Подолян
Хотите уйти от проторённых путей, проверить приложение самыми разнообразными, случайными последовательностями действий? Задать ему встряску чтобы проверить его на выносливость? Сделать с ним то, что даже не собирались? Отдайте его “обезьяне”.
Bosun современный мониторинг / Дима Медведев (OneTwoTrip)Ontico
Доклад о Bosun (http://bosun.org) — мониторинге от StackExchange и его использовании в https://www.onetwotrip.com/ за 1,5 года.
Строить мониторинг сложно, не работает подход "посадить людей смотреть на дашборды" либо обнаруживать аномалии во всех данных. Алерты должны соответствовать реальности и проверять сложные сценарии. В Bosun, как и во многих современных продуктах, метрики (данные) ортогональны правилам (коду) обнаружения алертов. Это позволяет гораздо быстрее создавать и настраивать правила, в том числе тестируя их на данных из прошлого. Вместо итераций в дни или недели теперь минуты.
Workflow настройки мониторинга точно такой же, как у всех остальных разработчиков, причём они сами могут принимать участие без помощи админов, так же создавая оповещения, перенаправляя инциденты на себя. Таким образом принимая ответственность за то, что они выкатывают в продакшн.
В Bosun продуманная схема данных, а также мощный язык их обработки, напоминающий R/pandas. В несколько строк пишутся map/reduce выражения, проверяющие соотношения, например, входящего трафика и загрузки бэкендов. Всё это после серьёзного, но благодарного труда, работает в динамической инфраструктуре и не срабатывает без повода, а если уж срабатывает, то к каждому инциденту можно приложить какой угодно контекст с состоянием (графиком параметров) системы, вычислением условий и ссылками на дашборды.
MIT лицензия, продукт созданный в StackExchange для решения собственных задач, на мой взгляд, ориентирован на компании со средней+ инфраструктурой.
Вероятно, многие пробовали использовать решение Zabbix для мониторинга баз данных. Из моего доклада вы узнаете о нашем опыте его применения, и к чему мы в итоге пришли.
1. Штатный Zabbix-мониторинг баз данных: особенности реализации/настройки в промышленных масштабах
2. Преимущества/недостатки решения мониторинга баз данных от Zabbix SIA
3. Преимущества/недостатки существующих расширений Zabbix для мониторинга баз данных
4. Подробнее о расширении DBforBix v2.3 beta: конфигурирование, возможности
5. Доработка DBforBix: сохраняем преимущества и устраняем недостатки штатного мониторинга баз данных Zabbix
6. Варианты развития идеи
Как перестать хранить секреты в git и начать использовать Hashicorp VaultOleg Mykolaichenko
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрения Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
Prometheus мониторинг микросервисных приложений / Виталий ЛевченкоOntico
Prometheus, в отличие от классических систем, даёт возможность легко поднять и поддерживать мониторинг быстро меняющихся и сложно организованных систем. Я расскажу об опыте внедрения, подводных камнях и неожиданном поведении, покажу способы быстрой конфигурации всей системы, включая уведомления и дашборды.
В дополнение к классическим проблемам мониторинга монолитного приложения, микросервисы создают массу новой головной боли для мониторинга. Расположение сервисов постоянно меняется, часто появляются новые сервисы, меняются зависимости между ними, временные job'ы запускаются в случайном месте — пропадает понятие стабильной конфигурации. Пропадает понятие продакшна: в одной среде запущено множество версий одного сервиса — при деплое, для разных сегментов аудитории, для тестов и т.п. Разработчики же при виде такого счастья склонны быстро улучшать приложение, создавать много новых метрик, постоянно убивать старые и, несмотря на это, ожидать работающий мониторинг и реакции на новые проблемы.
Prometheus построен по мотивам Google Borgmon и отлично решает эти проблемы, предоставляя инструменты для автоматического и быстрого ручного обновления конфигурации. Запустился новый сервер, новый сервис, новая версия — и они уже подключены в мониторинг. Остановились — их там нет, если не нужны. Пропала неактуальная метрика — алертинг умеет с этим жить.
После этого доклада у вас будет понимание, насколько Prometheus подходит для использования в ваших системах.
D2D DevPro 2017: Golang — опыт промышленной разработкиYuriy Vasiyarov
Golang – опыт промышленной разработки
Три года в бою
Фреймворк;
Управление зависимостями;
CI;
Профилирование;
Конфигурирование;
Code style;
Статический анализ кода;
Типичные ошибки;
Производительность Golang приложений;
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Ontico
РИТ++ 2017, Frontend Сonf
Зал Мумбаи, 6 июня, 14:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2471.html
Знаете ли вы, что такое прогрессивный рендеринг?
Почему вам стоит его использовать?
Какие есть варианты сегодня?
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
HighLoad++ 2017
Зал «Пекин + Шанхай», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2991.html
Нынче стало модно выделять UI-компоненты в отдельную библиотеку и использовать её в нескольких проектах. Мы в команде почты Mail.ru делаем так же, но столкнулись с проблемой: каждый разработчик, меняя библиотеку под свои нужды, обязательно ломает что-нибудь, что работало у других.
Я расскажу о том, как мы решили эту проблему, и о том, какие инструменты для этого можно использовать. Storybook, BackstopJS, Jest, Webdriver.io, TypeScript - в их числе.
Javascript-фреймворки: должен остаться только одинSergey Xek
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
SECON'2016. Сергей Аверин. Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет. В докладе пойдет речь о том, что хорошо работающий фронтенд — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но и циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
SECON'2016. Аверин Сергей, Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
РИТ++ 2017, Backend Conf
Зал Кейптаун, 5 июня, 10:00
Тезисы:
http://backendconf.ru/2017/abstracts/2773.html
В этом докладе я рассмотрю несколько перспективных, на мой взгляд, баз данных, которые пока еще не очень популярны, но которые определенно ждет успех в будущем, особенно для highload-проектов. Я расскажу о Tarantool, ClickHouse и CockroachDB, о том, как они устроены, и почему я считаю, что они в будущем станут стандартом де-факто, как раньше был MySQL, а сейчас — MongoDB.
...
Доклад от Parallels:
Методики тестировния производительности database-centric приложений
Описание: При работе над сложными продуктами в database-centric приложениях изменения в коде и тем более в SQL запросах к базе данных могут приводить к неожиданным падениям производительности или же деградации производительности приложения с ростом размера базы данных. Поэтому важно уметь как можно быстрее отлавливать и исправлять причины таких деградаций.
Доклад о том, как устроен процесс мониторинга производительности продукта автоматизации хостинга и облачных сервисов Parallels Automation, для которого определяющим фактором является производительность базы данных.
Компания покажет, как анализирует планы исполнения SQL запросов внутри PostgreSQL, как проверяет насколько быстро и эффективно в целом работают SQL запросы, как определяет стратегию дальнейшей оптимизации.
Карта граблей на поле сбора и доставки логов. Lazada-way.Yury Bushmelev
Слайды с моего доклада на HL++ 2017 о том, как мы в Лазаде строили систему сбора и доставки логов, с какими трудностями мы при этом столкнулись и какие выводы сделали.
Карта граблей на поле сбора и доставки логов. Lazada-way / Юрий Бушмелев (Laz...Ontico
HighLoad++ 2017
Зал «Пекин+Шанхай», 7 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/3036.html
Логи — важная часть системы, позволяющая понять, что она работает (либо не работает), как ожидается. В условиях микросервисной архитектуры работа с логами становится отдельной дисциплиной специальной олимпиады. Нужно решить сразу кучу вопросов:
- как писать логи из приложения;
- куда писать логи;
- как доставлять логи для хранения и обработки;
- как обрабатывать и хранить логи.
...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...JSC “Arcadia Inc”
Представьте себе ситуацию: к вам приходит заказчик, у него уже есть продукт, и вам надо организовать процесс и создать соответствующую инфраструктуру так, чтобы сделать работу над продуктом максимально удобной и эффективной. Какие шаги были сделаны и почему, какие проблемы встретились и как были решены проектной командой в вышеописанной ситуации, к чему всё это привело на данный момент — об этом и будет рассказано в докладе.
Similar to Стачка 2017: Golang – опыт промышленной разработки (20)
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
Стачка 2017: Golang – опыт промышленной разработки
1. Golang – опыт промышленной
разработки
Три года в бою
Васияров Юрий
SVP Engineering
Lazada Group
2. О компании Lazada
• Основана в 2012 году
• Крупнейшая e-commerce компания
Юго-Восточной Азии
• Работает в 6 странах Юго-Восточной
Азии с суммарным населением 650M
человек
• Более 40 миллионов продуктов
• 1.2M товаров за время последней
распродажи (3 дня)
• С 2016 года является частью Alibaba
Group
2
4. Команда Lazada
• 4 TechHub: Вьетнам,
Сингапур, Бангкок,
Москва
• Более 650 инженеров
• Разработка платформы
только на Golan
• 90% платформы
разрабатывается в
Москве
• Более 100 Golang
программистов в
московской команде
4
5. Почему именно Golang ?
5.5 часов 2.5 часа 30 минут 2-3 минуты
5
Оптимизации
PHP
2x 5x 10x
Параллелизация
Оптимизация
Go кода
История одной оптимизации
10. Наш фреймворк - Brick
• Роутинг: gorilla/mux
• Транспорт: REST/RPC, grpc
• Dependency injection: github.com/
tsaikd/inject
• Логгирование: небольшая обертка
вокруг unixgram
• Мониторинг: обертка вокруг
Prometheus клиента
• Работа с базой данных: gorp
• Юнит тесты: github.com/stretchr/
testify или https://github.com/go-
check/check
10
11. Документирование - Swagger
• Swagger описание
генерируется
автоматически при
помощи рефлексии
• Также используется для
расчета покрытия
функциональными
тестами
• github.com/lazada/
swgen
• github.com/lazada/swgui
11
12. Профилирование
• Простой интерфейс для запуска/остановки профайлера
• Автоотключение через 5 минут
• Удобная возможность скачать профайл вместе с бинарным
файлом
• Активно используется в production
github.com/lazada/goprof
12
17. Циклические зависимости
• Не усложняйте
• Пакеты должны быть самодостаточными
• Взаимодействие между пакетами - только через
интерфейсы
https://peter.bourgon.org/go-in-production/
17
19. Кэширование в памяти
• Отдельный кэш для каждого экземпляра приложения. Меньше попаданий
в кэш
• Должен быть ограничен по размеру
• Вытеснение также должно работать за O(1)
• Внутренние блокировки
• Кэширование ссылочных структур данных приводит к race condition
Может быть полезен:
github.com/lazada/go-copy-interfaces
19
25. database/sql
• Когда создается подключение ?
• Когда оно закрывается ?
• А сколько вообще этих подключений ?
• А есть ли ограничение на максимальное количество
соединений ?
• А что случится если в пуле не будет свободных
соединений ?
• А что если SQL сервер закроет соединение ?
sql.DB - это пул соединений
25
28. Типичные ошибки при работе с database/sql
• Использование Defer внутри цикла
• Использование нескольких sql.DB объектов
• Prepared statement используются только
однажды
• Использование db.Query() не для чтения
• Предположение о том что последующие запросы
будут использовать то же подключение
• Использование объекта sql.DB во время работы
с транзакцией
28
30. Code style
• go fmt/goimports - не обсуждается
• go vet - не обсуждается
• Go Code Review Comments - не является обязательным
30
31. Как выучить Golang за 24 часа
• Golang tour - http://tour.golang.org/#1
• OOP
• Methods: a taste of OOP - http://go-book.appspot.com/methods.html
• More meth(odes) please! http://go-book.appspot.com/more-methods.html
• 50 Shades of Go - http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/
• Effective Go - http://golang.org/doc/effective_go.html
• Golang Blog
• http://blog.golang.org/slices
• http://blog.golang.org/go-slices-usage-and-internals
• http://blog.golang.org/go-maps-in-action
• http://blog.golang.org/cover
• Go Data Structures
• https://research.swtch.com/godata
• https://research.swtch.com/interfaces
• Common Pitfalls When Using database/sql in Go - https://www.vividcortex.com/blog/2015/09/22/
common-pitfalls-go/
31
32. Вопросы ?
Васияров Юрий,
SVP Engineering,
Lazada Group
yuriy.vasiyarov@gmail.com
https://github.com/yvasiyarov
32