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

Но почему мы не можем просто запустить все действия в одном месте и упростить весь процесс разработки? Короткий ответ: вы можете делать почти все на одной или другой стороне. Если вы хотите создать полностью серверное приложение, вы можете предварительно визуализировать все данные, необходимые для страниц, до того, как клиент их просмотрит. Создание подобного серверного приложения, как правило, уменьшает размер страниц, которые видит пользователь, что ускоряет их загрузку при более медленных соединениях или устройствах с менее мощным оборудованием. С другой стороны серверного приложения вы также можете создать клиентское приложение, а с помощью сервисов, доступных на таких платформах, как Firebase, FaunaDB и других поставщиков облачных услуг, вы можете выполнять те же действия, которые ранее требовались. серверное приложение.

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

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

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

Новая технология, называемая бессерверной, также добилась значительных успехов в области улучшения опыта разработчиков. Используя бессерверные функции, вы можете получить безопасную функциональность на стороне сервера с помощью простого кода JavaScript, который может работать с минимальными затратами на многих облачных провайдерах, таких как AWS, Azure и даже Netlify. Создав отдельный скрипт для замены некоторых функций на стороне сервера, вы также можете упростить архитектуру приложения и устранить большую часть раздувания, связанного со значительным серверным фреймворком, таким как Laravel или Django.