Pull to refresh
29
0
Руслан Сафин @razon

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

Send message

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

Reading time6 min
Views17K

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

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

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

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

Читать далее
Total votes 23: ↑20 and ↓3+26
Comments67

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

Level of difficultyEasy
Reading time16 min
Views7.7K

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

Читать далее
Total votes 24: ↑22 and ↓2+22
Comments8

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

Reading time11 min
Views21K

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

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

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

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

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

Читать далее
Total votes 17: ↑16 and ↓1+21
Comments16

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

Reading time14 min
Views8.4K

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

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

Читать далее
Total votes 10: ↑7 and ↓3+6
Comments11

Задачка по C#

Reading time1 min
Views2.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 верных решений, если интересно оценить свои знания и фантазию — не заглядывайте туда преждевременно.
Total votes 54: ↑40 and ↓14+26
Comments44

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Chief Technology Officer (CTO), Software Architect