0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Темы, рассмотренные в предыдущих уроках, уже тянут на многомесячное интенсивное обучение (как минимум), но даже они покрывают веб-разработку только частично. В этом уроке мы кратко пройдемся по некоторым другим важным аспектам, связанным как с веб-разработкой, так и программированием в целом.</p>
1
<p>Темы, рассмотренные в предыдущих уроках, уже тянут на многомесячное интенсивное обучение (как минимум), но даже они покрывают веб-разработку только частично. В этом уроке мы кратко пройдемся по некоторым другим важным аспектам, связанным как с веб-разработкой, так и программированием в целом.</p>
2
<h2>Аутентификация и авторизация</h2>
2
<h2>Аутентификация и авторизация</h2>
3
<p>Два термина, которые связаны с идентификацией и выделением прав на выполнение определенных операций. Их реализация есть в любом нетривиальном проекте. И если аутентификация почти целиком построена на<strong>сессиях</strong>http, то авторизация требует понимания принципов построения списков контроля доступа (<a>ACL</a>). В наиболее продвинутых фреймворках подобная функциональность либо встроена в сам фреймворк, либо существует в виде дополнений, которые если и не покрывают все потребности, то, по крайней мере, дают основу для построения своей системы.</p>
3
<p>Два термина, которые связаны с идентификацией и выделением прав на выполнение определенных операций. Их реализация есть в любом нетривиальном проекте. И если аутентификация почти целиком построена на<strong>сессиях</strong>http, то авторизация требует понимания принципов построения списков контроля доступа (<a>ACL</a>). В наиболее продвинутых фреймворках подобная функциональность либо встроена в сам фреймворк, либо существует в виде дополнений, которые если и не покрывают все потребности, то, по крайней мере, дают основу для построения своей системы.</p>
4
<h2>OAuth</h2>
4
<h2>OAuth</h2>
5
<p>Аутентификация с помощью социальных сетей стала почти также распространена, как и аутентификация по паролю. Чисто технически ее реализация значительно сложнее, она основана на протоколе<a>oauth2</a>, который включает в себя общение по<a>API</a>. Опять же, с нуля ничего писать не придется: для работы с OAuth написана не одна библиотека, но это не отменяет необходимости понимать, что творится под капотом.</p>
5
<p>Аутентификация с помощью социальных сетей стала почти также распространена, как и аутентификация по паролю. Чисто технически ее реализация значительно сложнее, она основана на протоколе<a>oauth2</a>, который включает в себя общение по<a>API</a>. Опять же, с нуля ничего писать не придется: для работы с OAuth написана не одна библиотека, но это не отменяет необходимости понимать, что творится под капотом.</p>
6
<h2>Валидация</h2>
6
<h2>Валидация</h2>
7
<p>Валидация - проверка данных на соответствие установленным требованиям (ограничениям). Не самая сложная, но крайне важная тема. В веб-фреймворках часто связана с ORM и слоем, работающим с формами. Относится к базовой теме. Как только на сайте появилась хоть одна форма, сразу в дело вступает валидация.</p>
7
<p>Валидация - проверка данных на соответствие установленным требованиям (ограничениям). Не самая сложная, но крайне важная тема. В веб-фреймворках часто связана с ORM и слоем, работающим с формами. Относится к базовой теме. Как только на сайте появилась хоть одна форма, сразу в дело вступает валидация.</p>
8
<h2>Jobs</h2>
8
<h2>Jobs</h2>
9
<p>Далеко не все операции можно выполнить или следует выполнять во время обращения пользователя к сайту. Некоторые задачи могут потребовать значительного времени: минуты, часы или даже дни. Пользователи столько ждать не будут, они предпочитают оповещение по выполнению. С другой стороны, просто нельзя держать такое долгое соединение с браузером, так как в определенный момент можно исчерпать лимит на входящие соединения (а здесь нужно понимать модели работы веб-серверов и особенности вашего языка и используемую модель работы с<a>IO</a>внутри него).</p>
9
<p>Далеко не все операции можно выполнить или следует выполнять во время обращения пользователя к сайту. Некоторые задачи могут потребовать значительного времени: минуты, часы или даже дни. Пользователи столько ждать не будут, они предпочитают оповещение по выполнению. С другой стороны, просто нельзя держать такое долгое соединение с браузером, так как в определенный момент можно исчерпать лимит на входящие соединения (а здесь нужно понимать модели работы веб-серверов и особенности вашего языка и используемую модель работы с<a>IO</a>внутри него).</p>
10
<p>И тут открывается ящик Пандоры. Асинхронный код, системы очередей, подписка на события, фреймворки для их обработки и многое другое. Возможно, вам кажется, что это все нужно только суперпроектам, но нет. Даже примитивная загрузка картинок с последующей обработкой уже требует использования подобных техник.</p>
10
<p>И тут открывается ящик Пандоры. Асинхронный код, системы очередей, подписка на события, фреймворки для их обработки и многое другое. Возможно, вам кажется, что это все нужно только суперпроектам, но нет. Даже примитивная загрузка картинок с последующей обработкой уже требует использования подобных техник.</p>
11
<h2>Нотификации</h2>
11
<h2>Нотификации</h2>
12
<p>Нотификации в виде писем или смс - неотъемлемая часть любого проекта. Тема не такая простая, как может показаться на первый взгляд.</p>
12
<p>Нотификации в виде писем или смс - неотъемлемая часть любого проекта. Тема не такая простая, как может показаться на первый взгляд.</p>
13
<h2>Фронтенд</h2>
13
<h2>Фронтенд</h2>
14
<p>Практически ни один современный сайт не обходится без динамического фронтенда, а значит в разработку включается немалая часть экосистемы js. Начиная с того, что надо знать сам язык (а он гораздо богаче php в плане выразительных возможностей и фич), заканчивая сборщиками (webpack) и фреймворками (react).</p>
14
<p>Практически ни один современный сайт не обходится без динамического фронтенда, а значит в разработку включается немалая часть экосистемы js. Начиная с того, что надо знать сам язык (а он гораздо богаче php в плане выразительных возможностей и фич), заканчивая сборщиками (webpack) и фреймворками (react).</p>
15
<h2>Инфраструктура</h2>
15
<h2>Инфраструктура</h2>
16
<p>Пилить фичи - только полдела. Чтобы начать разрабатывать нужно для начала настроить окружение разработчика, используя<a>Docker Compose</a>. Затем, чтобы было куда выкладываться, нужно настроить продакшен-окружение (то, где будет работать сайт) и в конце концов задеплоить (развернуть) туда сайт.</p>
16
<p>Пилить фичи - только полдела. Чтобы начать разрабатывать нужно для начала настроить окружение разработчика, используя<a>Docker Compose</a>. Затем, чтобы было куда выкладываться, нужно настроить продакшен-окружение (то, где будет работать сайт) и в конце концов задеплоить (развернуть) туда сайт.</p>
17
<p>Современная инфраструктура - тоже код, и ее нужно программировать. Вот список самых важных программ, созданных для этого:<a>Ansible</a>,<a>Terraform</a>,<a>Docker</a>.</p>
17
<p>Современная инфраструктура - тоже код, и ее нужно программировать. Вот список самых важных программ, созданных для этого:<a>Ansible</a>,<a>Terraform</a>,<a>Docker</a>.</p>
18
<h2>Эксплуатация</h2>
18
<h2>Эксплуатация</h2>
19
<p>Сайт, находящийся в работе, тоже нуждается в заботе. Проблемы могут прийти из любого места. Закончилось место на диске, произошел сетевой сбой, произошла ошибка в логике работы, проявляющаяся только при определенных входных данных. Обо всем этом нужно узнавать как можно раньше. Эксплуатация ПО включает в себя такие понятия как мониторинг, алертинг, сбор логов и другие инструменты. Рекомендуем начать с<a>DataDog</a>и<a>Rollbar</a>.</p>
19
<p>Сайт, находящийся в работе, тоже нуждается в заботе. Проблемы могут прийти из любого места. Закончилось место на диске, произошел сетевой сбой, произошла ошибка в логике работы, проявляющаяся только при определенных входных данных. Обо всем этом нужно узнавать как можно раньше. Эксплуатация ПО включает в себя такие понятия как мониторинг, алертинг, сбор логов и другие инструменты. Рекомендуем начать с<a>DataDog</a>и<a>Rollbar</a>.</p>