Всем привет, никогда не обращался лично, теперь исправляюсь !



В первую очередь нам по-хорошему нужно познакомиться, меня зовут Кирилл и я Тех Лид одной крупной Питерской компании. Так же если без умных слов то full-stack разработчик. Я веду этот канал, канал на Ютубе, бота собеседника @interviewITBot, канал по Python, портал A-LIT с ответами на вопросы на собеседовании.



После того как мы познакомились я бы хотел разнообразить обычные посты, постами о жизни в реальных проектах.

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

Рассмотрим Backend:

Чистая архитектура - суть в разграничении, то есть делать так чтобы наши составные были как луковица, нижнии слои не знали о верхних

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

Монолит - все просто, одна большая куча. Тут вы можете как раз использовать чистую архетиктуру, SOLID, Kiss и Dry принципы и ваш проект будет вполне себе адекватный.

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

Event sourcing и CQRS - эта штука дружит с микросервисами и условно делает слепки исходя из событий которые приходят от пользователя

Рассмотрим FrontEnd:

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

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

Атомарная - тут принцип от меньше к большему, то есть атомы -> молекулы -> организмы -> шаблоны -> страница. Прикол в том что мы постепенно наращиваем функциональность, что позволяет отдельно взятые участки переиспользовать.

FSD (Feature-Sliced Design) - тут уже все доведено до ума в полном объеме. Разделение Слой/Слайсы/Сегменты. Тут мы по полной применяем слойную архитектуру, нельзя чтобы нижние слои зависели от верхних

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

Рассмотрим БД:

По базам данных тут на самом деле все просто, всего есть 6 нормальных типов БД. Нормальный тип это вид базы данных в котором соблюдены все правила описанные в типе, они направлены на достижение Базой хорошей расширяемости. Процесс нормолизации это привод базы данных хотябы к 3 нормальному виду.



Как видим что во всех частях приложений очень большой акцент делается на двух вещах.

1) Переиспользуемость

2) Расширяемость

Нет правильной и неправильной архитектуры, выбор ее уже зависит конкретно от проекта



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