Pull to refresh
20
0
Виталий Лебедев @asd_lvs

User

Send message

Микросервисы: опыт использования в нагруженном проекте

Reading time17 min
Views68K


На конференции HighLoad++ 2016 руководитель разработки «М-Тех» Вадим Мадисон рассказал о росте от системы, для которой сотня микросервисов казалась огромным числом, до нагруженного проекта, где пара тысяч микросервисов — обыденность.

Тема моего доклада — то, как мы запускали в продакшн микросервисы на достаточно нагруженном проекте. Это некий агрегированный опыт, но поскольку я работаю в компании «M-Tех», то давайте я пару слов расскажу о том, кто мы.

Если коротко, то мы занимаемся видеоотдачей — отдаём видео в реальном времени. Мы являемся видеоплатформой для «НТВ-Плюс» и «Матч ТВ». Это 300 тысяч одновременных пользователей, которые прибегают за 5 минут. Это 300 терабайт контента, который мы отдаем в час. Это такая интересная задача. Как это всё обслужить?

Про что сама эта история? Это про то, как мы росли, как проект развивался, как происходило какое-то переосмысление каких-то его частей, какого-то взаимодействия. Так или иначе, это про масштабирование проекта, потому что это всё — ради того, чтобы выдержать ещё больше нагрузки, предоставить клиентам ещё больше функционала и при этом не упасть, не потерять ключевых характеристик. В общем, чтобы клиент остался доволен. Ну и немного про то, какой путь мы прошли. С чего мы начинали.
Читать дальше →
Total votes 78: ↑77 and ↓1+76
Comments65

SEM раз отмерь. Или «как узнать SEM ли ты и что с этим делать дальше?»

Reading time6 min
Views5.5K
Да, мы запускаем вторую серию Турниров Кроссовера!

2 апреля в Петербурге — в этот раз мы ищем Software Engineering Managers и Technical Product Managers, а потом 22 апреля в Москве (.NET или Java техлидов).

Но прежде, чем рассказать о том, что будет – давайте посмотрим, как это было в Москве 18 февраля.



Честно говоря, когда мы решили проводить турниры по отбору классных разработчиков, вместо того, чтобы принимать все заявки онлайн – мы отчаянно рисковали.
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments32

Как мы секвенировали хакатоны или «чем тяжелее работа – тем легче на неё устроиться»

Reading time6 min
Views9.2K
Хакатоны бывают разные. И, прежде чем вы назовёте меня Капитаном Очевидность, позвольте разобрать их на части, чтобы объяснить ту мутацию, которую мы сконструировали для мероприятия 18 февраля.


Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments7

Введение в .NET Core

Reading time19 min
Views191K


На конференции connect(), мы объявили, что .NET Core будет выпущен полностью как программное обеспечение с открытым исходным кодом. В этой статье мы сделаем обзор .NET Core, расскажем, как мы собираемся его выпускать, как он соотносится с .NET Framework и что это все означает для кросс-платформенной разработки и разработки с открытым кодом.
Читать дальше →
Total votes 58: ↑52 and ↓6+46
Comments12

Видео докладов Badoo с конференции Highload 2014

Reading time2 min
Views20K
Осенью мы выступали с докладами на одной из лучших технических конференций Highload 2014 и сейчас с удовольствием делимся с вами видео докладов. Вы можете задавать вопросы в комменариях и наши спикеры и остальные эксперты обязательно на них ответят.

1. «Sharding — patterns & antipatterns».
Доклад Алексея Рыбака (Badoo) и Константина kostja Осипова (Mail.ru).



Еще 5 отличных докладов
Total votes 41: ↑37 and ↓4+33
Comments13

Размышления о стандартной библиотеке JavaScript. Core.js

Reading time64 min
Views103K
Один пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
— С просторов интернета

К чему это я? Занятная штука — JavaScript. Основа современного web и на фронтэнде альтернатив как таковых не имеет.

JavaScript это, в том числе, и стандартная библиотека, о которой здесь и пойдёт речь. Под стандартной библиотекой я подразумеваю модули, конструкторы, методы, что должны присутствовать на любой платформе, будь то браузер или сервер, без лишних действий со стороны программиста, не включая API, специфичный для платформы. Даже если вы пишите не на JavaScript, а на языке в него компилируемом, скорее всего, вам придется иметь дело с его стандартной библиотекой.

Ванильная стандартная библиотека JavaScript, в целом, неплоха. Это не только стандартная библиотека по спецификации языка ECMA-262 актуальных версий — от 3 до черновика 6. Часть API вынесена в отдельные спецификации, например, API интернационализации ECMA-402. Многие возможности, без которых сложно представить JavaScript, например, setTimeout, относятся к web-стандартам. Консоль не стандартизована вовсе — приходится полагаться на стандарт де-факто.

Вот только не такая уж она и стандартная — везде разная. Есть старые IE, в которых из коробки мы получаем стандартную библиотеку ES3 90-бородатого года даже без Array#forEach, Function#bind, Object.create и консоли, и есть, например, Node.js, на которой многие уже вовсю используют возможности грядущего ES6.

Хочется иметь универсальную, действительно стандартную библиотеку, как на сервере, так и в любом браузере, максимально соответствующую современным стандартам, а также реализующую необходимый функционал, что (пока?) не стандартизован. Статья посвящена библиотеке core.js — реализация моих соображений по поводу стандартной библиотеки JavaScript. Кроме того, эта статья еще и шпаргалка по современной стандартизованной стандартной библиотеке JavaScript и заметки о её перспективах.

Содержание, или что получим на выходе:


Читать дальше →
Total votes 87: ↑82 and ↓5+77
Comments40

Изучаем Javascript перебирая косточки Backbone.js

Reading time10 min
Views36K
В этом посте любитель javascript тряхнет костями, доставая что-нибудь полезно-интересное из исходника Backbone.

Тут не будет рассматриваться вопрос применения библиотеки, это на Хабре уже давно сделали, а будет простой конспект-шпаргалка по js с примерами, в роли примеров — сам Backbone.
Читать дальше →
Total votes 38: ↑29 and ↓9+20
Comments9

Нейробиология и искусственный интеллект: часть первая — ликбез

Reading time6 min
Views126K
Так уж получилось, что я уже давненько читаю Хабр и особенно раздел про искусственный интеллект, однако до сих пор так и не отважился внести свою лепту в общий уровень энтропии.

Оживленные дискуссии в комментариях показывают живой интерес к теме и одновременно большое разнообразие точек зрения, мнений и уровней подготовки. Просмотрев историю публикаций, я как-то не нашел важного отправного пункта для многих рассуждений, а именно – какого-нибудь описания механизмов передачи сигналов в мозге. Те, кто пишут про нейронные сети и прогресс в компьютерных моделях интеллекта обычно вскользь упоминают про синапсы и медиаторы (что вполне достаточно для их целей), те же, кто пытается понять природу естесственного интеллекта в основном рассуждают философскими категориями. В результате, множество коментариев содержат отсылки к популярным домыслам и мифам, не находящим подтверждения в современных исследованиях.

В данной статье я в сжатой форме попытаюсь дать ответы на следующие вопросы:
— что же такое нейрон, как он устроен и работает?
— что происходит в синапсах, когда нейроны общаются друг с другом?

А в следующей (-щих):
— как интеллект и сознание связаны с активностью нейронов? (здесь же про то, как информация обрабатывается мозгом, нейропластичность, квантовую теорию сознания, сон и т.д.)
Читать дальше →
Total votes 68: ↑64 and ↓4+60
Comments43

Чудесное введение в программирование

Reading time6 min
Views40K
Доброго времени суток хабр.

Хотел бы преподнести на суд общественности перевод одной чудесной статьи, в которой описаны базовые принципы программирования. Пару слов о том — зачем собственно это все и кому это надо? Отвечаю — последние несколько месяцев я, сам начинающий программист, активно пытаюсь обучать ребят из других сфер. В этом нелегком труде мне приходится шерстить интернет в поисках в первую очередь интересных материалов, чтобы разбить их стереотипы насчет того что код — это скучно и нудно. К моему глубокому сожалению, таких материалов не так уж много. Я уверен, есть огромное количество новичков, которые регулярно читают хабр и эта статья будет им крайне интересна и полезна.
Читать дальше →
Total votes 72: ↑50 and ↓22+28
Comments46

Доступна для скачивания ранняя версия ReSharper 9

Reading time6 min
Views15K
Как многие могли заметить, в мире .NET сейчас происходят значительные изменения. Появление Roslyn, C# 6, ASP.NET vNext, Visual Studio «14» и других технологий вдохновляют ReSharper на новые шаги в своем развитии и поддержке различных языков и платформ.

В связи с этим мы приглашаем всех присоединиться к программе раннего доступа для ReSharper 9. В этом посте мы обсудим основные фичи новой версии.

TL;DR в ReSharper 9 добавлена поддержка VS «14», C# 6 и регулярных выражений, улучшена поддержка JS/TS и глобальных изменений (bulk fixes), добавлен новый редактор для форматирования кода и новые возможности навигации, а также все наши .NET продукты переезжают на новую общую платформу.

Если интересно...
Total votes 40: ↑36 and ↓4+32
Comments61

Партнерство Docker и Microsoft: множество анонсов

Reading time3 min
Views15K
15 октября на официальном сайте Docker анонсированы новые совместные инициативы Docker и Microsoft, которые направлены на решение следующих задач:

  • Распространение технологи Docker на Windows с помощью Docker Engine for Windows Server
  • Поддержка Microsoft открытого API оркестрированием Docker
  • Интеграция Docker Hub с Microsoft Azure
  • Совместная работа над моделью контейнеров multi-Docker, включая поддержку приложений поддерживающих как Linux так и Windows контейнеры Docker



Ниже некоторые подробности нового партнерства, о которых можно узнать из официальных публикаций от Скотта Гатри, Джейсона Зандера или официального пресс-релиза.
Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments19

Hadoop: что, где и зачем

Reading time14 min
Views459K


Развеиваем страхи, ликвидируем безграмотность и уничтожаем мифы про железнорождённого слона. Под катом обзор экосистемы Hadoop-а, тенденции развития и немного личного мнения.
Читать дальше →
Total votes 61: ↑58 and ↓3+55
Comments26

Аппаратное ускорение в жизни верстальщика. Семинар в Яндексе

Reading time6 min
Views70K

Привет! Меня зовут Александр Завьялов. В Яндексе я занимаюсь разработкой интерфейсов. Недавно я выступил перед коллегами с докладом об аппаратном ускорении в жизни верстальщика, где также коснулся смежных тем. Рассказал о производительности веб-страниц, о том, как она измеряется и к чему она может стремиться.



Ссылка, если видео не отображается

На основе доклада я подготовил этот пост. Я расскажу о том, как браузеры оптимизировали процесс отрисовки: с чего начинали и до чего докатились. Что сейчас можно сделать, чтобы жизнь верстальщиков и пользователей стала немного лучше. Я надеюсь, что кого-нибудь натолкну на какие-нибудь улучшения. Мне бы это было приятно.


Читать дальше →
Total votes 96: ↑95 and ↓1+94
Comments21

HDR vs LDR, реализация HDR Rendering

Reading time8 min
Views88K


Как я и обещал – публикую вторую статью о некоторых моментах разработки игр в трех измерениях. Сегодня расскажу об одной технике, которая используется почти любом проекте ААА-класса. Имя ей — HDR Rendering. Если интересно — добро пожаловать под хабракат.
Читать дальше →
Total votes 177: ↑173 and ↓4+169
Comments63

Улучшаем производительность: полезные советы и приёмы в .NET

Reading time8 min
Views32K
Эта статья входит в серию статей по улучшению производительности в .NET. Первую статью можно найти здесь.

В этой статье, как и в прошлой, будут рассмотрены неочевидные особенности в работе платформы, и приемы, с помощью которых можно с этими особенностями мирно сосуществовать. Проще говоря, тут будут записаны очередные всякие хаки из жизни нашей лавки, которые хоть немного (или много, как всегда все зависит от контекста), но экономят драгоценные ресурсы в условиях высокой нагрузки. Хаки предельно просты и не влияют на конечную функциональность.

Открывая очередную статью о производительности, пожалуй каждый резонно ищет ответ на вопросы «а как это может помочь в моих проектах» и «бросать ли все и начинать ли срочно исправлять свой код как описано». Исправлю ошибку прошлой статьи, отвечу сразу и подробнее. На мой взгляд, есть смысл использовать наши хаки в следующих случаях:

  • Вы пишете новый код и решили делать это немного лучше и с экономией
  • Вы дошли до этапа, когда начались оптимизации и рефакторинг, поэтому просматриваете и меняете участки кода, которые выполняются очень часто
  • Вы пишете высокопроизводительную систему и экономите на спичках

Я ни в коем случае не призываю вас бежать и исправлять весь код в ваших проектах. Более того, я призываю вас не делать этого, потому что это простые хаки, и скорее всего они будут вноситься бездумно в большое количество кода, а это может повлечь за собой появление новых ошибок. Это не те хаки, которые скинут бабу с воза вашего приложения и заставят кобылу-сервак бежать в десять раз быстрее. В лучшем случае удастся выжать процентов десять. Но с миру по нитке — голому рубашка.
Читать дальше →
Total votes 44: ↑44 and ↓0+44
Comments19

Обзор компонентов управления памятью в SQL Server

Reading time7 min
Views33K
Материал посвящен описанию использования подсистемы памяти в MS SQL server. Данный обзор дает только общее представление о структуре управления. Следует помнить, что продукты компании Microsoft поставляются с закрытыми кодами и детальные сведения отсутствуют в общедоступных источниках (насколько удалось выяснить нам, если Вам удалось большее – сообщите, пожалуйста). Общий обзор необходим для понимания описываемых далее возможных проблем SQL server и используемых средств тестирования и измерения производительности.

Memory manager


Memory manager (ММ) является основным элементом, который управляет распределением памяти в SQL сервере. Данный компонент автоматически распределяет доступную SQL серверу память, снижая необходимость ручной настройки. После загрузки SQL ММ определяет первоначальный объем распределенной памяти и далее по мере изменения нагрузки динамически резервирует или освобождает оперативную память. Таким образом, ММ управляет взаимодействием SQL сервера с операционной системы в контексте управления памятью. Memory manager является частью SQLOS. Подробнее можно посмотреть здесь.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments8

Собеседование на должность JavaScript разработчика

Reading time4 min
Views287K


Недавно прочитал неплохой пост на тему поиска работы QA и подумал, что похожий пост был бы полезен для JavaScript разработчиков. В конечном счёте, веб движется вперед семимильными шагами, и соискателей на позицию JavaScript программиста хоть отбавляй (разумеется, хороших всегда меньше).
Читать дальше →
Total votes 126: ↑115 and ↓11+104
Comments313

XSS-game от Google

Reading time1 min
Views35K
Google представил игру, заключающуюся в поиске xss-уязвимостей, c целью распространения информации об этом наиболее опасном и распространенном типе уязвимости. Google так серьезно относится к обнаружению уязвимостей, что платит до $7500 за серьезные xss.



Ну а игра покажет как выявлять xss, это знание поможет вам предотвращать ошибки в ваших приложениях. Всего в игре 6 уровней, в случае затруднения в выполнении заданий можно воспользоваться подсказками. По прохождению игры обещают тортик.

Заметка короткая, под кат не убираю, разомните мозги в этот выходной день! Я вот без подсказок осилил только 1-й уровень, с подсказками дошел до 6-го, дальше пока никак.

Ну-ка, сыграем.
Total votes 85: ↑83 and ↓2+81
Comments65

Когда использовать Parallel.ForEach, а когда PLINQ

Reading time13 min
Views74K

Введение


Обычно, при оптимизации программы для многоядерных компьютеров первым шагом является выяснение возможности разделения алгоритма на части, выполняющиеся параллельно. Если для решения задачи необходимо параллельно обрабатывать отдельные элементы из большого набора данных, то первыми кандидатами станут новые возможности параллельности в .NET Framework 4: Parallel.ForEach и Parallel LINQ (PLINQ)

Parallel.ForEach


Класс Parallel содержит метод ForEach, представляющий собой многопоточную версию обычного цикла foreach в C#. Подобно обычному foreach, Parallel.ForEach выполняет итерации над перечислимыми данными (enumerable), но с использованием множества потоков. Одна из более часто используемых перегрузок Parallel.ForEach выглядит следующим образом:

public static ParallelLoopResult ForEach<TSource>(
			 IEnumerable<TSource> source,
			 Action<TSource> body)

Ienumerable указывает на последовательность, по которой нужно выполнить итерации, а Action body задает делегат, вызываемый для каждого элемента. Полный список перегрузок Parallel.ForEach можно найти здесь.

PLINQ


Родственный с Parallel.ForEach PLINQ представляет собой модель программирования для паралелльных операций над данными. Пользователь определяет операцию из стандартного набора операторов, включающих в себя проекции, фильтры, агрегирование и т.д. Подобно Parallel.ForEach PLINQ достигает параллельности, разбивая входную последовательность на части и обрабатывая элементы в разных потоках.
В статье выделяются различия между этими двумя подходами к параллельности. Разбираются сценарии использования, в которых лучше всего использовать Parallel.ForEach вместо PLINQ и наоборот.

Выполнение независимых операций


Читать дальше →
Total votes 79: ↑73 and ↓6+67
Comments9

Обзор бесплатных сервисов для веб-разработки

Reading time4 min
Views143K
Пост является личной подборкой полезных и нужных онлайн сервисов, которые позволяют бесплатно (или условно бесплатно) создавать действительно крутые вещи и разворачивать их в Сети. Не претендую на новизну или на полноту, но буду счастлив, если кому пригодится.

Всем нам иногда хочется попробовать новую идею, запилить какой-нибудь сайтик про манулов, но чтоб обязательно на node.js, хайлоад реди, с мемкешем, монго, фейловером и с претензией на мировое господство. У меня для Вас хорошие новости: благодаря щедрости проклятых западных капиталистов всё это можно получить совершенно бесплатно.
Читать дальше →
Total votes 157: ↑136 and ↓21+115
Comments113

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity