К основному содержимому
#Architecture

You Keep Using That Word • Sam Newman • GOTO 2023 (Рубрика Architecture)

#Architecture #Software #Engineering #SoftwareArchitecture #SystemDesign #DistributedSystems #Design

Это доклад Сэма Ньюмана, известного популяризатора термина микросервисы, по которым он написал известные книги "Building Microservices" в 2015 году, "Monolith to Microservices" в 2019 году, которые поспособствовали буму микросервисов. В этом докладе автор решил разобраться не с самими сервисами, а со связами между ними. Эти связи часто классифицируют как синхронные или асинхронные, но что же такое асинхронность и как она соотносится с синхронностью? Автор рассказывает про свой тред в сети X (ex-Twitter) трехлетней давности, где он устраивал дискуссию на эту тему и получил примерно следующие мнения о том, что входит в концепцию асинхронности:

  • Immediacy (незамедлительность) - пример звонка по телефону по сравнению с отправкой email
  • Temporal coupling (временная связанность) - связь действий во времени
  • Non-blocking (не блокируемость) - возможность делать неблокирующие выщовы (аля promises или async конструкций в языках)
  • Intermediary (посредник) - наличие промежуточного посредника навроде Rabbit MQ, Active MQ, Apache Kafka Также автор вспоминает про предыдущий подход к снаряду с асинхронностью от создателей Reactive Manifesto, который был создан пока написание манифестов еще не превратилось в булшит бинго. Конкрентно автор сомневается в полезности определения Asynchronous из этого манифеста

Asynchronous The Oxford Dictionary defines asynchronous as “not existing or occurring at the same time”. In the context of this manifesto we mean that the processing of a request occurs at an arbitrary point in time, sometime after it has been transmitted from client to service. The client cannot directly observe, or synchronize with, the execution that occurs within the service. This is the antonym of synchronous processing which implies that the client only resumes its own execution once the service has processed the request.

Конкретно у Сэма есть претензия к словам обработки запроса "after it has been transmitted", как будто обработка запроса возможна до этого. Тут сразу вспоминается Герберт Уэллс и его Машина Времени:) Но дальше Сэм сам не предлагает точного определения для асинхронности и говорит о том, что все зависит от контекста. В итоге, в социотехнической системе присутствуют люди, которые вкладывают смысл в слова языка и этот смысл может отличаться для одного и того же слова в разном контексте. На эту тему я рекомендую почитать книгу Александра Пиперски "Конструирование языков. От эсперанто до дотракийского", про которую я рассказывал раньше. В книге речь идет не о лингвистике в общем, а скорее про искусственные языки: краткую историю их исследований и принципы классификации. А при обсуждении искусственных языков мы можем наблюдать весь процесс дизайна языка, начиная с целей, проходя через принципы и приходя к имплементации. Это сильно интереснее обсуждения естественных языков, где многое объясняется тем, что "так исторически сложилось":))

#Architecture #Software #Engineering #SoftwareArchitecture #SystemDesign #DistributedSystems #Design