Как прокачаться в application architecture?  Публичный пост

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

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

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

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

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

15 комментариев 👇

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

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

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 комментарий

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

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

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

  Развернуть 1 комментарий
Максим Коновалов, Программирую на PHP 26 августа 2020

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

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

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

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

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

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

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

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

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

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

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

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

  Развернуть 1 комментарий
Илья Куклев, Project/Engineering manager 26 августа 2020

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

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

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

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

😎

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

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


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