В прошлую пятницу мы собрали 140 разработчиков, чтобы поговорить о микросервисах — деплое, координации, согласованности. Делимся с вами записью двух лучших, по мнению участников, выступлений.
Читать полностью »
Рубрика «Анализ и проектирование систем» - 79
DevDay про микросервисы. Запись лучших докладов
2017-12-01 в 6:29, admin, рубрики: .net, devday, meetup, scala, Анализ и проектирование систем, Блог компании 2ГИС, микросервисы, ПрограммированиеКак перетасовать песни?
2017-11-29 в 11:09, admin, рубрики: shuffle, Алгоритмы, Анализ и проектирование систем, математика, Работа со звукомМы здесь в Spotify серьёзно относимся к фидбеку от пользователей. Какое-то время назад мы заметили, что пользователи жалуются на то, что при включенном режиме случайного перемешивания плейлиста порядок песен на самом деле не случаен — например, несколько песен одного и того же исполнителя могут быть воспроизведены одна за другой, при том, что в плейлисте множество песен разных исполнителей. Пользователи спрашивали неужели мы не способны сделать такую простую вещь, как случайный порядок воспроизведения треков? Мы отвечали «Он правда-правда случаен! Мы проверяли!»
Так кто же был прав — мы или пользователи? Как оказалось — и мы, и они. Ну и вообще дело обстояло значительно серьёзнее, чем казалось на первый взгляд.
Наш точка зрения
Ещё в самом первом релизе нашего плеера в нём была функция случайного перемешивания плейлиста. Мы использовали для этого алгоритм Фишера-Йетса — и он давал идеально случайное перемешивание. Но что такое «идеально случайное»? Это значит, например, что мы можем получить один из двух нижеуказанных порядков песен с одинаковой вероятностью (разные цвета означают треки разных исполнителей):
Повторное использование кода — как это бывает на практике
2017-11-28 в 13:25, admin, рубрики: c++, reusable component, Анализ и проектирование систем, разработка игр, Совершенный кодСреди программистов очень популярны разговоры о «повторном использовании кода» — и в основном об этом говорят в позитивном ключе. Нам нравится говорить, что спроектированные нами конструкции являются «универсальными» и «пригодными к использованию в других проектах». Почему это считается хорошей вещью легко понять — всем хочется реализовать следующий проект вдвое быстрее предыдущего за счет использования уже имеющихся наработок.
Но когда дело доходит до этого на практике — чаще всего что-то идёт не так. Есть одна очень умная мысль на этот счёт: «Не пытайтесь делать код переиспользуемым, пока вы не видите как минимум три разных места, где его можно будет применить». Я считаю этот совет очень хорошим — я видел немало ситуаций, когда он помог (или помог бы) избежать одержимости попытками написания переиспользуемого кода там, где проблему можно было решить для одного конкретного случая «здесь и сейчас».
Это указывает нам на изъяны в теории о том, что переиспользование всегда является желанной и благородной целью.
Читать полностью »
«Хочешь быть системным архитектором? Там только свет и чистота…»
2017-11-28 в 7:07, admin, рубрики: Анализ и проектирование систем, архитектор, архитектура, Блог компании ТЕХНОСЕРВ, проект, свет, управление проектами, чистотаМного лет назад я от усталости облокотился на стену техкоридора и начал по ней медленно сползать. Мы только что сдали проект после пары недель ночных переработок, чтобы уложиться в дедлайн. Мимо шёл мой руководитель, я простонал:
— Рома, я задолбался быть инженером. Всё, ухожу!
Он ласково улыбнулся и сказал:
— Хорошо. Будешь системным архитектором. Там только свет и чистота. Выспись и приходи, расскажу, что будешь делать.
Я был молодым и наивным. Выспался и пришёл. Тогда начал постепенно становиться архитектором (сейчас стал), и могу смело сказать: света и чистоты тут столько же, сколько в буднях инженера. А вот ответственности больше. Поэтому — нет, не надо быть архитектором, если вы не понимаете, на что идёте.
Но! Если понимаете — это будет очень увлекательное приключение.
Читать полностью »
Автоматная разработка, практикум. Пример «Дисплей». Часть 1
2017-11-25 в 7:12, admin, рубрики: автоматное программирование, Алгоритмы, Анализ и проектирование систем, быстродействие, программирование микроконтроллеров, Совершенный кодТесты в предыдущей статье убедительно показали высокую эффективность «автоматной» реализации примера «Дисплей» по сравнению с условно названной «неавтоматной» версией. Вкратце итог: обе реализации автоматные, но разница в эффективности многократна и глубинная причина видится в том, что вариант А1 («автоматный») изначально проектировался как автомат, а вариант А2 («неавтоматный») нет. Не столько автоматная реализация, сколько автоматное проектирование является основой высокой эффективности. Для простых алгоритмов автоматные реализации получаются сами собой. Есть смысл говорить о том, что автоматное программирование, это не столько реализация программы в виде конечного автомата, сколько автоматное проектирование, фундаментом которого является конструктивная декомпозиция. Я несколько раз касался темы автоматного проектирования и конструктивной декомпозиции, но чтобы раскрыть эту тему нужны практические примеры. В этой и следующих нескольких статьях я проведу практикум, покажу процесс автоматного проектирования, пытаясь по возможности приводить ход рассуждений присущих автоматному проектированию.
Читать полностью »
Отчет c мини-конференции Использование визуальных моделей в ИТ. Проверено опытом
2017-11-22 в 7:35, admin, рубрики: Raiffeisenbank, sparx, Анализ и проектирование систем, архитектура, Блог компании Райффайзенбанк, визуальное моделирование1 ноября на площадке Райффайзенбанка прошла мини-конференция «Использование визуальных моделей в ИТ. Проверено опытом.»
О том, как это было и что обсуждали, читайте под катом.
Читать полностью »
Как не положить тысячи серверов с помощью системы централизованного управления конфигурацией на примере CFEngine
2017-11-21 в 10:19, admin, рубрики: Ansible, cfengine, chef, configuration management, devops, puppet, salt, Анализ и проектирование систем, Блог компании Одноклассники, Настройка Linux, системное администрированиеПривет! Меня зовут Дмитрий Самсонов, я работаю ведущим системным администратором в Одноклассниках. Основные сферы моей компетенции — Zabbix, CFEngine и оптимизация Linux. У нас более 8 тыс. серверов и 200 приложений, которые в различной конфигурации формируют 700 различных кластеров. Тема этой статьи исчерпывающе описана в заголовке.
Сразу хочу оговориться:
- Я буду предвзят, потому что участвовал во внедрении CFEngine в Одноклассниках.
- Я пользовался CFEngine только версий 3.3—3.4.
- Я не питаю никаких иллюзий по поводу CFEngine, это значимый игрок, но не лидер рынка и не его аутсайдер. В статье не будет сравнений работы CFEngine с другими системами.
- Из систем конфигурации у меня есть опыт использования только CFEngine и Ansible.
Автоколебания и резонанс
2017-11-18 в 18:35, admin, рубрики: python, автоколебания, Анализ и проектирование систем, математика, разработка под windows, резонанс, резонатор, фазаЗдравствуйте!
В связи с вопросами читателей моей публикации [1] касательно условий возбуждения автоколебаний в механической системе, я решил описать явление возникновения и поддержания автоколебаний подробно, выделив основные области возникновения и применения автоколебаний.
В википедии автоколебания объясняют так [2]:
Незатухающие колебания в диссипативной динамической системе с нелинейной обратной связью, поддерживающиеся за счёт энергии постоянного, то есть непериодического внешнего воздействия.
Автоколебания отличаются от вынужденных колебаний тем, что последние вызваны периодическим внешним воздействием и происходят с частотой этого воздействия, в то время как возникновение автоколебаний и их частота определяются внутренними свойствами самой автоколебательной системы. При этом частота становится почти равной резонансной. Читать полностью »
Автоматное программирование. Часть 4. Эффективность автоматно-спроектированных программ
2017-11-18 в 4:56, admin, рубрики: автоматное программирование, Алгоритмы, Анализ и проектирование систем, быстродействие, программирование микроконтроллеров, Совершенный код, энергоэффективностьВ предыдущих двух статьях речь шла о диаграмме состояний и переходов, используемой для описания динамических процессов в автоматном стиле, и о том, что диаграмма состояний и переходов даёт наилучшее понимание таких процессов. Также были рассмотрены базовые методы реализации автоматов, заданных диаграммой состояний, и были очерчены артефакты автоматной схемотехники, доставшиеся от неё автоматному программированию. Но, до сих пор совершенно не затронут вопрос: насколько эффективны автоматно-реализованные программы?
Я бы сформулировал вопрос иначе: насколько эффективны автоматно-спроектированные программы? Такая формулировка вопроса намекает, что автоматное проектирование — источник высокой эффективности программ. Я ещё практически не касался столь важной темы как эффективность, и пример «Дисплей» идеально подходит для иллюстрации эффективности автоматного проектирования. В первой статье я познакомил читателей с «лабораторной» версией этого модуля, но тестировать я буду «боевой» вариант, процесс проектирования которого я приведу в следующей статье. Исследование эффективности будет выполнено для платформ msp430 и CortexM3.
Чтобы не быть субъективным, оценивая эффективность, нужно с чем-то сравнивать результаты. Поэтому я проведу тот же комплекс испытаний для неавтоматной реализации примера «Дисплей» любезно предоставленной michael_vostrikov, за что ему огромная благодарность и плюсы в карму.
Читать полностью »
Микросервисы: деплой, координация и согласованность данных
2017-11-17 в 4:33, admin, рубрики: .net, devday, meetup, scala, Анализ и проектирование систем, Блог компании 2ГИС, микросервисы, ПрограммированиеПро микросервисы не рассказывал только ленивый. Вот и мы не ленивые. Решили поговорить о микросервисах. Но только не ещё раз о том, что это такое, а о том, как мы их сервируем в 2ГИС. Например, наши бекенды держат 15 млн пользователей в месяц. На встрече поговорим о деплое, координации и согласованности данных.
Читать полностью »