"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
DevConf 2016
"Великолепный API без Rest", Констатин Якушев (Badoo)
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.
"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
DevConf 2016
"Великолепный API без Rest", Констатин Якушев (Badoo)
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.
Доклад с PUG#2 https://www.facebook.com/events/292457000957088/
Доклад о работе в Shell, исполнении PHP в Shell, использовании REPL в PHP, а также эпический батл между Boris и PsySH.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
Доклад с PUG#4 https://www.facebook.com/events/350783888446030/
Рассмотрим:
- Что такое Highload, термины, инструменты.
- Где тормозит PHP, родовые травмы языка, как с ними жить.
- Скорость работы vs скорость разработки.
- Архитектура, что стоит делать и когда.
Подготовили:
Лис Анастасия
Белоусова Анна
Ладутько Виктория
Лустенков Егор
ТОП-3:
1. Google Chrome
2. Mozilla Firefox
3. Opera
Ссылка на документ:
https://docs.google.com/spreadsheets/d/1HHCYtAqEWZEV3SY7ITmUgJgPK5kn20HWmkLxJToPwVI/edit#gid=1971600642
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...Ontico
На сегодняшний день frontend-технологии - одна из наиболее динамично развивающихся отраслей информационных технологий. Появилось множество реализаций известных шаблонов проектирования, написаны тысячи строк Javascript-кода и потрачены сотни часов на stackoverflow для понимания работы этого самого кода. Несмотря на различные подходы, все эти инструменты служат нескольким важным принципам: снижению сложности, улучшению модульности и архитектуры в целом.
HTML5 Web Components стандартизируют эти идеи, прошедшие через огонь, воду и тяжелые Javascript-фреймворки. Мы поделимся опытом внедрения Web Components в проект с объемной single-page логикой, расскажем, как удобнее работать с веб-компонентами, принимая во внимание текущее состояние реализации, а также дадим советы, где постелить соломы при вашем собственном старте работы с веб-компонентами.
Основные моменты доклада:
— Для каких проектов Web Components будут полезны в первую очередь;
— Действительно ли Web Components настолько удобны? Примеры “до” и “после”;
— Текущие проблемы реализации в браузерах и их решение;
— Как быть с текущими фреймворками и шаблонизаторами: что можно подружить, а от чего проще отказаться;
— Как начать интегрировать Web Components в текущее решение и на какие стороны вашего проекта обратить особое внимание.
Описана методология построения бюджетного бекэнда для push-уведомлений своими руками. Как избежать трат на облачные системы, в чем преимущества собственных решений.
4 года разрабатывает видеостриминговый сервер эрливидео и в этом докладе расскажет о некоторых отличительных возможностях Erlang, которые позволяют быстро развиваться и поддерживать высочайшее качество ПО минимальными усилиями.
Презентация доклада с Web Camp 2015 года.
История Push уведомлений. APNS и GCM.
Устройство и механика новых web push уведомлений.
Практическое руководство по созданию собственной системы push
Uladzimir Kalashnikau (EPAM Systems): Magento 2 Import/Export: Performance Challenges and Victories We Got at Open Source Ecommerce
Владимир Калашников (EPAM Systems): Импорт/экспорт для Magento 2: решение проблем производительности и наши успехи в open source e-commerce
Denis Bosak (Magecom): Front-end in Magento, and more. Prospects, technologies, and tools.
Денис Босак (Magecom): Front-end в Magento и не только. Перспективы, технологии, инструменты.
Доклад с PUG#2 https://www.facebook.com/events/292457000957088/
Доклад о работе в Shell, исполнении PHP в Shell, использовании REPL в PHP, а также эпический батл между Boris и PsySH.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
Доклад с PUG#4 https://www.facebook.com/events/350783888446030/
Рассмотрим:
- Что такое Highload, термины, инструменты.
- Где тормозит PHP, родовые травмы языка, как с ними жить.
- Скорость работы vs скорость разработки.
- Архитектура, что стоит делать и когда.
Подготовили:
Лис Анастасия
Белоусова Анна
Ладутько Виктория
Лустенков Егор
ТОП-3:
1. Google Chrome
2. Mozilla Firefox
3. Opera
Ссылка на документ:
https://docs.google.com/spreadsheets/d/1HHCYtAqEWZEV3SY7ITmUgJgPK5kn20HWmkLxJToPwVI/edit#gid=1971600642
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...Ontico
На сегодняшний день frontend-технологии - одна из наиболее динамично развивающихся отраслей информационных технологий. Появилось множество реализаций известных шаблонов проектирования, написаны тысячи строк Javascript-кода и потрачены сотни часов на stackoverflow для понимания работы этого самого кода. Несмотря на различные подходы, все эти инструменты служат нескольким важным принципам: снижению сложности, улучшению модульности и архитектуры в целом.
HTML5 Web Components стандартизируют эти идеи, прошедшие через огонь, воду и тяжелые Javascript-фреймворки. Мы поделимся опытом внедрения Web Components в проект с объемной single-page логикой, расскажем, как удобнее работать с веб-компонентами, принимая во внимание текущее состояние реализации, а также дадим советы, где постелить соломы при вашем собственном старте работы с веб-компонентами.
Основные моменты доклада:
— Для каких проектов Web Components будут полезны в первую очередь;
— Действительно ли Web Components настолько удобны? Примеры “до” и “после”;
— Текущие проблемы реализации в браузерах и их решение;
— Как быть с текущими фреймворками и шаблонизаторами: что можно подружить, а от чего проще отказаться;
— Как начать интегрировать Web Components в текущее решение и на какие стороны вашего проекта обратить особое внимание.
Описана методология построения бюджетного бекэнда для push-уведомлений своими руками. Как избежать трат на облачные системы, в чем преимущества собственных решений.
4 года разрабатывает видеостриминговый сервер эрливидео и в этом докладе расскажет о некоторых отличительных возможностях Erlang, которые позволяют быстро развиваться и поддерживать высочайшее качество ПО минимальными усилиями.
Презентация доклада с Web Camp 2015 года.
История Push уведомлений. APNS и GCM.
Устройство и механика новых web push уведомлений.
Практическое руководство по созданию собственной системы push
Uladzimir Kalashnikau (EPAM Systems): Magento 2 Import/Export: Performance Challenges and Victories We Got at Open Source Ecommerce
Владимир Калашников (EPAM Systems): Импорт/экспорт для Magento 2: решение проблем производительности и наши успехи в open source e-commerce
Denis Bosak (Magecom): Front-end in Magento, and more. Prospects, technologies, and tools.
Денис Босак (Magecom): Front-end в Magento и не только. Перспективы, технологии, инструменты.
Sergey Lysak (DiamanteDesk): How to make benefits with multi-channel customer support. Magic recipes for eCommerce.
Сергей Лысак: Волшебный рецепт для электронной коммерции - как благодаря системе многоканальной поддержки клиентов приумножить прибыль.
Kristina Pototskaya (TriggMine): How to gain up revenue on Email marketing: TOP 10 triggered emails
Кристина Потоцкая (TriggMine): Как получить максимум от Email рассылки: 10 лучших триггерных кампаний
Igor Bondarenko (NEKLO): Magento applications and modules functional testing
Игорь Бондаренко (NEKLO): Функциональное тестирование Magento приложений и модулей
Jurģis Lukss (Lux Technology): Building scalable Magento on Microsoft Azure with Chef
Jurģis Lukss (Lux Technology): Масштабирование Magento на Microsoft Azure с помощью Chef
Meet Magento Belarus - Andriy Samilyak speech on 'How we have played DevOps and built an autoscale platform for Magento'
http://by.meet-magento.com/
http://amasty.com/
Meet Magento Belarus - Andrew Klochkov spoke on Building Scalable and Reliable cluster in Cloud Environment (Based on Amazon and Rackspace installations)
http://by.meet-magento.com/
http://amasty.com/
Meet Magento Belarus - Alexander Kaigorodov speech on The Tale of Javascript in Magento: the untapped potential of the client side of the application
http://by.meet-magento.com/
http://amasty.com/
Meet Magento Belarus - Thomas Fleck speech on: What makes Magento special and why Meet Magento community is important
http://by.meet-magento.com/
http://amasty.com/
Real use cases of performance optimization in magento 2Max Pronko
Is performance in Magento 2 the same as or slower than Magento 1? There are lots of discussions and debates about Magento 2’s performance. All debates are around sample data and Vanilla platform comparison. In this topic Max will share optimisations techniques to have solid page load times for Magento 2.
Also visit my blog: www.maxpronko.com
Remote UX Research Videos of real people interacting with your brand, regardless of device or location.
68% Rockefeller Corporation of users give up because they think you don’t care about them.
Beware of Multi Level Lesson one
Poorly organized information • Hover tunnels = early collapsing • Inconsistent triggers
Multi Level Navs • Don’t rely on the back button • Labels help • Remember context
Links should look like Lesson two
Navigating through a site shouldn’t be a process of trial and error. Links
Links • Difficult to discern what is or is not a link • Missing click history • Inconsistent link styling in the same view
More payment options Lesson three
UX Archive
Payment options • Optimize existing checkout flows • Implement a virtual wallet • Don’t forget trust
Not all icons are Lesson four
Drag or expand? http://www.exquisitetweets.com/collection/lukew/2919
http://www.exquisitetweets.com/collection/lukew/2919
Icons • Consider context • Use tooltips • Try your designs out with real users
Consistency is one of the most powerful usability principles: when things always behave the same, users don’t have to worry about what will happen. Instead, they know what will happen based on earlier experience. ” “ Jakob Nielsen User Advocate and principal of the Nielsen Norman Group
Social security matters Lesson five So does copy!
Social privacy matters Lesson five
Social privacy • Be transparent • Make your privacy policy accessible • Look for serendipitous moments of interaction
Advertising lacks Lesson six
Consistent copy and images • Continue the conversation from ad to landing page • Keep the messages simple • Work with marketing or advertising teams
Categorization is Lesson seven
There’s no perfect way to categorize pages or products (but there’s a right way to do it). Categorization
Focus on building intuitive experiences
A mental model is what the user believes about the system at hand. ” “ Jakob Nielsen User Advocate and principal of the Nielsen Norman Group
Learn from your users • Improve mental models • Add cross-references • Solve for your primary audience(s) • Make sure your search works Categorization
Multi-level navs aren’t user friendly Mega menus and clickable menus help create a better experience for your users. Links should look like links Tried and true link conventions from the early days of the web are still the most effective ways to format your links. Consider more payment options Virtual wallet services are a great way to make checking out easier and more secure. Not all icons are universal Test users for comprehension and use tool tips to describe your most important icons.
Поговорим о системе конфигурации в.net. Как она работает на больших проектах, какие проблемы и почему все очень плохо. Какой подход мы применили у себя, чтобы избавиться от некоторых проблем. Как изменились подходы сейчас в.net core. Что с конфигами в ASP.NET Core и как быть, когда кругом микросервисы.
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Ontico
Год назад у нас в компании еще никто специально не занимался серверами и их конфигурацией.
Был целый спектр проблем, обычных для такого случая:
* ручная выкатка новых версий на продакшн занимала несколько часов;
* большая часть времени программистов уходила на настройку своих окружений разработки и синхронизацию их между собой;
* везде на тестовых серверах стояли неизвестно какие версии, и из-за этого куча времени уходила на баги, которые могли быть уже исправлены несколько дней назад;
* неправильная конфигурация каких-то компонентов приложения приводила к неработоспособности приложения целиком.
Чтобы исправить положение мы сделали следующее:
* завернули всю конфигурацию в Chef;
* для управления конфигами приложений начали использовать augeas (у нас большие и часто меняющиеся конфиги;
* теперь ежедневно автоматически собирается образ сервера со всеми установленными и настроенными приложениями последней версии, из которого разработчики при помощи Vagrant могут создавать себе сервера по мере необходимости, не отвлекаясь на установку, обновление и настройку;
* Ежедневно Jenkins из того же образа Vagrant-ом поднимает сервера и прогоняет на них тесты.
Теперь наши разработчики спокойно спят ночами, вместо того, чтобы спешно фиксить баги.
Процесс разработки стал более предсказуемым. Скорость исправления багов возросла. Все счастливы.
В нашей большой компании мы столкнулись с задачей выкладывания релизов наших проектов на несколько групп серверов по нескольким сотням машин.
Мы решили разработать свой софт для удобного деплоя, поскольку задача, на мой взгляд, достаточно сложная, потому что каждая секунда при выкатке решает очень многое.
Почему именно разработать что-то свое, а не использовать что-то готовое, например, Fabric или Capistrano?
Все просто:
1. Система должна быть написана на языке, на котором принято разрабатывать в компании.
2. Все возникающие трудности и проблемы должны быть решены в кратчайшие сроки, нет времени ждать пока чья-то техподдержка прилетит на помощь на голубом вертолете :)
3. Система должна быть безопасна, полностью с открытыми кодами для безопасников.
4. Минимизированы зависимости от внешних модулей.
Вкратце расскажу о том, как мы раскладываем front-end для наших проектов в Mail.ru Group в продакшн и на тестовые сервера.
В частности, расскажу, как мы собираем версточный релиз.
Расскажу о том, как его запаковать и как аккуратно раздать на несколько сотен серверов.
Расскажу об архитектуре мониторинга системы обновлений, а также покажу, как выглядит наш дашборд, по которому мы понимаем, что все хорошо.
Отвечу на все интересующие вас вопросы и дам несколько рекомендаций, которые помогут вам обойти подводные грабли, на которые наступали мы.
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного server-side API десктопного приложения. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Способы оптимизации работы с памятью в Magento 2Amasty
Общая краткая информация по тому, как работает PHP с памятью. Сравнение объема памяти (в байтах) различных массивов, текстовых перменных и объектов. Также некоторые “фишки” для оптимизации расхода памяти в PHP.
Особенности оптимизации работы с памятью в M2. Сравнение некоторых типовых объектов классов по объемам памяти (Модели, Хелперы и т.д.). Способы обработки больших объемов данных в M2. Обработка объемных коллекций, загрузка и обработка их “пачками”. Оптимизация работы массивов объектов.
A joyful shopping experience. Creating e-commerce sites that are effortless t...Amasty
In his presentation for Meet Magento CZ Victor shares his thoughts about the usability and design trends and covers the important things like browsing, searching and navigation as well as cart and checkout.
Generate and send numerous triggered emails based on customer activity to build productive relationships with clients and increase the number of repeated purchases. Customize email templates and effectively manage emails dispatch.
Create informative order statuses to make order processing maximally clear both for customers and for admin users. Easily manage statuses on the grid and timely notify clients about status changes.
Add an unlimited number of extra fields to your checkout page to easily collect and process additional order related data. Display all created order attributes on a handy backend grid to keep necessary information at hand.
Shipping Table Rates for Magento 2 by Amasty | User GuideAmasty
Create an unlimited number of flexible shipping methods with individual rates. Use combinations of a destination address, cart weight, order subtotal and price to accurately calculate shipping.
Customer Group Catalog for Magento 2. User GuideAmasty
Change visibility of certain store products for different customer groups. Hide price or replace it with custom content on category and product pages.
You can learn more at https://amasty.com/customer-group-catalog-for-magento-2.html
Product Parts Finder for Magento 2 | User GuideAmasty
Equip your store with an advanced search option. Let customers easily find necessary repair parts and components by placing year-make-model and other additional product filters on your website.
Edit Lock Magento Extension by Amasty | User GuideAmasty
Lock your backend tabs and pages to prevent them from being edited by multiple admin users simultaneously in order not to lose important store data. Effectively manage the work of admin users and increase their productivity.
Advanced Reports Magento Extension by Amasty | User GuideAmasty
Equip your store with a powerful analytics tool. Use various report types to collect and process important sales information. Study customer demand, evaluate the success of implemented strategies and make firm sales predictions.
A/B Testing Magento Extension by Amasty | User GuideAmasty
Easily run numerous split and multivariate tests based on different product parameters. Test page design elements and gather important statistical data to improve your product pages accordingly.
Advanced Customer Segments Magento Extension by Amasty | User GuideAmasty
Segment your customers and store visitors by various parameters. Export segmentation results for careful analysis and take advantage of targeted marketing campaigns.
Order Archive Magento Extension by Amasty | User GuideAmasty
Automatically archive orders or delete them to keep your order grid clean and save time on store management activities. Use flexible settings to customize archive process according to your needs.
2. Андрей Татаранович
Глава отдела системного
администрирования, AMASTY
● Более 8 лет работы системным
администратором
● Более 6 лет работы в компаниях,
выпускающих продукты для Magento
3.
4. ● Проблемы с доступом на сервер
● Впервые на сервере клиента
● Обновление файлов на сервере
● Почему не работает крон
● Проблемы с отправкой почты
● Ваш код работает странно
16. Найдите по имени сайта (example.com) его
корень:
$ grep -rlZ example.com /etc/httpd /etc/nginx
/usr/local/apache /usr/local/psa 2>/dev/null |
xargs -r0 grep -Ei 'DocumentRoot|root'
root /srv/vhosts/example.com;
Если ничего не нашлось, то загляните в:
/var/www
/home/examplec/public_html
/var/www/vhosts/example.com/httpdocs
17. Есть логи помимо var/log/system.log и
var/log/exception.log, но их нужно найти
Apache: /var/log/httpd/, /var/log/apache2/
Nginx: /var/log/nginx/
cPanel: /usr/local/apache/domlogs/example.com,
/usr/local/apache/logs/error_log
Plesk: /var/www/vhosts/example.com/logs/, /var/log/httpd/
18. Вы получили 500 ошибку, но в логах
мадженты и хоста ничего нет
23. Причины:
● нет задания в кронтабе
● неправильная команда в кронтабе
● маджента 1.8+, но выключена функция
shell_exec
● «замусорилась» таблица cron_schedule
27. From: Super Shop <info@supershop.com>
Subject: Order confirmation
У письма мутирует From:
From: Vasily Pupkin <vasiok91@gmail.com>
Subject: Order confirmation
38. ● Проблемы с доступом на сервер
● Впервые на сервере клиента
● Обновление файлов на сервере
● Почему не работает крон
● Проблемы с отправкой почты
● Ваш код работает странно
41. Андрей Татаранович
Глава отдела системного
администрирования, AMASTY
AMASTY.COM
ANDREY.TATARANOVICH@AMASTY.COM
PLUS.GOOGLE.COM/+ANDREY.TATARANOVICH