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

Содержание

Слайд 2

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

Дисклеймер

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

очевидны, но мне как-то пофиг )))
Повествование из личного опыта...
Слайд 3

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

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

вордпрессике...
Слайд 4

502 Gateway

502 Gateway

Слайд 5

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

Проблемы

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

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

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

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

Слайд 6

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

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

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

Слайд 7

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

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

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

кода
Слайд 8

Неоптимизированный код При разработке на мощном железе не обращают внимание на

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

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

написание кода
Малое или полное отсутствие знания RDB или SQL
Неиспользование инструментов профилирования или debug tools
Слайд 9

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

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

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

минимума
Понимание noSQL баз данных
Тесты...Тесты...Тесты...
Слайд 10

Профилирование и debug Время выполнения участков кода Время выполнения SQL запросов

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

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

Yii debug tool)
Profiler (Z-Ray, Blackfire, Tideways)
Logger (Sentry)
Слайд 11

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

Кэширование

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

/ MemoryTable
Слайд 12

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

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

понимаете, что стандартное использование языка нужно менять… кардинально
Слайд 13

Слайд 14

Микросервисы и клиентская логика Логика UI реализуется на клиенте (не путать

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

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

бизнес-логикой) - React / Angular / Vue / Ember
Сервер отдает только данные - REST / GraphQL / Protobuf
TCP / UDP
Кэширование не критичных данных на клиенте - LocalStorage / Web SQL / IndexDB
Слайд 15

Микросервисная архитектура Одна задача - один сервис Несколько сервисов на 1

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

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

NGINX Unit)
Воркеры (RabbitMQ, Active MQ)
Слайд 16

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

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

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

Слайд 17

Постулаты и принципы DRY (DIE) - Don’t Repeat Youself (Duplication Is

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

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

- Keep It Simple, Stupid
YAGNI - You Ain’t Gonna Need It
SOLID
Слайд 18

PROFIT!

PROFIT!

Слайд 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