Укрощение строптивых. Оптимизация и реструктура проекта для увеличения доступности CodeEvening

Содержание

Слайд 2

Дисклеймер

Возможно, здесь будет рассказано о тех вещах, которые Вам знакомы или очевидны,

Дисклеймер Возможно, здесь будет рассказано о тех вещах, которые Вам знакомы или
но мне как-то пофиг )))
Повествование из личного опыта...

Слайд 3

На дворе недалекое “недавно”, и мы развернули проектик фирмы на любименьком вордпрессике...

На дворе недалекое “недавно”, и мы развернули проектик фирмы на любименьком вордпрессике...

Слайд 4

502 Gateway

502 Gateway

Слайд 5

Проблемы

Слабое железо

Неоптимизированный код

Неверно спланированная архитектура

Слабое представление предметной области

Проблемы Слабое железо Неоптимизированный код Неверно спланированная архитектура Слабое представление предметной области

Слайд 6

Слабое железо

Вертикальное масштабирование
Горизонтальное масштабирование

Слабое железо Вертикальное масштабирование Горизонтальное масштабирование

Слайд 7

Горизонтальное масштабирование

Разделение базы данных по серверам
Шардирование / Репликация
База становится зависимой от кода

Горизонтальное масштабирование Разделение базы данных по серверам Шардирование / Репликация База становится зависимой от кода

Слайд 8

Неоптимизированный код

При разработке на мощном железе не обращают внимание на оптимальное написание

Неоптимизированный код При разработке на мощном железе не обращают внимание на оптимальное
кода
Малое или полное отсутствие знания RDB или SQL
Неиспользование инструментов профилирования или debug tools

Слайд 9

ЗНАЙ СВОЙ ИНСТРУМЕНТ

Поднятия версии программного обеспечения
Понимание работы RDB и SQL выше минимума
Понимание

ЗНАЙ СВОЙ ИНСТРУМЕНТ Поднятия версии программного обеспечения Понимание работы RDB и SQL
noSQL баз данных
Тесты...Тесты...Тесты...

Слайд 10

Профилирование и debug

Время выполнения участков кода
Время выполнения SQL запросов
Debug tools (XDEBUG, Yii

Профилирование и debug Время выполнения участков кода Время выполнения SQL запросов Debug
debug tool)
Profiler (Z-Ray, Blackfire, Tideways)
Logger (Sentry)

Слайд 11

Кэширование

Кэширование всех данных на отдачу
Кэширование куска данных
Кэширование запросов
Горячий кэш
Redis / Memcahe /

Кэширование Кэширование всех данных на отдачу Кэширование куска данных Кэширование запросов Горячий
MemoryTable

Слайд 12

Порой наступает то время, когда после всех усилий и манипуляций Вы понимаете,

Порой наступает то время, когда после всех усилий и манипуляций Вы понимаете,
что стандартное использование языка нужно менять… кардинально

Слайд 14

Микросервисы и клиентская логика

Логика UI реализуется на клиенте (не путать с бизнес-логикой)

Микросервисы и клиентская логика Логика UI реализуется на клиенте (не путать с
- React / Angular / Vue / Ember
Сервер отдает только данные - REST / GraphQL / Protobuf
TCP / UDP
Кэширование не критичных данных на клиенте - LocalStorage / Web SQL / IndexDB

Слайд 15

Микросервисная архитектура

Одна задача - один сервис
Несколько сервисов на 1 машине (Docker, NGINX

Микросервисная архитектура Одна задача - один сервис Несколько сервисов на 1 машине
Unit)
Воркеры (RabbitMQ, Active MQ)

Слайд 16

Предметная область

Паттерны проектирования
Функциональное программирование vs ООП
Техники подхода к разработке (TDD/BDD)

Предметная область Паттерны проектирования Функциональное программирование vs ООП Техники подхода к разработке (TDD/BDD)

Слайд 17

Постулаты и принципы

DRY (DIE) - Don’t Repeat Youself (Duplication Is Evil)
KISS -

Постулаты и принципы DRY (DIE) - Don’t Repeat Youself (Duplication Is Evil)
Keep It Simple, Stupid
YAGNI - You Ain’t Gonna Need It
SOLID

Слайд 19

Полезные ссылки

https://web-creator.ru/articles/solid
https://vuejs.org/
http://forcoder.ru/sql/
https://events.yandex.ru/lib/talks/535/
https://ruhighload.com/
https://www.youtube.com/channel/UCwHL6WHUarjGfUM_586me8w

Полезные ссылки https://web-creator.ru/articles/solid https://vuejs.org/ http://forcoder.ru/sql/ https://events.yandex.ru/lib/talks/535/ https://ruhighload.com/ https://www.youtube.com/channel/UCwHL6WHUarjGfUM_586me8w