Мы в Avito не так давно начали использовать Golang, но он уже успел занять важное место в различных частях проекта. В докладе мы расскажем о том, какие задачи нам помогает решать Go, почему выбор пал именно на этот язык, с какими подводными камнями мы столкнулись, и как их обходили. В частности поговорим про:
• Сервисы. Как мы начали использовать Go для разработки микросервисов, как это сказалось на их поддержке, а также отдельно расскажем про “шаблон сервиса”, который мы используем.
• Поиск. Как мы с помощью Go мы реализовали RtIndexer для обновления Sphinx Rt индексов в кластере из множества машин (поиск по активным объявлениям), который устойчиво работает с отставанием не более 10 секунд при нагрузке до 1000 rps.
• Автоматизацию тестирования. Как мы пишем тестовые сервисы и API на Go. Подробней остановимся на использовании общих моделей тел запросов и ответов для отправки и получения, использовании горутин как воркеров для обработки очереди.
Как строить архитектуру для отказоустойчивой службы такси / Минкин Андрей (Na...Ontico
Такси — это популярная тема для обсуждений, после того, как появились стартапы в виде Uber, GetTaxi, GrabTaxi и тому подобные. Ведущий разработчик службы Namba Taxi расскажет про то, как строилась текущая отказоустойчивая архитектура в Namba Taxi, с какими проблемами и неудачами мы сталкивались и как решали.
Тезисы - http://www.highload.ru/2015/abstracts/1661.html
Собираем по винтикам 2ГИС Web API — инструкция в картинкахDevDay
Алексей Салов
Руководитель подгруппы внешних сервисов 2ГИС Web API
Рассказ о том через какие огонь, воду и медные трубы в сервисах api.2gis.ru должен пройти запрос пользователя, чтобы стать привычным для нас json или xml.
Тема: "Собираем по винтикам 2ГИС Web API — инструкция в картинках"
Тезисы:
● Формула инфраструктуры:
○ Nginx + PHP + Yii = Основа
○ PostgreSQL + Redis = Данные * Скорость
○ Thrift * C + Sphinx = Полнотекстовый поиск
○ RabbitMQ = Статистика
○ Pinba + Graylog + Zabbix = Мониторинг
○ Основа + (Данные * Скорость) + Полнотекстовый поиск + Статистика + Мониторинг = Web API
● Служба доставки горячих плюшек или релизы на бою.
Мы в Avito не так давно начали использовать Golang, но он уже успел занять важное место в различных частях проекта. В докладе мы расскажем о том, какие задачи нам помогает решать Go, почему выбор пал именно на этот язык, с какими подводными камнями мы столкнулись, и как их обходили. В частности поговорим про:
• Сервисы. Как мы начали использовать Go для разработки микросервисов, как это сказалось на их поддержке, а также отдельно расскажем про “шаблон сервиса”, который мы используем.
• Поиск. Как мы с помощью Go мы реализовали RtIndexer для обновления Sphinx Rt индексов в кластере из множества машин (поиск по активным объявлениям), который устойчиво работает с отставанием не более 10 секунд при нагрузке до 1000 rps.
• Автоматизацию тестирования. Как мы пишем тестовые сервисы и API на Go. Подробней остановимся на использовании общих моделей тел запросов и ответов для отправки и получения, использовании горутин как воркеров для обработки очереди.
Как строить архитектуру для отказоустойчивой службы такси / Минкин Андрей (Na...Ontico
Такси — это популярная тема для обсуждений, после того, как появились стартапы в виде Uber, GetTaxi, GrabTaxi и тому подобные. Ведущий разработчик службы Namba Taxi расскажет про то, как строилась текущая отказоустойчивая архитектура в Namba Taxi, с какими проблемами и неудачами мы сталкивались и как решали.
Тезисы - http://www.highload.ru/2015/abstracts/1661.html
Собираем по винтикам 2ГИС Web API — инструкция в картинкахDevDay
Алексей Салов
Руководитель подгруппы внешних сервисов 2ГИС Web API
Рассказ о том через какие огонь, воду и медные трубы в сервисах api.2gis.ru должен пройти запрос пользователя, чтобы стать привычным для нас json или xml.
Тема: "Собираем по винтикам 2ГИС Web API — инструкция в картинках"
Тезисы:
● Формула инфраструктуры:
○ Nginx + PHP + Yii = Основа
○ PostgreSQL + Redis = Данные * Скорость
○ Thrift * C + Sphinx = Полнотекстовый поиск
○ RabbitMQ = Статистика
○ Pinba + Graylog + Zabbix = Мониторинг
○ Основа + (Данные * Скорость) + Полнотекстовый поиск + Статистика + Мониторинг = Web API
● Служба доставки горячих плюшек или релизы на бою.
In this talk, I will tell you about Vapor and will share our successful experience of moving from regular AWS EC2 servers to AWS Lambda and how everything changed after the appearance of Lambda on our project.
- When serverless architecture is the best choice.
- Overview Vapor - a platform for deploying and managing Laravel applications in AWS Lambda from Laravel.
- Our experience of migrating to Lambda, difficulties, best practices.
- How we predicted the cost and how much we pay in fact.
- Ways to optimize costs.
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...Ontico
Число запросов на показ рекламы и число рекламных кампаний постоянно растет. Начиная с 2013 года, мы наблюдаем рост этих показателей в десятки раз.
Так как нагрузка на нашу систему пропорциональна произведению этих чисел, такой рост создает для нас множество сложных и интересных задач.
Некоторые из этих задач, про которые расскажем:
- Как из тысяч рекламных материалов выбрать наиболее релевантный для пользователя и делать это 100 000 раз в секунду?
- Как реализовать таргетирование рекламных кампаний так, чтобы общая производительность почти не зависела от общего количества этих кампаний?
- Как эффективно запрашивать данные из внешних сервисов, когда таких запросов надо делать миллионы раз в секунду?
- Как оставаться в рамках 50 мс на ответ даже в моменты пиковой нагрузки, в разы превышающей нормальную?
- Как измерять и мониторить нагруженность в разрезе по потокам и автоматически реагировать на перегрузки?
- Как сразу видеть эффект от оптимизации или негативное влияние новой функциональности на нагрузку?
Алексей Романчук «Реактивное программирование»DevDay
Старые подходы к построению программных систем не так актуальны для создания современных решений. В дополнение к масштабируемости добавляются требования отзывчивости, отказоустойчивости и событийности. Пытаться работать на родном старом или посмотреть в сторону новых технологий? В своем выступлении я расскажу про концепцию reactive programming. Какие технологии реализуют концепцию и как сделать первые шаги в этом новом прекрасном мире.
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...Ontico
РИТ++ 2017, HighLoad Junior
Зал Конгресс-холл, 5 июня, 10:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2577.html
Микросервисы - это круто, модно и интересно. Переход на их использование принесет команде заметные преимущества. Но сервис-ориентированная архитектура (SOA) не лишена недостатков. Один их них - это то, что, заменяя простой вызов функции на RPC, мы в неявном виде вводим в уравнение, отвечающее за стабильность системы, целую плеяду новых неизвестных. Например, простейший HTTP-запрос за время своей жизни проходит через множество всевозможных буферов, очередей и алгоритмов на своем пути от клиента к серверу и обратно. Совокупное поведение этих составляющих трудно предсказать, понять и правильно интерпретировать. И особенно трудно это сделать в нестандартных ситуациях.
В своем докладе я хочу поделиться опытом решения проблем, с которыми я столкнулся за время работы в Booking.com. Я расскажу, как небольшой тюнинг сервера и клиента существенно влиял на конечную стабильность системы.
SOA: послать запрос на сервер? Что может быть проще?!Ivan Kruglov
Микросервисы - это круто, модно и интересно. Переход на их использование принесет команде заметные преимущества. Но сервис-ориентированная архитектура (SOA) не лишена недостатков. Один их них - это то, что, заменяя простой вызов функции на RPC, мы в неявном виде вводим в уравнение, отвечающее за стабильность системы, целую плеяду новых неизвестных. Например, простейший HTTP-запрос за время своей жизни проходит через множество всевозможных буферов, очередей и алгоритмов на своем пути от клиента к серверу и обратно. Совокупное поведение этих составляющих трудно предсказать, понять и правильно интерпретировать. И особенно трудно это сделать в нестандартных ситуациях.
В своем докладе я хочу поделиться опытом решения проблем, с которыми я столкнулся за время работы в Booking.com. Я расскажу, как небольшой тюнинг сервера и клиента существенно влиял на конечную стабильность системы.
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Oleg Poludnenko
Доклад с PUG#4 https://www.facebook.com/events/350783888446030/
Презентует:
- Асинхронность в веб-приложениях.
- Систему очередей Gearman.
- Пример Реализации c использование Yii2 + Gearman.
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Andrew Minkin
ы начали делать проект и запустили его в продакшн. Со временем пользователей становится больше и текущих ресурсов вам начинает не хватать. В этом докладе я расскажу о основных путях борьбы с нагрузкой, путях решения и проблемах, связанных с ними.
В докладе мы поговорим о:
0. Что такое нагрузка? Пути борьбы с нагрузкой. Оптимизация кода, кеширование, масштабирование
1. Какие проблемы возникают при внедрении кеширования
2. Как оценивать качество работы кеширования?
3. Путь масштабирования и борьба за ресурсы
4. Проблемы балансировки
5. Проблемы БД. Конкурентный доступ и данным и целостность их
Пути решения проблем будут на примере Python/Django
Работа с геоданными в Go GDGNSK / Work with Geodata in GoMad Devs
Слайды с GDG DevFest Новосибирск про го, геоданные, ненависть к нод.жс и UDP.
Slides from GDG DevFest Novosibirsk about Go, geodata and hatred to Nod.js and UDP.
Автор: Андрей Минкин / Andrew Minkin
In this talk, I will tell you about Vapor and will share our successful experience of moving from regular AWS EC2 servers to AWS Lambda and how everything changed after the appearance of Lambda on our project.
- When serverless architecture is the best choice.
- Overview Vapor - a platform for deploying and managing Laravel applications in AWS Lambda from Laravel.
- Our experience of migrating to Lambda, difficulties, best practices.
- How we predicted the cost and how much we pay in fact.
- Ways to optimize costs.
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...Ontico
Число запросов на показ рекламы и число рекламных кампаний постоянно растет. Начиная с 2013 года, мы наблюдаем рост этих показателей в десятки раз.
Так как нагрузка на нашу систему пропорциональна произведению этих чисел, такой рост создает для нас множество сложных и интересных задач.
Некоторые из этих задач, про которые расскажем:
- Как из тысяч рекламных материалов выбрать наиболее релевантный для пользователя и делать это 100 000 раз в секунду?
- Как реализовать таргетирование рекламных кампаний так, чтобы общая производительность почти не зависела от общего количества этих кампаний?
- Как эффективно запрашивать данные из внешних сервисов, когда таких запросов надо делать миллионы раз в секунду?
- Как оставаться в рамках 50 мс на ответ даже в моменты пиковой нагрузки, в разы превышающей нормальную?
- Как измерять и мониторить нагруженность в разрезе по потокам и автоматически реагировать на перегрузки?
- Как сразу видеть эффект от оптимизации или негативное влияние новой функциональности на нагрузку?
Алексей Романчук «Реактивное программирование»DevDay
Старые подходы к построению программных систем не так актуальны для создания современных решений. В дополнение к масштабируемости добавляются требования отзывчивости, отказоустойчивости и событийности. Пытаться работать на родном старом или посмотреть в сторону новых технологий? В своем выступлении я расскажу про концепцию reactive programming. Какие технологии реализуют концепцию и как сделать первые шаги в этом новом прекрасном мире.
SOA: послать запрос на сервер? Что может быть проще?! / Иван Круглов (Booking...Ontico
РИТ++ 2017, HighLoad Junior
Зал Конгресс-холл, 5 июня, 10:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2577.html
Микросервисы - это круто, модно и интересно. Переход на их использование принесет команде заметные преимущества. Но сервис-ориентированная архитектура (SOA) не лишена недостатков. Один их них - это то, что, заменяя простой вызов функции на RPC, мы в неявном виде вводим в уравнение, отвечающее за стабильность системы, целую плеяду новых неизвестных. Например, простейший HTTP-запрос за время своей жизни проходит через множество всевозможных буферов, очередей и алгоритмов на своем пути от клиента к серверу и обратно. Совокупное поведение этих составляющих трудно предсказать, понять и правильно интерпретировать. И особенно трудно это сделать в нестандартных ситуациях.
В своем докладе я хочу поделиться опытом решения проблем, с которыми я столкнулся за время работы в Booking.com. Я расскажу, как небольшой тюнинг сервера и клиента существенно влиял на конечную стабильность системы.
SOA: послать запрос на сервер? Что может быть проще?!Ivan Kruglov
Микросервисы - это круто, модно и интересно. Переход на их использование принесет команде заметные преимущества. Но сервис-ориентированная архитектура (SOA) не лишена недостатков. Один их них - это то, что, заменяя простой вызов функции на RPC, мы в неявном виде вводим в уравнение, отвечающее за стабильность системы, целую плеяду новых неизвестных. Например, простейший HTTP-запрос за время своей жизни проходит через множество всевозможных буферов, очередей и алгоритмов на своем пути от клиента к серверу и обратно. Совокупное поведение этих составляющих трудно предсказать, понять и правильно интерпретировать. И особенно трудно это сделать в нестандартных ситуациях.
В своем докладе я хочу поделиться опытом решения проблем, с которыми я столкнулся за время работы в Booking.com. Я расскажу, как небольшой тюнинг сервера и клиента существенно влиял на конечную стабильность системы.
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Oleg Poludnenko
Доклад с PUG#4 https://www.facebook.com/events/350783888446030/
Презентует:
- Асинхронность в веб-приложениях.
- Систему очередей Gearman.
- Пример Реализации c использование Yii2 + Gearman.
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Andrew Minkin
ы начали делать проект и запустили его в продакшн. Со временем пользователей становится больше и текущих ресурсов вам начинает не хватать. В этом докладе я расскажу о основных путях борьбы с нагрузкой, путях решения и проблемах, связанных с ними.
В докладе мы поговорим о:
0. Что такое нагрузка? Пути борьбы с нагрузкой. Оптимизация кода, кеширование, масштабирование
1. Какие проблемы возникают при внедрении кеширования
2. Как оценивать качество работы кеширования?
3. Путь масштабирования и борьба за ресурсы
4. Проблемы балансировки
5. Проблемы БД. Конкурентный доступ и данным и целостность их
Пути решения проблем будут на примере Python/Django
Работа с геоданными в Go GDGNSK / Work with Geodata in GoMad Devs
Слайды с GDG DevFest Новосибирск про го, геоданные, ненависть к нод.жс и UDP.
Slides from GDG DevFest Novosibirsk about Go, geodata and hatred to Nod.js and UDP.
Автор: Андрей Минкин / Andrew Minkin
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)AvitoTech
Поговорим о том, почему это далеко не самая простая задача, и как следует разбираться с возникающими трудностями. Рассмотрим и покритикуем существующие решения. Научимся создавать свой собственный велосипед.
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...Mad Devs
Доклад с Highload ++ 2016 о том, как экономить трафик, собирая gps данные в службе такси
Slides from Highload++ 2016 on how to save the traffic on collection of GPS tracks in the taxi company
Автор: Андрей Минкин / Andrew Minkin
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...Ontico
Когда Uber или Lyft потихоньку захватывают мир, все службы такси хотят себе такое же приложение.
Мы задумались о том, чтобы сделать у себя несколько вещей:
- Сделать карту, которая работает как в приложении Uber (показывать водителей рядом, которые катаются по городу, плавно заанимированные).
- Хранить маршрут, по которому ехал водитель во время заказа.
В этом докладе я хотел бы поделиться с вами о том, как мы реализовали список выше со стороны бэкенда и мобильных приложений. В качестве языка для реализации был выбран Go.
Поговорим о следующем:
- Как собираем треки с водительских приложений и как мы бережем интернет трафик у водителя.
- Реализация легковесного сетевого взаимодействия между приложением и бэкендом.
- Какие решения были использованы для того, чтобы добиться высокой производительности на бэкенде.
- Как обрабатываем и храним GPS-данные для истории.
- Как обрабатываем и в каком виде выдаем в клиентские приложения.
- Как работает анимация машинки в клиентских приложениях.
- Почему для реализации был выбран Go.
- Как мониторить и быть уверенным в том, что сервис работает.
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного server-side API десктопного приложения. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
Исторически сложилось так, что одни люди разрабатывают приложения (Dev), а другие эксплуатируют их в продакшне (Ops). И у последних есть немало проблем с тем, что невозможно понять, что происходит.
Причем это касается как собственных разработок, так и популярных open source решений.
Я расскажу, как устроена диагностика у некоторых популярных софтин:
- nginx
- postgresql
- mongodb
Мы попробуем разобраться, что там сделано хорошо, и чего не хватает для полного счастья.
Во второй части доклада мы поговорим про то, как нужно инструментировать собственное приложение для прозрачной работы в продакшне:
- что считать и зачем: ошибки, тайминги, разные состояния приложения,
- инструментарий: your_lang-metrics, your_lang-statsd-client, логи,
- как не перемудрить и не убить прод диагностикой.
Может показаться, что этот доклад про DevOps, но нет - про docker не будет ни слова :)
Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...Mad Devs
Доклад с конференции Highload++ 2015 об отказоустойчивой архитектуре
A report from the Highload++ 2015 conference in Moscow, describing the fallover architectures
Автор: Андрей Минкин / Andrew Minkin
http://www.highload.ru/2015/abstracts/1661.html
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
Доклад на конференции WebDev 2015
С развитием веб-проектов в качестве SaaS по agile-технологиям основной проблемой становиться своевременной обновление разрабатываемого ПО на множестве подконтрольных доменов. В этом случае достаточно удобно использовать системы непрерывной интеграции, которые позволяют оценить новый код, произвести тестирование и развертывание веб-проекта. В докладе представлена общая картинка организации системы непрерывной интеграции и рассмотрены основные инструменты для тестирования, оценки качества кода и организации развертывания веб-проекта под UNIX-подобные системы с использованием бесплатного ПО.
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Ontico
РИТ++ 2017, HighLoad Junior
Зал Сингапур, 6 июня, 10:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2475.html
Когда проект растёт, возникает множество проблем с масштабируемостью сервиса: БД, сервера приложений, хранилище. Однако, не менее важной становится клиентская часть веб-приложения.
Во-первых, грамотная клиентская оптимизация позволяет повысить скорость работы сервиса для пользователей и, следовательно, увеличить их лояльность, которая конвертируется в деньги.
...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...Mad Devs
Маргарита Мысина, рекрутер в Mad Devs поделилась темой «Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам интересно».
Маргарита начала свою карьеру HR в IT в технологическом стартапе, а пару лет назад присоединилась к команде HR в Mad Devs, в качестве сорсера, а затем рекрутера. За время своей работы в найме Маргарита приобрела огромный опыт, который передаст в своем докладе, рассказывая о том, как общаться с кандидатами и ненавязчиво узнавать всю нужную рекрутеру информацию.
Дружелюбнй онбординг: как с увеличением количества не потерять качество Mad Devs
Клара Абдукова, HR-специалист в Mad Devs презентовала о «Дружелюбном онбординге: как с увеличением количества не потерять качество»
Клара уже несколько лет работает в ИТ и в настоящее время занимает позицию лида онбординга в Mad Devs. Она заонбордила более 100 человек, ее опыт позволил сделать процесс онбординга в компанию не только четким, но и прозрачным. В своем докладе Клара расскажет весь путь выстраивания процесса онбординга и поделилась инсайтами, которые помогут HR-специалистам в создании и проведении этого важного процесса.
Mad Stream продолжается!
Нам повезло пригласить нашего Senior Backend Разработчика, Solution Architect, Нурадила Алымкулова, поделиться знаниями с нами.
Нурадил работал в разработке разнообразных систем банка, телекоммуникационных компаниях - одним словом, в энтерпрайзах. Теперь Нурадил хочет поделиться своими огромным опытом и наблюдением в разработки сложных систем.
На этом стриме Нурадил выступит с темой “Проектирование архитектуры приложения 101” мы начнем с:
описания бизнес-требований с помощью последовательных диаграмм;
разберем классовые диаграммы;
опишем поведение программы с помощью флоу-диаграм.
На данном стриме мы пройдем путь создания приложения от начала до конца! После стрима у нас обязательно будет сессия вопросов и ответов.
Mad Stream начнется в 19.30, в этот четверг 12-го ноября!
Ссылка на трансляцию:
https://youtu.be/tKymOf3O9gc
У нас часто спрашивают, как начать программировать самостоятельно и не “перегореть” во время обучения. Теперь можно спросить об этом напрямую у нашего сотрудника Айбека Ногоева!
До Mad Devs Айбек работал в международной аудиторской компании. Там всего за год он поднялся с Junior позиции до уровня Senior и был тимлидом во многих проектах. Чтобы расширить список своих навыков и круг возможностей, Айбек решил начать программировать. После двух месяцев самостоятельного обучения он попал в Mad Devs, и теперь он наш Android-разработчик.
Программируя под Android, Айбек изучил еще и iOS разработку, без каких-либо курсов и чьей-либо помощи. На Mad Stream Айбек выступит с темой: “Соло-прокачка мобильного разработчика”.
На стриме Айбек затронет несколько тем, важных для любого начинающего “мобильщика”:
Как изучать программирование самостоятельно?
Как быстро освоить мобильную разработку?
Как не “перегореть” в процессе обучения?
Как развивать базовые навыки дальше?
Если собираетесь “войти в айти”, опыт Айбека будет вам очень кстати. Интересно узнать работающие лайфхаки?
Тогда скорее сохраняйте ссылку на стрим!
Woo-hoo, Mad Streams are switching to English!
Meet Mad Devs’ Backend Developer Anatoliy Fedorenko presenting his “7 Habits of Highly Awesome Developers” talk this Thursday, September 10, at 7 PM Kyrgyzstan time (GMT+6).
Anatoliy has diverse experience in software development and good people skills. That’s why he often takes over poorly developed or “screwed” projects we inherit from underqualified teams. He has to deal with disappointed stakeholders, depressed, and anxious project managers. In complicated projects with huge technical debt, programmers need to make nearly everyone happy, from owners and end-users to project managers, product owners, and teammates.
Anatoliy will talk about habits related to communication, coding, tech tools, etc. that every developer can embrace to make the colleagues and customers happy. These are not hard to master, but once you do, people around will appreciate them, and you will also get a lot of nice side effects.
Consider joining our webinar if you are a software developer, PM, or business owner since our tips and tricks might lead you to a better, happier professional life.
To join us, use this YouTube link: https://lnkd.in/eiTtp2q
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...Mad Devs
Наш специалист по Embedded System Engineering, Антон Козлов, выступит с темой:
«Что можно напечатать на 3d принтере, помимо ещё одного 3d принтера.»
⠀
На стриме вы узнаёте:
1. О том как нам преподносят трехмерную печать и чем она является на самом деле;
2. Трехмерная печать не серебряная пуля, недостатки технологии как: масштабируемость, цена, качество изделий;
3. Основные виды трехмерных принтеров доступных простому обывателю и принцип их работы;
4. Пример проекта в котором трехмерная печать ускорит разработку продукта.
Ссылка на стрим: https://www.youtube.com/watch?v=klHxO9c1d2Y&feature=youtu.be
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий КононенкоMad Devs
Вы когда-нибудь слышали о факт-картах? Если коротко – это особый инструмент, помогающий мышлению решать сложные интеллектуальные задачи. Это методика выстраивания целей и нахождения эффективных решений применимых к любой сфере. В ходе презентации Дима "разжует" основные понятия относящиеся к факт-картам и как обычно даст много полезных советов, что называется "из жизни".
Лайфхаки менеджмента на удаленке от Дмитрия КононенкоMad Devs
В ходе презентации, все заинтересованные узнают о том, как организовать коммуникации и процессы команды разработки в условиях всеобщей изоляции. Дима подкинет классных тулзов для упрощения и улучшения процессов, а также поделится собственным опытом и даст много полезных советов.
Этот Mad Talks о неудачном опыте в живом продакшн проекте. Александр расскажет историю о том, как настроили отказоустойчивость системы бизнес-проекта и жили спокойно, пока не решили чинить поломанную репликацию и в итоге получили split-brain.
Основные преимущества и недостатки нативных и кроссплатформенных приложений: что из себя представляет каждый тип приложений и для каких целей он служит.
Более подробно рассматривается Flutter - набор инструментов, позволяющий разработчикам писать кроссплатформенные приложения. Почему стоит обратить на него внимание и начать инвестировать в изучение Flutter.
Ethereum: аспекты разработки смарт-контрактовMad Devs
- Что такое умные контракты (смарт-контракты)?
- Представление смарт-контрактов в Ethereum.
- Смарт-контракты на примере - ERC20 токен.
- Понятие топлива (газа) в Ethereum.
- Инструментарий разработки смарт-контрактов.
- Способы интеграции смарт-контрактов Ethereum с внешним ПО.
4. Как все начиналось
• Служба такси
• Водительское приложение
• Много хотелок
• Много технического долга
• Невозможность поддержки
• Пройденная точка невозврата
12. Почему мы выбрали gRPC?
• Design first
• Генерация кода
• Относительно легковестно по трафику
• HTTP/2 streaming + fallback
13. Подробнее тут
• Документация и код
• http://www.grpc.io
• https://github.com/grpc
• https://github.com/grpc-ecosystem
• Помощь и поддержка
• https://gitter.im/grpc/grpc
• https://groups.google.com/forum/#!forum/grpc-io
37. Стало
// ..
go func() {
for {
msg, err := pubsub.ReceiveMessage()
// ..
order := &pb.Order{}
err = json.Unmarshal([]byte(msg.Payload), order)
// ..
if order.Status == pb.Order_NEW {
ordersChan <- order
}
}
}()
38. Стало
for {
select {
case order := <-ordersChan:
// business logic here
case <-ctx.Done():
return ctx.Err()
case e := <-errs:
close(ordersChan)
return e
}
}
43. Плохая связь
• Fallback на unary
• Circuit breaker
• Observer на клиенте со счетчиками
• Ошибка или таймаут
• Перезапуск через N секунд в случае достижения maxRetries
48. Как балансировать на сервере
• Ngx socket – нет APLN
• Встроенные механизмы – клиент наружу
49. Как балансировать на сервере
• Ngx socket – нет APLN
• Встроенные механизмы – клиент наружу
• Proxy_pass в NGINX
50. Как балансировать на сервере
• Ngx socket – нет APLN
• Встроенные механизмы – клиент наружу
• Proxy_pass в NGINX – все плохо с поддержкой HTTP/2
51. Как балансировать на сервере
• Ngx socket – нет APLN
• Встроенные механизмы – клиент наружу
• Proxy_pass в NGINX – все плохо с поддержкой HTTP/2
• NGHTTPX
52. Как балансировать на сервере
• Ngx socket – нет APLN
• Встроенные механизмы – клиент наружу
• Proxy_pass в NGINX – все плохо с поддержкой HTTP/2
• NGHTTPX – ликает
53. Как балансировать на сервере
• Ngx socket – нет APLN
• Встроенные механизмы – клиент наружу
• Proxy_pass в NGINX – все плохо с поддержкой HTTP/2
• NGHTTPX – ликает
• HAProxy?
54. NGHTTPX vs HAProxy
• Есть опыт с HAProxy
• Поддержка H2
• Тесты ОК
• Полет нормальный
55. Rest
• Синхронный
• Документация опциональна
• Внешняя отказоустойчивость
• Все о ресурсах
gRPC
• Асинхронный
• Документация обязательна
• Встроенная отказоустойчивость
• Все о API
57. Выводы
• gRPC можно использовать вместо REST. И это удобно
• gRPC применим и в мобильных приложениях (с некоторыми
оговорками)
• Балансировать на сервере удобно через HAProxy
• waitForReady может как помочь, так и усложнить жизнь