Как стать автором
Обновить

Вы за это заплатите! Цена Чистой Архитектуры. Часть 1

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров23K

Всем привет, меня зовут Артемий, я работаю старшим Android-разработчиком в команде пользовательского профиля в RuStore. Мой опыт в индустрии уже 8 лет. За это время я успел поработать в разных проектах и компаниях. У меня был опыт работы в проекте, в котором было свыше 300 модулей и больше 60 Android-разработчиков. Такие условия заставляют задуматься о масштабируемости на принципиально ином уровне.

Сегодня я расскажу о способах обеспечения масштабируемости проекта и как этому может навредить неправильное восприятие Чистой Архитектуры (далее — ЧА). Предупреждаю сразу, это лонгрид в двух частях!

Читать далее
Всего голосов 64: ↑61 и ↓3+58
Комментарии65

DDD простыми словами

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

Часто в больших компания всё поделено на большие системы. А если система «Legacy», т.е. устаревшая, то часто внутри неё собрано очень много разнородного функционала. По сути такие системы представляют из себя монолитных монстров.

Бывает, что компании решают использовать микросервисный подход, но в результате получают таких же монолитных монстров, но только работающих в Кубере.

Границы систем размыты, нет чёткого понимания, что должно входить в систему, а что нет.

Команды сильно специализированы на конкретную систему и не могут участвовать в доработке никакой другой системы.

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

Можно ли исправить ситуацию коренным образом?

Читать далее
Всего голосов 14: ↑7 и ↓70
Комментарии29

Ловушка семантики и атрибутивных конструкций, или Почему architecture decision — это не архитектурное и не решение?

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.2K

Одна из злободневных тем, которая постоянно вызывает жаркие споры в комментариях — перевод технических текстов, в том числе терминов. Кто-то уверен, что переводить нужно, кто-то резко против, есть и те, кто считает, что оригинальные термины в русском тексте должны быть написаны по-английски.

Независимо от выбранного подхода, сложно поспорить с тем, что переводов плохого качества действительно очень много. Одна из причин заключается в том, что переводящие текст люди — не обязательно переводчики.

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии24

3 необычных онлайн-сервиса для заядлых картографов

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

В наше время доминирования таких сервисов как GoogleMaps, 2ГИС, Яндекс.Карты и т.п. обычного пользователя трудно удивить онлайн-картами. Однако есть проекты, которые по-прежнему способны заинтересовать. В этой подборке я собрал наиболее интересные геоинформационные сервисы - приготовьтесь к погружению в историю, водный апокалипсис и царство цветов!

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии7

Шардирование (sharding). Эпизод 2: шардирование по гео

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров1.1K

Viam supervadet vadens (дорогу осилит идущий)

Есть много счастливчиков, которым повезло работать в ситуации, когда объёмы по-настоящему огромны и требования кажутся невыполнимыми. Но есть те, кому по настоящем крупно повезло! Я говорю о тех, кто решал задачи в пространствах, где размерность больше 1.

Давайте разбросаем осколки по всей земле?

Разбрасываем?
Всего голосов 8: ↑8 и ↓0+8
Комментарии1

Вы за это заплатите! Цена Чистой Архитектуры. Часть 2

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

В прошлой части мы немного коснулись теории и остановились на определении лишних компонентов. В этой части мы продолжим определять лишнее, коснёмся вопросов экстремальной экономии, а также закрепим всё выводами.

Если не читали первую часть, настоятельно рекомендую это сделать, чтобы оставаться в контексте.

Итак, продолжим.

Читать далее
Всего голосов 33: ↑33 и ↓0+33
Комментарии13

Амбициозные строительные проекты, которые изменят будущее

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

На самом деле фантастика уже давно стала реальностью. Теперь человечество (правда, не все) думает о строительстве городов не в контексте «где бы нам всех их расселить», а ради более глубинных целей. Например, спасти экологию планеты, разгрузить движение в ближайших перенаселенных городах. Ну и, конечно, прорекламировать свое государство и отправить всем послание: «У нас лучше, чем у других». 

Об одном из таких проектов уже недавно писали на Хабре. Тут предлагаем кратко разобрать 10 амбициозных проектов, которые должны реализовать в ближайшем будущем.

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

Рекуррентные сети против трансформеров

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

Или история о том, как научная статья "Вам нужно только внимание..." немного перевернула игру и индустрию ИИ. 

Трансформеры становятся сотами или попросту попадают в самые последние решения сферы NLP. Кстати, заслужили свою популярность они вообще недавно — только в 2017 году, когда курс доллара был 60 рублей, а для ТГ-каналов с новыми ИИ не исчислялись тысячами.

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии10

5 способов писать эффективный код на Go: от названий переменных до архитектуры

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

Если вы задумывались, какие практики использовать, чтобы писать код на Go быстро и качественно, этот материал для вас. Руководитель группы разработки подсистем Геннадий Ковалев и эксперт по разработке ПО Даниил Подольский обсуждают пять способов повысить эффективность разработки в команде Go-программистов: они расскажут, как называть переменные, составлять документацию и продумывать архитектуру так, чтобы специалистам в команде и смежных отделах было легко работать с написанным кодом. 

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

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

SwiftUI: архитектура State-Model-View

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров2.1K

В документации по UIKit компании Apple можно найти объяснение, что “структура приложений основана на шаблоне проектирования Model-View-Controller (MVC)”.

В материалах Apple по SwiftUI объяснений и даже просто ссылок на паттерны проектирования, похоже, нет. Попробуем сначала разобраться почему. Далее рассмотрим логичные и простые решения для построения как отдельных компонентов, так и уровень приложения с использованием состояний и property wrappers; подход, который логично обозначить как State-Model-View.

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

Шардирование (sharding). Эпизод 1: Начало и шардирование по идентификатору

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров5.8K

Divide et impera (разделяй и властвуй) – древний принцип для управления чем-то большим и сложным.

Многие из нас программируют. Многие из нас делают системы, сложные системы. Но некоторым повезло работать в ситуации, когда объёмы по-настоящему огромны и требования кажутся невыполнимыми. Шардировние – один из излюбленных счастливчиками, которых зовут приключения, приемов.

Что-нибудь разбить на кусочки – это круто! Переходите на сторону шардирования у нас есть печеньки!

За кусочками!!!
Всего голосов 22: ↑22 и ↓0+22
Комментарии7

Я айтишник, я строю новые цеха

Время на прочтение5 мин
Количество просмотров33K
image

Всё начинается с потребности в какой-то продукции. Умные люди рассчитывают, сколько этой продукции нужно, в каких местах её имеет смысл производить — и после этого ищут допустимые места для стройки. Решение зависит от имеющихся ограничений, но в большинстве случаев само здание проектируется вокруг основного оборудования.

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

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

Затем будущее здание разбивается на сотни подсистем и начинаются сначала предпроектные, а потом проектные работы. Моя задача — следить за тем, чтобы все нужные части технической и программной инфраструктуры, во-первых, не забыли, а во-вторых, чтобы они соответствовали нашим требованиям и были правильно вписаны в существующую ИТ-архитектуру.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии16

Что такое Архитектура

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

Существует множество определений термина "Архитектура ПО", от устаревших и неформальных до слишком абстрактных и претендующих на остроумие. К примеру, можно упомянуть сайт Института Программной Инженерии (SEI) Университета Карнеги-Меллона, в электронной библиотеке которого есть соответствующий документ.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии6

Ведь он живой и светится

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

Рефлексия о настоящей цели разработки программного обеспечения и о том, почему мы так часто об этой цели забываем.

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии3

Как не облажаться при выборе российского NGFW

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

Исследование российского рынка NGFW показало, что только 16% опрошенных довольны установленными российскими межсетевыми экранами. Наше общение с клиентами это подтверждает. При этом ошибка при выборе межсетевого экрана нового поколения может стать фатальной, так как именно NGFW отвечает за отказоустойчивость бизнеса и его защиту от кибератак.

Я, Юрий Дышлевой, более 10 лет занимаюсь сетевыми технологиями. За это время я успел построить множество сетей федерального масштаба. Большинство этих сетей сейчас активно перестраивают, пытаясь найти аналоги зарубежным продуктам. Вместе с командой разработки PT NGFW мы поставили себе цель — создать межсетевой экран мирового уровня.

Проанализировав потребности клиентов, мы решили рассказать о том, какими сложными могут быть ответы на вроде бы простые вопросы: как правильно выбрать NGFW? Что может послужить стоп-фактором? Кроме того, собрали топ пять ошибок при выборе межсетевого экрана, чтобы вам было проще ориентироваться в будущем, когда вам понадобится идеальный NGFW.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии5

Во что обойдется линеаризуемость в распределенной системе

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров6K


Всем привет, меня зовут Сергей Петренко, я программист в Tarantool. Сегодня мы посмотрим, с какими трудностями сталкивается клиент, когда вместо того чтобы общаться с системой, расположенной на одном инстансе, начинает общаться с распределенной системой. И разумеется, поговорим о том, как эти трудности преодолеть. Я расскажу, что такое линеаризуемость, как мы ее реализуем в Tarantool и как это делают другие СУБД. В завершение мы поговорим о накладных расходах от линеаризуемости.
Читать дальше →
Всего голосов 61: ↑60 и ↓1+59
Комментарии3

Опровергаю пять архитектурных заблуждений

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров23K

Привет! Я Алексей, iOS-разработчик в Тинькофф. Участвую в развитии архитектуры приложения, провожу собеседования и занимаюсь менторингом разработчиков.

За мой рабочий опыт у меня сложилось ощущение, что в среде мобильной разработки есть недопонимание ключевых принципов архитектуры. Хочется десакрализировать тему архитектуры, раскрыть некоторые принципы, по которым она строится, и разобрать популярные заблуждения, с которыми я столкнулся. Расскажу, почему бизнес-логика — это не все, кроме UI, с чего начинается архитектура и в чем разница между архитектурными шаблонами и архитектурой.

Читать далее
Всего голосов 40: ↑36 и ↓4+32
Комментарии27

Что в архитектуре тебе моей: создан гибридный процессор SG2000 с ядрами на базе RISC-V и ARM. Что за чип?

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

Китайские производители чипов в последнее время стали ещё активнее, чем раньше. Например, компания Sophgo разработала процессор SG2000 и его модификацию SG2002. Внутри них — ядра с архитектурами RISC-V и ARM. Компания позиционирует чип как элемент для IoT-систем. Поддерживаются Android и Linux. Подробности — под катом.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии4

Время, как часть платформы ERP-систем

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

Всем привет!

Продолжаю публиковать странные и непонятные статьи.

Но вдруг, кому-то пригодится.

Поехали...

Хочется поговорить о времени, как о состоянии системы.

Но для начала нужна вводная: первая из них — временнАя переменная. С чего стартуем? Стартуем с дебага, как и я когда-то. Сидишь, трейсишь программу, и в дебаге у тебя есть несколько инструментов для похода по исходному коду: какой-нибудь step over, step into, run to cursor, step next. Ну, вроде все есть, но как бы: а где step back? Вы никогда не пролетали в отладке мимо того, что отлаживаете? И сколько раз приходилось перезапускать отладку? Может, я один такой… несчастливый?

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

Что может помочь? Например, какие-нибудь инструменты логирования. Мы берем область памяти, которая выделена для хранения значения переменной, и записываем в “блокнот”, что там происходит. В этом такте одно значение, в следующем другое… Мы формируем логи, так сказать.

Когда мы объявляем переменную, она будет “работать” с момента объявления до момента окончания работы исходного кода (выхода из подпрограммы или удаления этой переменной). Ее значение в процессе может быть многократно изменено без возможности восстановления. Обычно нас это устраивает, и значения в дебаге нас интересуют только в текущий момент. Обычно это говорит о том, что значение “вечно”, оно было таким всегда, даже если один такт назад это было не так.

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии0

Китайские процессоры становятся все лучше: серверный чип 3C6000 от Loongson соревнуется с AMD Epyc на базе Zen 3

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

Поднебесная продолжает развивать собственную отрасль разработки и производства электроники. Неплохо себя чувствуют многие компании из Китая, но сейчас речь пойдет о Loongson, которая разрабатывает процессоры на основе собственной архитектуры LoongArch. Сейчас представлен серверный 3C6000, который «отстает» от конкурентов всего на три года. Подробности — под катом.
Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии51
1
23 ...