Как стать автором
Обновить
29
4
Руслан Сафин @razon

Технический директор, ИТ-Архитектор

Отправить сообщение

Пространство двумерного времени

Время на прочтение6 мин
Количество просмотров16K

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

Понятно от чего так и зачем — мозг эволюционировал и родился в гравитации, но речь не об этом.

Говорят, есть ещё четвертое недо‑ или пере‑ измерение — время. Его мы воспринимаем ещё более направленным и постоянно в нём движемся.

В попытках порассуждать о восприятии только в трёхмерном пространстве, можно предположить о том, что в одномерном пространстве мы тоже мыслим, и привести в качестве примера как раз время. Но пространство предполагает возможности покоя и движения вдоль измерений в любом направлении (даже если измерение направлено в восприятии, например, гравитацией). С движением обратно во времени у нас всё сложно, с остановкой времени — ещё гораздо сложнее. Но пока закроем на это г̶л̶а̶з̶а̶ мозг и предположим, что ок — у нас есть в восприятии примеры трехмерного и одномерного (время) пространств. Но как быть с двумерным? Можете себе представить 2 разных ортогональных друг другу направления времени? Я — нет 🙂

Читать далее
Всего голосов 23: ↑20 и ↓3+26
Комментарии67

Покрытие архитектуры as Code тестами

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров7.4K

💬 На самом деле, моя идея написания тестов на архитектуру настолько проста, легко реализуема и при этом полезна, что я до сих пор толком не понимаю, почему я не встречал материалов на эту тему, и сама тема всё ещё не используется повсеместно 🙂
Статья написана по следам моих докладов на трёх крупных ИТ-конференциях, на каждой из которых ко мне подходили архитекторы и разработчики российских бигтехов, говорили, что я очень точно попал в их боли и предложил суперпрактику, которую они теперь будут внедрять. На всех трёх конференциях я получил высшие оценки от аудитории, а на двух из них доклад был признан лучшим в своей секции. В конце статьи приведена ссылка на видео доклада с одной из конференций.
В статье я поделюсь своей идеей и OpenSource-реализацией решения для написания тестов, разберу примеры тестов на небольшой учебной микросервисной архитектуре, а также расскажу про личный опыт и профит от применения этой практики.
Для разработчиков монолита тоже есть небольшой бонус: в OpenSource-репозитории появилась реализация и примеры тестов на архитектуру модульного монолита.

Читать далее
Всего голосов 24: ↑22 и ↓2+22
Комментарии8

Проектирование отказоустойчивости IT-систем

Время на прочтение11 мин
Количество просмотров20K

❓Как проектировать системы, которые будут толерантными для различного вида отказов и ошибок?

Что такое отказоустойчивость и стабильность?

Под отказоустойчивостью будем понимать свойство системы, которое позволяет максимально сохранять работоспособность при отказе отдельных конкретных компонентов системы либо связанных систем и восстанавливать работоспособность системы при восстановлении отказавших компонентов или связанных систем. Давайте рассмотрим подробнее эти 2 момента:

1. Деградация работоспособности системы должна быть прямо пропорциональна "величине" отказа. То есть, если упал сервис, отвечающий за некую некритичную функциональность — вся система не должна при этом падать. Да, небольшой кусочек не работает, но это не влияет на стабильность остальной части функционала.

2. Стабильность системы предполагает самостоятельного восстановления работоспособности после сбоя как компонентов системы, так и всей системы в целом. К примеру, если пропадала сеть на некоторое время — то у стабильных систем после восстановления подключения все компоненты продолжат работать и данные вернутся в консистентное состояние без ручного вмешательства со стороны команды эксплуатации.

Читать далее
Всего голосов 17: ↑16 и ↓1+21
Комментарии16

Гранулярность микросервисов. Насколько мелко нарезать?

Время на прочтение14 мин
Количество просмотров8.2K

Привет, Хабр! Меня зовут Руслан Сафин и я расскажу про микросервисы и как определить необходимую гранулярность. Я работаю техническим директором в Byndyusoft. Развиваю техническую культуру и участвую в проектах в роли IT-архитектора, а ещё преподаю авторский курс по IT-архитектуре в университете. В коммерческой разработке 15 лет. Из необычного — проектировал защиту от накруток в интернет-голосовании конкурса Мисс Россия и автоматическое определение предвзятости судей в танцевальном спорте.

Byndyusoft занимается заказной разработкой с продуктовым подходом. Так как наша компания работает с крупными заказчиками, мы постоянно учимся новому, перенимаем и сами делимся практиками, наблюдаем и используем разные подходы и приёмы проектирования. Этим практическим опытом я и поделюсь в статье.

Читать далее
Всего голосов 10: ↑7 и ↓3+6
Комментарии11

Задачка по C#

Время на прочтение1 мин
Количество просмотров2.6K
При каких условиях пройдет данный тест?

    [Fact]
    public void NewTest()
    {
      var a = new A();

      a.GetType().GetField("b").SetValue(a, 83);
      a.GetType().GetField("c").SetValue(a, 42);

      Assert.Equal(a.b, a.c);
    }

upd: В комментариях написали уже 5 верных решений, если интересно оценить свои знания и фантазию — не заглядывайте туда преждевременно.
Всего голосов 54: ↑40 и ↓14+26
Комментарии44

Информация

В рейтинге
1 030-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Chief Technology Officer (CTO), Software Architect