Раньше PaaS системы казались чем-то сложным и недосягаемым. И немногие могли попытаться реализовать такую систему самостоятельно. Но стремительное развитие технологий снизило порог входа в мир PaaS. Появилось множество готовых продуктов. И более того, вы сами можете сделать свой PaaS.
В своём докладе я поделюсь опытом проектирования и создания PaaS системы на базе docker, registrator, etcd, confd и ansible. Расскажу, почему я решил сделать его самостоятельно, а не взять готовый, поделюсь опытом реального использования этого продукта в production.
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)Ontico
РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 10:00
Тезисы:
http://rootconf.ru/2017/abstracts/2830.html
Про DevOps, как и про Agile, сейчас говорят все, но все равно ничего не понятно. Часто послушаешь доклад и ощущение, что все в компании и так по DevOps, и не надо ничего делать, или, наоборот, ощущение, что это совершенно дикая история, и DevOps-практики категорически противопоказаны.
Мы не хотим рассказывать, что такое DevOps, а расскажем о мифах, которые вредят пониманию. Их не так много, но важно о них знать, потому что эти мифы для вас будут маркерами неправильных управленческих и инженерных решений:
1) DevOps может делать DevOps-отдел или DevOps-инженер.
2) DevOps — это про то, что надо нанимать специалистов-многостаночников, которые умеют все.
...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2914.html
Казалось бы, что нужно для организации тестового окружения? Тестовая железка и копия боевого окружения - и тестовый сервер готов. Но как быть, когда проект сложный? А когда большой? А если нужно тестировать одновременно много версий? А если все это вместе?
Организация тестирования большого развивающегося проекта, где одновременно в разработке и тестировании около полусотни фич - достаточно непростая задача. Ситуация обычно осложняется тем, что иногда есть желание потрогать еще не полностью готовый функционал. В таких ситуациях часто возникает вопрос: "А куда это можно накатить и где покликать?"
...
Раньше PaaS системы казались чем-то сложным и недосягаемым. И немногие могли попытаться реализовать такую систему самостоятельно. Но стремительное развитие технологий снизило порог входа в мир PaaS. Появилось множество готовых продуктов. И более того, вы сами можете сделать свой PaaS.
В своём докладе я поделюсь опытом проектирования и создания PaaS системы на базе docker, registrator, etcd, confd и ansible. Расскажу, почему я решил сделать его самостоятельно, а не взять готовый, поделюсь опытом реального использования этого продукта в production.
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)Ontico
РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 10:00
Тезисы:
http://rootconf.ru/2017/abstracts/2830.html
Про DevOps, как и про Agile, сейчас говорят все, но все равно ничего не понятно. Часто послушаешь доклад и ощущение, что все в компании и так по DevOps, и не надо ничего делать, или, наоборот, ощущение, что это совершенно дикая история, и DevOps-практики категорически противопоказаны.
Мы не хотим рассказывать, что такое DevOps, а расскажем о мифах, которые вредят пониманию. Их не так много, но важно о них знать, потому что эти мифы для вас будут маркерами неправильных управленческих и инженерных решений:
1) DevOps может делать DevOps-отдел или DevOps-инженер.
2) DevOps — это про то, что надо нанимать специалистов-многостаночников, которые умеют все.
...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2914.html
Казалось бы, что нужно для организации тестового окружения? Тестовая железка и копия боевого окружения - и тестовый сервер готов. Но как быть, когда проект сложный? А когда большой? А если нужно тестировать одновременно много версий? А если все это вместе?
Организация тестирования большого развивающегося проекта, где одновременно в разработке и тестировании около полусотни фич - достаточно непростая задача. Ситуация обычно осложняется тем, что иногда есть желание потрогать еще не полностью готовый функционал. В таких ситуациях часто возникает вопрос: "А куда это можно накатить и где покликать?"
...
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)Ontico
Всем, кто сталкивался с запуском веб-сервисов, хорошо знакомы вопросы, возникающие при выпуске нового продукта:
- нужно создать вируталки/залить сервера;
- нужно обеспечить мониторинг сервиса;
- обеспечить zero-downtime обновление приложения;
- ... ещё 100500 разных задач.
Зачастую эти задачи решаются либо руками, либо различными связками систем управления конфигурацией и деплойментом.
Мы нашли способ, значительно сокративший время на запуск новых приложений — веб-платформа Deis. Она построена на Docker и CoreOS и представляет собой легковесный PaaS, похожий на Heroku. Подходы, используемые при работе с Deis, облегчают внедрение CD/CI, уменьшают разрыв между dev/stage и production окружениями, уменьшают время на поддержку приложений.
Мы поговорим о проблемах, перечисленных выше, о том, какой путь пройден нами до продакшна, и о том, какие проблемы Deis не решает.
Доклад будет полезен как для Ops, которым хочется автоматизировать типичные задачи вокруг деплоя/обновления веб-сервиса, так и для Dev, которые могут увидеть потенциальную возможность ускорения доставки багфиксов/фич на бой.
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)Ontico
РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 12:00
Тезисы:
http://rootconf.ru/2017/abstracts/2750.html
Web-отдел 2ГИС - это 5 команд разработки и более 20 проектов разного калибра. Это означает множество релизов каждый день и постоянные изменения.
Что мы имели раньше? Команда - bottleneck из нервных админов, работающих часто сверхурочно.
Что сейчас - команда инфраструктурных инженеров, предоставляющая сервисы для команд разработки.
В своем докладе я расскажу, чем первое отличается от второго, как мы к этому пришли, и почему теперь нервов стало меньше.
Переосмысливая подход к инфраструктурному коду / Евгений Пивень (IPONWEB)Ontico
HighLoad++ 2017
Зал «Дели + Калькутта», 8 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/3033.html
Legacy-код - это проблема, которая затрагивает не только программный, но и инфраструктурный код. Причём невозможность двигаться вперёд и большие риски, связанные с изменением логики, грозят ничуть не меньшими потерями.
Я расскажу о том, как в нашей компании мы проводили рефакторинг и модулирование огромного куска Puppet-кода, который обслуживает множество проектов, вводили тестирование, и к чему это всё привело.
...
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)Ontico
РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 6 июня, 18:00
Тезисы:
http://rootconf.ru/2017/abstracts/2679.html
Об SDN/OpenFlow говорят давно и много: разделение уровней управления и передачи данных, сетевая логика выносится в отдельный централизованный узел, называемый контроллером сети. На выходе получаем удешевление оборудования, автоматизацию и упрощение управления сетями. Уже сейчас эти технологии применяются и в ЦОД, и у операторов связи, и в больших корпоративных сетях. Но возникает справедливый вопрос: "Мы, конечно, рады за Google, AT&T и Microsoft, но что они дают нам, простым пользователям? Где мы можем их применить в наших задачах и можем ли мы вообще?". Короткий ответ: "Да, можем!".
...
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
Параллелизация тестов, а именно: лучший пхп тулл для автоматизации (Codeception); основы Docker контейнирезации; robo - что это и зачем он нам нужен; profit
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
Сегодня Интернет увлечен микросервисами, контейнерами и immutable-инфраструктурой. Очень сложно не поддаться искушению внедрить что-то подобное в компании, в которой вы работаете сейчас. Я попытаюсь отговорить вас использовать эти технологии во вред приложению, себе и бизнесу компании в целом. Я расскажу о типовом проекте, который был запущен в 20 странах за 4 месяца, проблемах, которые я встретил, и выводах, которые я сделал.
- Почему микросервисы не спасут, а похоронят ваш проект.
Я расскажу на основе собственного опыта, почему не стоит увлекаться микросервисами для небольших проектов, почему благие намерения — упрощение деплоя и увеличение числа деплоев, увеличение доступности и улучшение масштабирования ведут к отсутствию гибкости и критическому уменьшению стабильности системы.
- Почему ваша система слишком сложна для своих задач.
Я расскажу, почему не стоит усложнять систему, почему, скорее всего, ваша система слишком сложна для задач, которые она решает и почему вы не контролируете то, что происходит в системе. Я объясню, почему вы потратите все свое время на отладку сложной системы, вместо того чтобы решать задачи бизнеса.
- Почему Docker используется неправильно.
Будут предоставлены реальные примеры использования Docker для нового проекта и для портированного проекта, я объясню, с какими проблемами сталкиваются операторы при работе с Docker на живых примерах, объясню, почему вы, скорее всего, используете Docker неправильно, и предложу варианты, как этого избежать.
- Почему immutable слишком статичен для вашей компании.
Я расскажу про свой опыт работы с immutable и объясню, почему, на мой взгляд, переход к подобной инфраструкт
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)Ontico
Всем, кто сталкивался с запуском веб-сервисов, хорошо знакомы вопросы, возникающие при выпуске нового продукта:
- нужно создать вируталки/залить сервера;
- нужно обеспечить мониторинг сервиса;
- обеспечить zero-downtime обновление приложения;
- ... ещё 100500 разных задач.
Зачастую эти задачи решаются либо руками, либо различными связками систем управления конфигурацией и деплойментом.
Мы нашли способ, значительно сокративший время на запуск новых приложений — веб-платформа Deis. Она построена на Docker и CoreOS и представляет собой легковесный PaaS, похожий на Heroku. Подходы, используемые при работе с Deis, облегчают внедрение CD/CI, уменьшают разрыв между dev/stage и production окружениями, уменьшают время на поддержку приложений.
Мы поговорим о проблемах, перечисленных выше, о том, какой путь пройден нами до продакшна, и о том, какие проблемы Deis не решает.
Доклад будет полезен как для Ops, которым хочется автоматизировать типичные задачи вокруг деплоя/обновления веб-сервиса, так и для Dev, которые могут увидеть потенциальную возможность ускорения доставки багфиксов/фич на бой.
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)Ontico
РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 12:00
Тезисы:
http://rootconf.ru/2017/abstracts/2750.html
Web-отдел 2ГИС - это 5 команд разработки и более 20 проектов разного калибра. Это означает множество релизов каждый день и постоянные изменения.
Что мы имели раньше? Команда - bottleneck из нервных админов, работающих часто сверхурочно.
Что сейчас - команда инфраструктурных инженеров, предоставляющая сервисы для команд разработки.
В своем докладе я расскажу, чем первое отличается от второго, как мы к этому пришли, и почему теперь нервов стало меньше.
Переосмысливая подход к инфраструктурному коду / Евгений Пивень (IPONWEB)Ontico
HighLoad++ 2017
Зал «Дели + Калькутта», 8 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/3033.html
Legacy-код - это проблема, которая затрагивает не только программный, но и инфраструктурный код. Причём невозможность двигаться вперёд и большие риски, связанные с изменением логики, грозят ничуть не меньшими потерями.
Я расскажу о том, как в нашей компании мы проводили рефакторинг и модулирование огромного куска Puppet-кода, который обслуживает множество проектов, вводили тестирование, и к чему это всё привело.
...
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)Ontico
РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 6 июня, 18:00
Тезисы:
http://rootconf.ru/2017/abstracts/2679.html
Об SDN/OpenFlow говорят давно и много: разделение уровней управления и передачи данных, сетевая логика выносится в отдельный централизованный узел, называемый контроллером сети. На выходе получаем удешевление оборудования, автоматизацию и упрощение управления сетями. Уже сейчас эти технологии применяются и в ЦОД, и у операторов связи, и в больших корпоративных сетях. Но возникает справедливый вопрос: "Мы, конечно, рады за Google, AT&T и Microsoft, но что они дают нам, простым пользователям? Где мы можем их применить в наших задачах и можем ли мы вообще?". Короткий ответ: "Да, можем!".
...
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
Параллелизация тестов, а именно: лучший пхп тулл для автоматизации (Codeception); основы Docker контейнирезации; robo - что это и зачем он нам нужен; profit
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
Сегодня Интернет увлечен микросервисами, контейнерами и immutable-инфраструктурой. Очень сложно не поддаться искушению внедрить что-то подобное в компании, в которой вы работаете сейчас. Я попытаюсь отговорить вас использовать эти технологии во вред приложению, себе и бизнесу компании в целом. Я расскажу о типовом проекте, который был запущен в 20 странах за 4 месяца, проблемах, которые я встретил, и выводах, которые я сделал.
- Почему микросервисы не спасут, а похоронят ваш проект.
Я расскажу на основе собственного опыта, почему не стоит увлекаться микросервисами для небольших проектов, почему благие намерения — упрощение деплоя и увеличение числа деплоев, увеличение доступности и улучшение масштабирования ведут к отсутствию гибкости и критическому уменьшению стабильности системы.
- Почему ваша система слишком сложна для своих задач.
Я расскажу, почему не стоит усложнять систему, почему, скорее всего, ваша система слишком сложна для задач, которые она решает и почему вы не контролируете то, что происходит в системе. Я объясню, почему вы потратите все свое время на отладку сложной системы, вместо того чтобы решать задачи бизнеса.
- Почему Docker используется неправильно.
Будут предоставлены реальные примеры использования Docker для нового проекта и для портированного проекта, я объясню, с какими проблемами сталкиваются операторы при работе с Docker на живых примерах, объясню, почему вы, скорее всего, используете Docker неправильно, и предложу варианты, как этого избежать.
- Почему immutable слишком статичен для вашей компании.
Я расскажу про свой опыт работы с immutable и объясню, почему, на мой взгляд, переход к подобной инфраструкт
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Andrey Karpov
Есть ошибки, которые легко прячутся от программистов на обзорах кода. Чаще всего они связаны с опечатками или недостаточным знанием тонких нюансах языка/библиотеки. Давайте посмотрим интересные примеры таких ошибок и как их можно выявить с помощью статического анализа. При этом анализаторы не конкурируют с обзорами кода или, например, юнит-тестами. Они отлично дополняют другие методологии борьбы с ошибками.
Поиск уязвимостей с использованием статического анализа кодаcorehard_by
Поиск уязвимостей с использованием статического анализа кода, Андрей Карпов и Евгений Рыжков
В последнее время мы все слышим о новых и новых уязвимостях, обнаруженных в программном обеспечении. Уже стало очевидно, что писать код без уязвимостей человечество не может. Но могут ли современные инструменты разработки помочь обнаружить хотя бы некоторые ошибки? В докладе НЕ будет фраз типа «купите такой-то инструмент, чтобы не допускать уязвимостей в своем и чужом коде». На реальных примерах мы попробуем показать какие типы уязвимостей или по-другому программных дефектов могут быть найдены с помощью технологий анализа кода, а какие – пока нет. Ну и конечно как писать код так, чтобы снизить вероятность появления уязвимостей в своем коде.
Поиск уязвимостей с использованием статического анализа кодаAndrey Karpov
Уязвимости - это те же самые обыкновенные ошибки. Зачем их выделять? Делайте это, если хотите заработать больше денег. CWE - Common Weakness Enumeration. CVE - Common Vulnerabilities and Exposures. Теперь с помощью Valgrind вы ищете не утечку памяти, а отказ в обслуживании!
Есть такая штука как инструментирование кода. Мало кто знает о ней, даже пользуясь результатами ее применения. Между тем, с инструментированием можно делать много всего интересного и, главное, полезного. Например, это может вам помочь лучше понять код или сделать процесс разработки более эффективным. Примеры инструментирования кода и принципы его работы.
Семинар по Node.js в КПИ 20 октября 2014. Докладчики: Тимур Шемсединов, Никита Савченко, Максим Петренко. Краткое содержание:
* Что такое Node.js и как работает JavaScript в V8
* Профессионалы расскажут, почему они выбрали Node.js
* Вы узнаете его сильные и слабые стороны и где его лучше применять
* Будет полный обзор особеностей и внутреннего строения Node.js
* Примеры внедрения и Highload-проекты
* Вопросы развертывания, хостинг, тестирования, и отладки
* Где и что учить, что читать, как осваивать
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
Окружение JavaScript, наверно, самая быстроразвивающаяся отрасль в мире разработки программного обеспечения. Все слышали шутку про книгу “36 новых JavaScript фреймворков, выпущенных в марте”, и это не далеко от правды.
В своем обзорном докладе я расскажу о своем пути во frontend. О том, как вижу современную индустрию, о существующих проблемах и путях их решения. Все не так уж радужно, как может показаться. Надеюсь, мой доклад позволит вам взглянуть на мир JavaScript с другой стороны или, по крайней мере, задуматься о том, в правильном ли направлении вы движетесь?
Доклад с конференции D2D Pizza JS - http://dev2dev.ru/events/8/
Valentin Simonov “Who cracks our games and how that is done”DevGAMM Conference
The lecture concerns spiteful hackers and the millions of those monkeys we have to resist every day. Are there any ways to protect ourselves of them and how. What should we pay prior attention to in online and offline games. The stories from real life and the real examples of cracking a few famous games.
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
Кто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
OctoLab Cookbook: Go lang tips and tricks - protection of sensitive config dataKamil Samigullin
This document discusses protecting sensitive configuration data in Go programs. It outlines three common problems when printing, logging, or JSON encoding sensitive data. The solution presented uses interfaces like fmt.Stringer, fmt.GoStringer, and json.Marshaler to obfuscate the sensitive data without changing existing code. An example is provided that brings these concepts together. The author encourages reaching out if there are any other questions.
OctoLab Cookbook: how to use composer.yml and stop creating issues aboutKamil Samigullin
This document provides a solution for converting YAML files to JSON files using Python and the PyYAML and JSON modules. It explains how to install PyYAML, provides a Python script to perform the conversion, and suggests integrating it as an alias. Using this approach avoids issues that arise from not properly defining dependencies in composer.yml.
OctoLab Cookbook: how to generate a unique key for a sequenceKamil Samigullin
This document presents three iterations of a solution to generate a unique key for sequences when merging multiple CSV files imported into a database table. The first iteration uses a simple unique index on timestamp, payment, and currency fields. The second iteration buffers rows and calculates a forward hash. The third iteration adds a backward hash for a not-nullable combination to allow importing CSV files in any order. The solution benefits import order flexibility with minimal code changes from the original approach.
This document discusses refactoring code to improve quality. It covers best practices like SOLID principles, code style standards, and algorithm complexity reductions. Integrated development environments, code review, continuous integration, logging aggregation, and profiling are presented as tools to help with refactoring. Specific tools that the author recommends and has experience with are also listed, like PhpStorm, GitHub, Jenkins, RSYSLOG, and Blackfire. Useful links and plugins are provided at the end.
7. Почему не проще?
• Код, в принципе, решает свои задачи
• На него потрачено немало человеко-часов
• Ресурсы ограничены и много текущих задач
• Есть другой подход - evolution
8. Как будем улучшать?
• Будем использовать composer
• Придерживаться стандартов PSR
• Поэтапно рефакторить
• Отлаживать только с Xdebug
• Профилировать код (в том числе и в бою)
9. Наследство
• проект живет с 17 июля 2011
• построен на Zend 1 (Zend 2 уже больше двух лет*)
• My_Super_Awesome_Class (пространству имен уже два года*)
• отсутствие единого стандарта (до PSR еще долгих два года*)
• отсутствие цельной архитектуры (толстые контроллеры; мешанина
из php и sql; массивы адской структуры)
• сторонние библиотеки в library (composer только на подходе*)
• код опирается на PHP 5.2 (PHP 5.3 уже два года*)
* на момент старта разработки
11. • Проще управлять зависимостями
• Проще обновлять сторонние библиотеки
• Очень гибкий инструмент:
• version: ~x.y, > x.z; x.y.z; x.*
• private: Satis или Toran Proxy
• non-composer: директива repositories
• Автозагрузка PSR-0, PSR-4 и не только
• Разработчики не лезут в исходный код сторонних библиотек!
Какие преимущества?
13. Составьте roadmap по
рефакторингу
• Придерживайтесь стандарту PSR-4 для улучшения
структуры проекта
• Пишите unit-тесты
• Покрывайте критичный функционал приемочными
тестами
• Придерживайтесь принципов SOLID, DRY, KISS и YAGNI
• Анализируйте логи
14. Анализ логов для
рефакторинга
• Настроили rsyslog и logrotate для сбора логов со
всех боевых машин
• cat %project%-pool-ro.log | grep -Eo "PHP.*[0-9]" | sort
| uniq -c
• Количество вхождений - вес; в каждый следующий
релиз обязательно включаем парочку ошибок с
наибольшим весом
15. 52 PHP Fatal error: Call to a member function getId() on a non-object in %file% on line 1233
1871 PHP Fatal error: Call to a member function setPrice() on a non-object in %file% on line 125
217392 PHP Warning: array_key_exists() expects parameter 2 to be array, null given in %file% on line 826
29676 PHP Strict Standards: Only variables should be passed by reference in %file% on line 1269
217392 PHP Warning: array_key_exists() expects parameter 2 to be array, null given in %file% on line 826
147344 PHP Warning: Invalid argument supplied for foreach() in %file% on line 2522
и еще сотни строк
* количество записей в день
Что получили в начале
16. 7 PHP Warning: array_key_exists() expects parameter 2 to be array, null given in %file% on line 333
75 PHP Warning: array_key_exists() expects parameter 2 to be array, null given in %file% on line 336
60 PHP Warning: Creating default object from empty value in %file% on line 60
1 PHP Warning: Invalid argument supplied for foreach() in %file% on line 215
86 PHP Warning: Invalid argument supplied for foreach() in %file% on line 2198
64 PHP Warning: Invalid argument supplied for foreach() in %file% on line 407
75 PHP Warning: Invalid argument supplied for foreach() in %file% on line 55
Что имеем сейчас
17. Что дальше
Собираем slowlog с помощью fabric
@task(default=True)
def alalyze_slow_logs():
execute(get_slow_log_ro)
execute(agregate_slow_log_ro)
execute(alalyze_slow_log_ro)
@task
@parallel
@roles('dbro')
def get_slow_log_ro():
get(
env.log_remote_path + 'slow.log',
env.log_local_path + 'slow_ro.%s.log' % (env.host)
)
@task
def agregate_slow_log_ro():
local('cat %s/slow_ro.*.log > %s/slow_ro.log' % (
env.log_local_path,
env.log_local_path
))
@task
def alalyze_slow_log_ro():
local('mysqldumpslow %s/slow_ro.log > %s/total_slow_ro.log' % (
env.log_local_path,
env.log_local_path
))
- просто `$ fab` для старта
- параллельно собираем slow.log со всех тачек
- собираем в один файл для обработки
- прогоняем его через mysqldumpslow
21. Почему сразу не использовать
Xdebug?!
• Сложно настроить удаленную отладку
• ssh -R 9191:127.0.0.1:9000 sandbox
• Сложно настроить отладку через шлюз
• ProxyCommand или ssh -L 9191:sandbox:9191 -R
9191:127.0.0.1:9000 gateway
• var_dump(…); die(); быстрее
• на самом деле это наиболее затратный по времени способ
отладки
23. Пользуйтесь профилировщиком
для поиска узких мест
• В качестве профилировщика взяли Pinba
• В качестве «клиента» взяли Intaro Pinboard
• Для включения профилировщика используем
подход Progressive Enhancement (состояние
окружения)
28. Спасибо за внимание!
Есть вопросы?
Камиль Самигуллин
какой-то разработчик
kamil@samigullin.info
@ikamilsk
github.com/kamilsk
linkedin.com/in/kamilsk