Как прокачаться в application architecture?

 Публичный пост

Всем привет. С какого-то момента начал ощущать потребность во внедрении какого-либо архитектурного подхода в приложениях с целями:
a) получить все плюсы хорошей архитектуры классов (вот здесь их список если кому интересно).
б) правильно и понятно структурировать код (файлы, классы и т.д.) и договориться с командой как это будут делать все.

Путем ресерча и недолгого обсуждения с коллегами остановились на Чистой Архитектуре Р. Мартина. Она была изучена и успешно внедрена и на этом я и остановился в app design.

Сейчас же решил еще дополнительно покопать в эту область чтобы уже поставить себе галочку "изучено" и в будущем использовать лучшее из доступного. В связи с чем у меня есть пара вопросов к сообществу:

  1. Знаете ли вы что-то на порядок лучше ЧА? По таким параметрам: более подходящее для веба (более универсальное), лучше документированное, проще (ЧА по началу кажется запутанной и только с опытом понимаешь как ее реализовывать).
  2. Знаете ли вы подходы которые дополнят ЧА или другую архитектуру? Другими словами - че комбинировать?

P.S. Я не спрашиваю про system design, а говорю именно об архитектуре классов в прикладном приложении

17 комментариев 👇
Богдан Стефанюк Пилю бекенд и все что с ним связано 26 августа 2020

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

Из книжек могу посоветовать:

UPD

P.S. Я не спрашиваю про system design, а говорю именно об архитектуре классов в прикладном приложении

Только сейчас заметил примечание, может другим будет интересно.

  Развернуть 1 комментарий

Действительно хорошие курсы! Grokking the System Design Interview прям мне зашел

  Развернуть 1 комментарий

Заинтересовал курс по первой ссылке, Web Application & Software Architecture 101 . Может быть кто-нибудь всё-таки проходил его из клуба? Как впечатления?

  Развернуть 1 комментарий

Как вариант, можешь посмотреть бесплатные кусочки курса.

  Развернуть 1 комментарий

они какие-то уж совсем скудные

  Развернуть 1 комментарий

На что стоит обратить внимание в первую очередь, по моему очень скромному мнению:

  1. GRASP. Одного только coupling/cohesion хватит чтобы закопаться для долгие годы. Рекомендую больше чем SOLID, т.к позволяет принимать решения при написании кода, а не в ретроспективе.

  2. Hexagonal Architecture. Здесь вам и порты с адаптерами, и слои и все что душе угодно для низкого coupling и высокого cohesion.

  3. CQRS. Много приемуществ, не самая большая цена.

Из книг порекомендую:

  1. Эрик Эванс: «Предметно-ориентированное проектирование»

  2. Вон Вернон: «Реализация методов предметно-ориентированного проектирования »

Ну а еще, залетайте в чатик(не мой, не реклама): https://t.me/oop_ru, там часто ведутся обсуждения и дискуссии, почувствуете в какие стороны рыть и позадаете свои вопросы.

PS есть еще вот такой дорогущий и хороший курс от Уди: https://learn.particular.net/courses/adsd-online#cta-section
Не знаю насколько правильно будет оставлять ссылку на скачивание в открытом доступе, вообщем напишите в телегу.

  Развернуть 1 комментарий

Найс именно тот ответ который я ждал, создовая вопрос. Спасибо, за инфу. По поводу Hexagonal Architecture - мы уже ресерчили ряд "слоистых" архитектур (Hexagonal Architecture, Onion Architecture, Screaming Architecture, Clean Architecture ) и т.к. они все похожи - выбрали самую популярную - это ЧА (за пруфами в гугл трендс). Больше статей и примеров в интернете обеспечивают более легкое вкуривание.

  Развернуть 1 комментарий

Дам очень ценный совет.

Суть понимания любой области, в первую очередь - в понимании проблем этой области. Причем именно в понимании а не просто знании. Осознавая эти проблемы Вы ищете решения. В анализе, общении с коллегами, в чтении книг, статей и т.д.

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

Я частенько таких разрабов встречаю, которые зазубрили Чистые коды/архитектуры и т.д но при этой понимания почему так у них вообще нет, более того они не понимают где эту нужно а где вредно, где автор советует глупости по современным меркам.

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

  Развернуть 1 комментарий

Есть интересный блог в котором автор переодически рассматривает вопросы соверменной архитектуры приложений. Особенно приятно что он рассматривает именно с клиентской стороны
https://khalilstemmler.com/

  Развернуть 1 комментарий

Прикольно. Вот как раз в статье про архитектуру клиента и топит за ЧА! Пока не читал но количество иллюстрций просто огненное. Пасибо )

  Развернуть 1 комментарий

Надо прочитать все книги на эту тему.

И опыт. Скорее всего опыт рефакторинга тебе нужен в том числе, только я не уверен что синтетические приложения считаются, потому что важно уметь делать рефакторинги на живых приложениях.

В процессе рефакторинга просто подмечаешь наиболее чётко что сделанно не так и что стоит переделать, а что оставить, что удобно а что нет.

Читать больше кода. Ну прям вот бери и читай фреймворки, опенсорс, всё что считаешь хорошими примерами кода и архитектуры, смотри чо как там, подмечай хорошие решения.

  Развернуть 1 комментарий

Меня интересует не архитектура фреймворков, а максимально универсальня архитектура прикладных приложений для бизнеса у которых есть бизнес логика. В опенсурсе немного иная архитектура - там не про то как классы скомпоновать так чтобы внешний сервис или веб фреймворк сменить не затрагивая бизнес логику, а про удобство пользователя API, здравый смысл и знание паттернов (иногда).

  Развернуть 1 комментарий

Не думаю, что существует универсальная архитектура для всех пригладных приложений для бизнеса. Бизнес бывает разный с разными требованиями. Разве что для каких-то типичных бизнес-задач, но под это уже написано-понаписано фреймворков.

Если речь не идет о system design, то подозреваю, что нужно копать в сторону DDD, паттернов проектирования, N-tier architecture, onion architecture и вот это всё.

  Развернуть 1 комментарий

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

Только в этом посте уже упоменули 4 таких архитектуры (весьма похожих конечно). Рекомендую ознакомится с самой популярной. Типичная задача бизнеса - автоматизация бизнес логики, готовых вещей под такое быть не может т.к. она действительно вся разная. А вот гайдлайнов как проект структурировать и бойлерплейтов - пожалуйста.

  Развернуть 1 комментарий

Не претендую на ответ, но слышал хорошие отзывы про книжку Мартина Фаулера, Архитектура корпоративных программных приложений

  Развернуть 1 комментарий

Да, читал было дело по диагонали. Подойдет для кровавого энтерпрайза и бека, но для фронта database layer из его подхода не будет существовать в тривиальных случаях. В этом смысле ЧА мне кажется более универсальной.

  Развернуть 1 комментарий
Dmitry Kabanov Research Software Engineer 21 апреля 2023

Очень хорошая книга Применение UML и шаблонов проектирования Крэга Лармана.

Он является автором принципов GRASP (выше уже написали, что это альтернатива SOLID). Книга толстая, но в ней рассматривается всё время одно и то же приложение от начала до конца.

Там нет никакой универсальной архитектуры, но очень хорошо рассматриваются принципы построения объектно-ориентированных систем.

  Развернуть 1 комментарий

😎

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

Что вообще здесь происходит?


Войти  или  Вступить в Клуб