# Понедельник 35 твитов
Здравствуйте. Меня зовут Сергей и я ал..., пардон, архитектор. На этой неделе буду вашим ведущим в backendsecret. П… twitter.com/i/web/status/9…
10:22Последние почти десять лет я тружусь в "Лаборатории Касперского", пять из них занимаюсь архитектурой проектов, связ… twitter.com/i/web/status/9…
10:30То же относится к вопросам, отвечая на которые может возникнуть риск нарушения NDA. Прошу понять правильно. И, наде… twitter.com/i/web/status/9…
10:30@skv_nskv Да здесь была дичь с НДА и камерами над рабочим местом.
Про предыдущего ведущего. twitter.com/backendsecret/…
10:37Ну а темой этой недели будут различные вопросы контрацепции. В смысле, поделюсь своими знаниями и опытом о том, как… twitter.com/i/web/status/9…
10:51Сначала поговорим о проблеме как таковой. А потом пойдём по нарастающей: какие средства предохранения могут применя… twitter.com/i/web/status/9…
10:59Если останется время и силы - закончим общефилософскими вопросами и, по традиции, гендерными проблемами. Возможно...
10:59Сразу оговорюсь: истиной в последней инстанции я не являюсь и, безусловно, в чём-то могу ошибаться. Кроме того, я л… twitter.com/i/web/status/9…
11:05Но, ближе к теме. Фронтенды и бэкенды бывают разные. Бывают такие: pic.twitter.com/hWde6byTGK
11:51А бывают такие: pic.twitter.com/G4aq9cUWie
11:51Но и те, и другие испытывают проблемы с безопасностью. Только если в первом случае результат взлома может быть таки… twitter.com/i/web/status/9…
11:51То во втором (в пределе) - таким. И в этой шутке только доля шутки. pic.twitter.com/D2YpLzg5yU
11:51Проблема в том, что разработчики вот этих вот бэкендов (софт и железа) начали разрабатывать их тогда, когда хакеры… twitter.com/i/web/status/9…
12:05И получилась такая вот картинка по угрозам взлома и найденным (и опубликованным) уязвимостям. Это по состоянию на 2… twitter.com/i/web/status/9…
12:05Рост найденных уязвимостей в системах управления промышленностью, ровно как и само их наличие, связано с двумя осно… twitter.com/i/web/status/9…
14:05В этой области несложно найти системы, работающие чуть ли не под DOS. Ещё проще - работающие под Win2000/XP. До сих… twitter.com/i/web/status/9…
14:05Таким образом, основные усилия направлялись (и направляются) на минимизацию импакта от возможной аварии, но риски,… twitter.com/i/web/status/9…
14:05Но есть ещё один, третий, важный фактор. Разработка ПО с учётом требований безопасности - более дорогая. И результа… twitter.com/i/web/status/9…
14:54В конце 2000-ых Microsoft выпустила документ (на самом деле, набор требований и рекомендаций) под названием SDL - S… twitter.com/i/web/status/9…
14:54Как можно увидеть, безопасность (её требования) влияет на всё - и на сам процесс, и на архитектуру, и на разработку… twitter.com/i/web/status/9…
14:54Но делать "и так сойдёт" становится всё сложнее. И даже не с точки зрения хакеров и исследователей, которые находят… twitter.com/i/web/status/9…
15:05... не говоря уже о промышленных системах. Европейский GDPR, российский закон о защите персональных данных, и т. п.… twitter.com/i/web/status/9…
15:05Кроме этого, существют ещё два аспекта, связанных с безопасностью: надёжность и доступность. Первый определяет то,… twitter.com/i/web/status/9…
15:05Пример прошлой недели как раз показывает, что такое системы, у которых всё хорошо с проработкой аспекта доступности… twitter.com/i/web/status/9…
15:05Подводя предварительный итог. Три кита безопасности решения:
19:46Конфиденциальность - механизмами надёжного разграничения доступа, моделями безопасности, шифрованием как данных, та… twitter.com/i/web/status/9…
19:46Доступность - схемами и архитектурой развёртывания, надёжностью каналов связи, балансировкой нагрузок, фильтрами, с… twitter.com/i/web/status/9…
19:46Надёжность - качеством кода, характеристиками железа, операционной системы, архитектурой развёртывания, схемами рез… twitter.com/i/web/status/9…
19:46Нюанс здесь в том, что обо всём этом нельзя думать "потом". Не существует универсальных рецептов сделать произвольн… twitter.com/i/web/status/9…
19:57Возможность сломать/взломать что-либо ограничивается только суммой денег которую готов на это потратить злоумышленн… twitter.com/i/web/status/9…
19:57В свою очередь подходы исключительно в стиле security through obscurity или охраны периметра эту сумму значительно… twitter.com/i/web/status/9…
20:13Всем привет. На этой неделе я с вами из солнечной Калифорнии. Мы решили мое дежурство совместить с моей поездкой на… twitter.com/i/web/status/9…
19:46Я сам не очень подхожу по формату, как мне кажется, потому что вообще не программист. Но работаю с программистами у… twitter.com/i/web/status/9…
19:49Сейчас я нахожусь на евенте Global Google Developer Group Leaders Summit. На сцене CEO Meetup.com Scot… twitter.com/i/web/status/9…
19:55Тут можно почитать про то, что такое GDG: developers.google.com/programs/commu… Если кратко – вы проводите митапы, конференции, а… twitter.com/i/web/status/9…
19:58# Вторник 31 твит
Ну вот. Пришёл новый день, и настало время продолжить разговор о мерах предохранения при разработке ПО. Сегодня реч… twitter.com/i/web/status/9…
12:37С++ - не то, чтобы популярный язык для разработки web-бэкендов, но серверного ПО на нём пишут всё ещё в достатке. И… twitter.com/i/web/status/9…
12:43В С++ (да, думаю, и не только в нём) безопасность кода начинается с использования корректных языковых средств и выр… twitter.com/i/web/status/9…
13:17Google C++ coding standard:
google.github.io/styleguide/cpp…
NASA JPL C coding guildelines:
lars-lab.jpl.nasa.gov/JPL_Coding_Sta…
C++ Core… twitter.com/i/web/status/9…
Во всех этих документах и рекомендациях есть мотивационная часть по использованию или неиспользованию тех или иных… twitter.com/i/web/status/9…
13:18Очевидно, что при разработке с уклоном в безопасность нужно стараться избегать потенциально-опасных языковых констр… twitter.com/i/web/status/9…
13:24Собираться лучше со всеми включёнными варнингами (-W4), и с опцией "warning is error". В этом случае код получится… twitter.com/i/web/status/9…
13:24Что не выловят статические анализаторы - отловят динамические. Для C++ требуется минимум три: memory sanitizer, thr… twitter.com/i/web/status/9…
13:34В рамках имеющихся unit- и функциональных тестов первый отловит кейсы некорректной работы с памятью, второй - прове… twitter.com/i/web/status/9…
13:34То, что предлагает gcc и clang в этом плане - вполне подходит. По крайней мере, в случае разработки под Linux - совершенно точно.
13:37Дальше - опции сборки. А именно:
-fPIC - позволяет грузить динамические библиотеки по разным адресам.
-fPIE - то же… twitter.com/i/web/status/9…
SafeStack (от clang) - разделяет программный стек на две части. Одну (безопасную) для адресов возврата и аргументов… twitter.com/i/web/status/9…
13:49stack-protector - генерирует код с дополнительными проверками, что никто не проехался по стеку.
productive-cpp.com/hardening-cpp-…
Есть ещё несколько опций, про которые можно прочитать, например, здесь:
security.stackexchange.com/questions/2444…
Редко какой проект обходится без third-party кода. Не, бывают ситуации, когда всё пишется самостоятельно с нуля (пр… twitter.com/i/web/status/9…
19:34С обсуждаемой точки зрения в этом есть как плюсы, так и минусы. Если используемый third-party-компонент - серьёзный… twitter.com/i/web/status/9…
19:34С другой стороны, та же история с heartbleed в openssl показывает, что и на старуху бывает проруха. В любом случае,… twitter.com/i/web/status/9…
19:34В мире пакетных менеджеров которые, безусловно, решают массу проблем, можно столкнуться с ситуацией, когда:
19:45Таким образом ответ на вопрос, из каких third-party компонентов в данный момент времени состоит ваш проект, может о… twitter.com/i/web/status/9…
19:45В частности, такую ситуацию можно наблюдать на проектах на Node.JS. В какой-то момент все внешние зависимости может… twitter.com/i/web/status/9…
19:45Но все эти приседания с харденингом сборки, чисткой кода и всем таким прочим будут неполны без качественных тестов.… twitter.com/i/web/status/9…
23:16Понятно, что догнать покрытие по функциям и ветвлениям до 100% чаще всего невыполнимая задача. Но чем выше будет эт… twitter.com/i/web/status/9…
23:16Необходимы негативные тесты. Для компонентов, получающих данные извне (из сети, с диска, с консоли и т. п.) необход… twitter.com/i/web/status/9…
23:16Стресс-тестирование выявит проблемы с надёжностью, если они есть. Отдельно идут тесты на функционал, работающий с п… twitter.com/i/web/status/9…
23:16Мир тесен. Встретил читателя этого аккаунта из Риги. pic.twitter.com/jtupRo5Sbq
2:26@backendsecret Зачем тогдв на то поехал ?
Сорри, зачем тогда куда поехал? На I/O? Причин много: путешествие, знакомства, новые технологии. Ну и то, что я не… twitter.com/i/web/status/9…
2:43@backendsecret А во сколько обойдется поездка? Просто интересно сколько такое приключение может стоить!?
Билет на I/O обойдется в $1350 (студентам сильно дешевле). Но его ещё надо выиграть, там лотерея.
Перелет из Бишкек… twitter.com/i/web/status/9…
Intel каждый год проводит satellite event перед I/O. Живая музыка, крафтовое пиво, street food и демо-стенды: много… twitter.com/i/web/status/9…
9:30А ещё у нас с моим другом/наставником Олегом есть свой канал на YouTube: youtube.com/channel/UCvxfG… Там мы говорим на… twitter.com/i/web/status/9…
9:50@backendsecret Что удивительно — этот читатель в прошлом году тоже рассказывал про то, что происходило на Google I/O 👀
Это прям вообще весьма занятное стечение обстоятельств. Кстати, не тэгнул на фото из-за бага в Твиттере - вводил тв… twitter.com/i/web/status/9…
9:55Здесь, кстати, тоже весьма интересное поведение видеосервиса. Мы назвали канал так, что его название распознаётся Ю… twitter.com/i/web/status/9…
9:58# Среда 25 твитов
@backendsecret Тоже читаю всё это, и очень трудно не согласиться с разумными вещами как разработчику, но собственно… twitter.com/i/web/status/9…
Всё так. Всё правда. twitter.com/DonnaInsolita/…
12:02@backendsecret Для этого уже давно есть @yarnpkg, пакетный менеджер, фиксирует точные версии всех зависимостей. Что с ним не так?14:06
@sekogan @backendsecret @yarnpkg npm давно имел shrinkwrap, а npm v5+ и pnpm также как и ярн имеют локфайл по умолчанию14:06
Первая половина дня выдалась нетипично напряжённой, поэтому прошу прощения за столь позднее появление.
14:31@musuk @backendsecret Ну ладно, тесты/сканнеры, а править то все равно надо, а править работу без тестов - на одну… twitter.com/i/web/status/9…
Этот ретвит - хорошая подводка к теме ближайших двух дней. В комментариях завязалась небольшая дискуссия о крайней… twitter.com/i/web/status/9…
14:42Причина в том, что уровень защиты (в данном случае сервиса/службы/приложения) зависит не только от наличия или отсу… twitter.com/i/web/status/9…
14:42... задним числом может оказаться сложно. Ибо эти требования аффектят не только (и не столько) реализацию, но и арх… twitter.com/i/web/status/9…
14:42В решении, где до сих пор был только один пользователь с правами суперюзер, реализация такого требования приведёт к… twitter.com/i/web/status/9…
14:42@russianlagman @SaitoNakamura @backendsecret @sekogan @yarnpkg @pnpmjs It is your choice to use it or not. I only p… twitter.com/i/web/status/9…14:52
Когда в требованиях появляется слово "безопасность" становиться нельзя просто так взять, и вызвать метод сервиса. Н… twitter.com/i/web/status/9…
15:01Становится сложно взять и свалить всё в одну кучу, ибо появляются модели и домены безопасности, права доступа к объ… twitter.com/i/web/status/9…
15:01RSA leaked all the attendees personal details via unsecured public facing API's using hard coded credentials in a m… twitter.com/i/web/status/9…
В противном случае появляются такие вот, эмм... неожиданности. Таки да - прослойка между клавиатурой и креслом - са… twitter.com/i/web/status/9…
15:01Таким образом, всё начинается с требований и упирается в архитектуру. Архитектуру решения как такового, архитектуру… twitter.com/i/web/status/9…
15:33Если же говорить про архитектуру вообще (и подходы к её построению) - в качестве затравки предложу посмотреть вот э… twitter.com/i/web/status/9…
15:33Так вот, продолжаем за архитектуру вообще и ООП в частности. Я не исключаю у себя наличие стокгольсмского синдрома… twitter.com/i/web/status/9…
16:45ООП вообще (и SOLID - в частности) - иструменты, не сильно лучше и не сильно хуже других. При грамотном использован… twitter.com/i/web/status/9…
16:45Другое дело, что (по моей сугубо личной оценке) ООП - это типа С++ в мире архитектурных парадигм. При кажущейся про… twitter.com/i/web/status/9…
16:50Так что наверное таки да - стокгольмский синдром. 😆
16:50@russianlagman @ZoltanKochan @backendsecret @sekogan @yarnpkg @pnpmjs Не совсем так. С 5.1.0 до 5.4.2 нужно было ру… twitter.com/i/web/status/9…17:51
@backendsecret выскажетесь по поводу Domain Model против Transaction Script, что вы используете
Как говориться, на ловца и зверь бежит. Длинное (на полтора часа) высказывание на эту тему. Определённо стоит дослу… twitter.com/i/web/status/9…
18:04Кроме того, мой опыт показывает, что удержаться в рамках рафинированных подходов и парадигм (в реальной жизни, в ре… twitter.com/i/web/status/9…
18:53На то он и накопленный опыт (и знание возможных альтернатив), чтобы понимать, что в данном конкретом случае имеет с… twitter.com/i/web/status/9…
18:53На то он и накопленный опыт (и знание возможных альтернатив), чтобы понимать, что в данном конкретом случае имеет с… twitter.com/i/web/status/9…
Вот, скажем, в качестве примера. В декабре Егор предлагал здесь (бэкенд сикрет) отказаться от геттеров и сеттеров в… twitter.com/i/web/status/9…
19:22В теории - интересная идея. На практике - может быть по-разному. В одних случаях - решит проблемы и сделает код про… twitter.com/i/web/status/9…
19:22# Четверг 37 твитов
Мне нужно было запостить эту ссылку вчера. Но пусть будет сейчас:
youtube.com/watch?v=85fXs6…
Всем доброго дня. Сегодн… twitter.com/i/web/status/9…
12:16Здесь - отдельно слайды с этого доклада.
slideshare.net/petegoodliffe/…
Да. Так вот. Об архитектуре с уклоном в безопасность и SOLID. Одно с другим связано больше, чем может показаться с… twitter.com/i/web/status/9…
14:39S (Single Responsibility) - каждый класс (или компонент) должен иметь только одну ответственность, и эта ответствен… twitter.com/i/web/status/9…
14:39O (Open-Close principle) - каждый класс (или компонент) должен быть открыт для расширения, и закрыт для модификации.
14:39L (The Liskov substitution principle) - при замене в коде экземпляра класса (компонента) на экземпляр любого из его… twitter.com/i/web/status/9…
14:39I (Interface Segregation Principle) - одна задача - один интерфейс. Клиентский код не должен зависеть от того, что он не использует.
14:39D (Dependency Injection) - классы и компоненты зависят от абстракций (интерфейсов), а не от их конкретных реализаций.
14:39@backendsecret Это общедоступная инфа о DIP. Но ни разу не видел как говоря о DIP, раскрывали что такое абстракции,… twitter.com/i/web/status/9…
Так всё просто же. :) (ну, с моей ТЗ). Компонент не работает в вакууме. Ему для работы обычно нужны те или иные сер… twitter.com/i/web/status/9…
15:05Вариант номер раз: он может добавить зависимости на конкретные реализации читателей и писателей (ну, скажем, FileRe… twitter.com/i/web/status/9…
15:05Вариант номер два: интерфейс читателя и интерфейс писателя передаются извне. То есть сериализатор зависит только от… twitter.com/i/web/status/9…
15:05Есть ещё третий вариант (паттерн Service Locator) - когда сериализатор получает интерфейсы из некоего репозитория (… twitter.com/i/web/status/9…
15:05Очевидно, что второй вариант (плюс ко всему) ещё и более тестируем, т. к. позволяет клиенту (или тестовому коду) со… twitter.com/i/web/status/9…
15:05@backendsecret А так народ вон уже пишет что интерфейсы не нужны, потому что их надо постоянно вместе с имплементац… twitter.com/i/web/status/9…
Эм... Безусловно (то есть это презюмируется и постулируется), что интерфейс отражает и фиксирует контракт взаимодей… twitter.com/i/web/status/9…
15:13Интерфейсы - это точки связи и взаимодействия. С одной стороны, они создают зависимости, с другой - уменьшают степе… twitter.com/i/web/status/9…
15:13То есть когда ты выделяешь абстракцию - ты уже можешь описать её интерфейс. Который является отличительным признаком конкретной абстракции.
15:13@backendsecret Потому что мало написать с сервису интерфейс и назвать его абстракцией. Чтобы он был путной абстракц… twitter.com/i/web/status/9…
К слову, это ко вчерашнему вопросу о "А какие критерии "освоения" парадигмы ООП?" (twitter.com/frank_snijder/…)
Когда т… twitter.com/i/web/status/9…
В принципе (чуть позже) могу показать ход мысли на конкретном примере.
15:29При этом я не утверждаю, что написать хороший интерфейс (сходу) - легко. Чаще наоборот, это как раз таки сложно по… twitter.com/i/web/status/9…
15:32@backendsecret Лично я понял, что есть на самом деле SOLID только когда прочел "Clean architecture" Мартина. До это… twitter.com/i/web/status/9…16:11
Дело близится к вечеру, а я ещё даже толком и не начал. Итак, как реализация требований по безопасности может ложиться на волшебную SOLID?
18:27Первая буква. S. Single Responsibility.
Очевидно, что максимальный вред, который может нанести компонент системе в… twitter.com/i/web/status/9…
Согласно этому принципу, компонет не должен требовать прав больше, чем минимально ему необходимо для выполнения сво… twitter.com/i/web/status/9…
18:47Отсюда получается, что чем меньшим функционалом нагружен конкретный компонент - тем меньше привелегий ему нужно для… twitter.com/i/web/status/9…
18:47@backendsecret Ну на S збс ложится18:48
Хак в одном месте с меньшей вероятностью поможет открыть другое + за кодом проще… twitter.com/i/web/status/9…
O. Open/closed principle. Функционал, который реализует компонент, зафиксирован контрактом его интерфейса (и требов… twitter.com/i/web/status/9…
19:25С другой стороны, реализация компонента может допускать легальное расширение функционала. Это расширение может быть… twitter.com/i/web/status/9…
19:25То есть с ТЗ безопасности компонент должен быть реализован так, чтобы исключать нелегальную модификацию, и гарантир… twitter.com/i/web/status/9…
19:25L. Тут всё просто. С точки зрения безопасности, расширение компонента путем наследования не должно нарушать контрак… twitter.com/i/web/status/9…
19:33I. Interface Segregation. Тут, в общем, тот же подход, что и в букве S, только с другой стороны. Клиент не только н… twitter.com/i/web/status/9…
19:59Добиться этого можно реализацией именно этого вот принципа - логической группировкой методов по интерфейсам с учёто… twitter.com/i/web/status/9…
19:59Сюда же идут всевозможные "недокументированные возможности", как способ через интерфейс с одним контрактом получить… twitter.com/i/web/status/9…
19:59Ну и последняя буква, D. Dependency Injection. Компоненты, спроектированные и реализованные согласно описанным ране… twitter.com/i/web/status/9…
20:30Упомянутый ранее xml-сериализатор может тупо не иметь прав на создание файлов на диске. К примеру. Зато эти права (… twitter.com/i/web/status/9…
20:30... уменьшать сцепленность, но и группировать функционал по доменам безопасности, чётко специфицируя как переходы ч… twitter.com/i/web/status/9…
20:30@backendsecret Dependency Inversion this letter is.
Just leave that here:
sergeyteplyakov.blogspot.ru/2014/11/di-vs-…
Да. Прошу прощения. Меня совершенно правильно поправили. Буква D - это Dependency Inversion (а не Dependency Inject… twitter.com/i/web/status/9…
23:06@backendsecret Часто путают D в SOLID и DI/IC паттерн
Это несколько разные вещи
В SOLID D это dependency inversion… twitter.com/i/web/status/9…
Да. Всё так. twitter.com/krems5/status/…
23:14# Пятница 2 твита
@SKapraloFF @backendsecret Ну интерфейс в D это не interface из джава14:42
Это же просто публичный контракт, API
А inter… twitter.com/i/web/status/9…
Прошу меня извинить, но сегодня, видимо, уже ничего не смогу написать. Постараюсь компенсировать завтра.
23:47# Суббота 19 твитов
Всем доброго дня. Вчера в РФ была неправильная пятница, и какая-то уж очень суровая. Сегодня - неправильная суббота… twitter.com/i/web/status/9…
12:47И нет. Это снова был не РКН.
12:47В черверг я много рассказывал про связь аспектов безопасной разработки и SOLID-подходов к дизайну системы. Вывод, к… twitter.com/i/web/status/9…
12:51В черверг я много рассказывал про связь аспектов безопасной разработки и SOLID-подходов к дизайну системы. Вывод, к… twitter.com/i/web/status/9…
Для того, чтобы сделать решение безопасным надо предпринять некоторое количество дополнительных усилий как минимум… twitter.com/i/web/status/9…
16:24Контроль доступа. Про парольную защиту (в том или ином виде) известно многим. Но, вообще говоря, в рамках реализаци… twitter.com/i/web/status/9…
16:36Гарантии того, что субъект, описываемый теми или иными атрибутами безопасности (например, ролью в системе - админис… twitter.com/i/web/status/9…
16:36Таких моделей - много. Например, Модель Белла-Лападулы (БЛП или "мандатка")
ru.wikipedia.org/wiki/%D0%9C%D0…
Ролевая модель
ru.wikipedia.org/wiki/%D0%A3%D0…
Type Enforcement
en.wikipedia.org/wiki/Type_enfo…
И множество других. Многие из этих моделей имеют под собой неслабый математический аппарат и формальные доказательс… twitter.com/i/web/status/9…
16:36Реализация той или иной модели безопасности в своём решении может оказаться нетривиальной задачей. В каких-то (серь… twitter.com/i/web/status/9…
16:42С точки зрения реализуемой системы у такого монитора будет две основных задачи:
16:422. Контроль целостности.
Функционал крайне необходимый для того, чтобы понять: поломали сервис или нет, и выполняет… twitter.com/i/web/status/9…
Абсолютных гарантий, понятно, всё это не даст. Но некоторые риски закроет.
19:263. Аудит. Требование его наличия (как и наличие разграничения доступа) будет обязательным, если решение пойдёт на с… twitter.com/i/web/status/9…
19:36Причины понятны: должна быть возможность расследовать инциденты. Причём, чем подробнее действия будут сохраняться (… twitter.com/i/web/status/9…
19:36@musuk Безопасность стоит денег. Требования к аудиту, которые я видел, предполагали, что записи аудита сложно дропн… twitter.com/i/web/status/9…
По идее, аудит должен мочь дать ответ на вопросы: "Какая сволочь стреляла?" и "Кто бросил валенок на пульт?" в случ… twitter.com/i/web/status/9…
21:10@musuk В данном случае скорее соглашусь, да. Но тут ещё всё зависит от характера хранимых и обрабатываемых данных.… twitter.com/i/web/status/9…
Тут как бы то же деление: не тех, кто ещё, и тех, кто уже. twitter.com/backendsecret/…
21:14# Воскресенье 30 твитов
4. Контроль окружения.
Вся засада в том, что как бы хорошо не была спроектирована и разработана ваша система, она н… twitter.com/i/web/status/9…
В идеале (или если вы готовитесь проходить сертификацию) вы должны:
а) зафиксировать конкретные версии thirdparty
б… twitter.com/i/web/status/9…
Аналогично - с операционной системой. Только тут добавляются дополнительные шаги:
г) hardening. Отключается всё, в… twitter.com/i/web/status/9…
После этого у вас есть уверенность (с поправкой на zero-day-баги), что в рамках известных проблем ваше решение буде… twitter.com/i/web/status/9…
0:25Всем доброго дня. Выходного дня. В РФ сегодня первый день майских праздников, за её пределами - последний день выхо… twitter.com/i/web/status/9…
14:48Воскресенье подобралось как-то быстро и незаметно, и это - последний день моего ведения backendsecret. Серьёзных те… twitter.com/i/web/status/9…
14:53В понедельник мне задали вопрос, чем отличается архитектор от сеньёра. На самом деле, долго думал над ответом, и к… twitter.com/i/web/status/9…
14:59Итак, ответ номер раз - шутливый. Отличия (в картинках) разработчиков разного уровня друг от друга. Ну или, иначе г… twitter.com/i/web/status/9…
15:10Сеньёр: pic.twitter.com/sOyolc8u6k
15:10Архитектор/тимлид pic.twitter.com/fCvQ8ubDsx
15:10@backendsecret интересен вопрос чем архитектор отличается от старшего (сениор) разработчика и каковы ваши обязанности?
А теперь ответ серьёзнее и длиннее. И, как просили, для двух случаев - небольшой конторы (15-20 чел.), и большой (о… twitter.com/i/web/status/9…
15:32ИМХО, основное отличие в том, что архитектор - это уже не разработчик. Как в строительстве архитектор - это не стро… twitter.com/i/web/status/9…
15:32согласовать принятые решения с бизнесом и командой разработки, следить за тем, чтобы разработка шла в нужном русле… twitter.com/i/web/status/9…
15:32Решать прочие вопросы, непосредственно с разработкой (написанием кода), не связанные.
В маленьких конторах роль арх… twitter.com/i/web/status/9…
@backendsecret Благодаря вам, с мидл/сеньора апгрейднулся до архитектора) pic.twitter.com/0deCVI3psj16:41
@backendsecret Оборудовние, фреймворки и стек технологий, архитектура приложения - вот тут сеньор может только выр… twitter.com/i/web/status/9…
В модели с идеальным распределением ролей в команде - да. Так оно и должно быть. Хуже, когда архитектор принимает о… twitter.com/i/web/status/9…
18:14А есть ли в ваших командах специально выделенные архитекторы и чем они занимаются?
18:18А если специально выделенных архитекторов нет, то кто отвечает за архитектуру и как он с этим справляется?
18:19А есть ли в ваших командах специально выделенные архитекторы и чем они занимаются?
И другой вопрос здесь же: занимаются ли ваши архитекторы разработкой и, если да, то в каком объёме? twitter.com/backendsecret/…
18:41@Novosilicon @backendsecret Тут всё зависит разрабатываемого приложения. Чем оно сложнее и критичнее, тем больше не… twitter.com/i/web/status/9…19:04
Ну и ещё вопрос, до кучи. Учитываются ли в ваших решениях (при разработке или проработке архитектуры) аспекты безоп… twitter.com/i/web/status/9…
19:07@Alex_IT_83 @backendsecret Да, иногда не хватает весомого и авторитетного ответа на вопрос, когда нет специального… twitter.com/i/web/status/9…
О, да. Формализация бизнес-процессов способна превратить разработку в маленький филиал ада. twitter.com/Novosilicon/st…
19:09О, да. Формализация бизнес-процессов способна превратить разработку в маленький филиал ада. twitter.com/Novosilicon/st…
С другой стороны, отсутствие хоть какой-то формализации (в относительно крупных проектах) - прямой путь к факапам и… twitter.com/i/web/status/9…
19:13@backendsecret Есть. Пьет и курит. @spscream21:40
@backendsecret У нас команда архитекторов из трёх человек. Обязанностей несколько:21:59
1) Ведём технический roadmap(мап… twitter.com/i/web/status/9…
Моё время стояния на табуретке backendsecret'а заканчивается. Как оказалось, неделя - это не то, чтобы много. Расск… twitter.com/i/web/status/9…
23:40Всем спасибо за внимание и общение. Надеюсь, моё дежурство здесь для кого-то оказалось полезным. Если хотели у меня… twitter.com/i/web/status/9…
23:40# Ссылки
other
- https://google.github.io/styleguide/cppguide.html
- https://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf
- http://www.productive-cpp.com/hardening-cpp-programs-stack-protector/
- https://security.stackexchange.com/questions/24444/what-is-the-most-hardened-set-of-options-for-gcc-compiling-c-c?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
- https://jfrog.com/artifactory/
- https://www.youtube.com/watch?v=mrY6xrWp3Gs
- https://www.youtube.com/watch?v=85fXs6cQETQ
- https://www.youtube.com/channel/UCvxfGSKhOx5FMEFtFzDgcmA
- https://www.luxoft-training.ru/kurs/obektno-orientirovannyy__analiz_is_kontseptualnoe_modelirovanie_na_uml_dlya_sistemnyh_analitikov_.html
- https://www.slideshare.net/petegoodliffe/becoming-a-better-programmer-47411490
- https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%91%D0%B5%D0%BB%D0%BB%D0%B0_%E2%80%94_%D0%9B%D0%B0%D0%BF%D0%B0%D0%B4%D1%83%D0%BB%D1%8B
- https://ru.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%BC_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_%D1%80%D0%BE%D0%BB%D0%B5%D0%B9
- https://en.wikipedia.org/wiki/Type_enforcement
- http://meetup.com/
- https://developers.google.com/programs/community/gdg/