Если вы хотите стать профессиональным веб-разработчиком или просто хотите понять концепции, которые имеют отношение к сети, вы находитесь в правильном месте! Многие из концепций, относящихся к серверной веб-разработке, могут быть довольно сложными. С обилием современных фреймворков и инструментов всегда есть что-то новое, чему можно научиться. Тем не менее, здорово иметь четкое понимание основ, прежде чем сосредоточиться на деталях современных фреймворков и сложных инструментах.
Далее предлагаю рассмотреть основы серверной (backend) разработки, связанной с созданием простого веб-приложения. Это даст вам представление о фундаментальных концепциях серверной веб-разработки, так что вы будете настроены на успех, если решите продолжить обучение по этим темам.
Для того чтобы стать backend-разработчиком необходимо освоить:
- основные компоненты веб-приложения;
- обязанности backend разработчика;
- что такое HTTP и какая его роль в работе веб-приложений;
- RESTful API.
Ознакомление с данными вещами позволит вам получить основу для дальнейшего изучения серверной разработки. Часть из них я рассмотрю далее в этой статье.
Если вас интересует продвижение сайтов, то этот вопрос никак не раскрыт в данной статье, но неоднократно рассматривался в других статьях этого блога. Отмечу, что при разработке веб-приложений необходимо учитывать тот факт, что продвижение будет необходимо после запуска проекта. Тем самым, необходимый функционал необходимо будет реализовать как раз на этапе разработки.
Введение в Back-End разработку (основные понятия)
Давайте посмотрим, что же такое бэкэнд и какую роль он играет в веб-приложении.
Веб-приложение – это клиент-серверное приложение, в котором клиент (веб-интерфейс) запускается в веб-браузере, а серверная часть запускается на веб-сервере.
Вероятно, вы уже слышали что такое frontend разработка. Frontend представляет собой интерфейс веб-приложения который выводится в веб-браузере и облегчает взаимодействие пользователя с веб-приложением.
Back-end веб-разработка включает в себя создание «мозга» приложения, который берет на себя весь функционал веб-приложения. Эта функциональность зависит от необходимой логики и данных, которые веб-приложение должно обеспечивать. Frontend часто называют клиентской стороной (client-side), а backend – серверной стороной (server-side) веб-приложения.
Когда пользовательскому интерфейсу приложения требуется доступ к данным, он отправляет запрос на сервер. При этом, серверная часть веб-приложения обычно должна иметь возможность:
- получать запросы от клиентов и интерпретировать их назначение;
- выполнять обработку операций согласно логике запроса;
- взаимодействовать с базами данных для хранения информации и обеспечения доступа к ней;
- отправлять ответ клиенту на его запрос с указанием статуса и результата запроса.
Backend разработчики ответственны за написание кода для серверной стороны веб-приложения, обеспечивающего перечисленный выше функционал.
Исследуем Backend
Теперь, когда мы представили роль бэкэнда веб-приложения, давайте более подробно рассмотрим компоненты серверной части. Серверная часть веб-приложения состоит из нескольких компонентов, обычно называемых уровнями или слоями приложения.
Наиболее распространенные слои веб-приложения:
- Уровень представления. Этот уровень относится к пользовательскому интерфейсу приложения. Пользовательский интерфейс веб-приложения включает код HTML, CSS и JavaScript, который запускается в браузере для отображения веб-страниц, составляющих интерфейс приложения, и управления их динамическим поведением при взаимодействии пользователя со страницей.
- Прикладной уровень. Этот слой обрабатывает логику, которая обеспечивает функционирование веб-приложения. Тут выполняются любые операции и алгоритмы, обеспечивающие работу бизнес-функций приложения. Например, если пользователь пытается запланировать возврат товара в приложении для покупок, бизнес-логика, скорее всего, проверит, что крайний срок возврата не прошел, запросит у пользователя желаемый метод возврата и обновит статус заказ. Этот тип бизнес-логики может обрабатываться на стороне клиента и на стороне сервера, но обычно обрабатывается на стороне сервера, поскольку он тесно связан с динамическими данными приложения.
- Уровень данных. Этот уровень хранит, организует и управляет доступом к данным приложения с использованием базы данных. Реализуется в коде на стороне сервера.
Архитектура приложения и подходы в её реализации
Существует несколько способов создания веб-приложения. Например, одно решение, которое должны принять разработчики и архитекторы программного обеспечения – это рендеринг на стороне клиента или рендеринг на стороне сервера.
При рендеринге на стороне клиента код JavaScript, выполняемый в веб-браузере пользователя, отвечает за запрос данных с сервера и манипулирование веб-страницей по мере необходимости. Например, если пользователь вводит в форму недопустимое значение, код на стороне клиента обновит страницу сообщением об ошибке, не обращаясь к серверу и не перезагружая страницу.
При рендеринге на стороне сервера клиент запрашивает новую веб-страницу с сервера для каждого обновления и отображает страницу такой, какой она была получена. Например, если пользователь вводит в форму недопустимое значение, код на стороне клиента запросит новую страницу с сообщением об ошибке.
Часто используются комбинация этих подходов, когда для начальной страницы используется серверный рендеринг, а затем она обновляется по мере необходимости при помощи рендеринга на стороне клиента.
В последнее время все чаще применяется разработка приложений с рендерингом на стороне клиента, а обмен данными с сервером происходит при помощи API-запросов. Таким образом важно разобраться с тем, что такое RESTful web API, как работает и взаимодействует с БД.
Компоненты и их взаимодействие
Теперь, когда мы изучили логические уровни приложения, давайте посмотрим, где они находятся в реальности.

Серверная часть веб-приложения называется серверной, поскольку этот код выполняется на веб-сервере.
Веб-сервер – это физический компьютер, на котором размещается ваше приложение и который доступен для пользователей по всему миру через Интернет. Как разработчик, вы можете выбрать операционную систему (Windows, Linux и т. д.), программное обеспечение веб-сервера (Apache, Nginx, IIS) и аппаратные возможности, соответствующие потребностям.
На базовом уровне веб-сервер обрабатывает запросы на получение веб-контента и передает его клиентам. Происходит это путем идентификации ресурсов, которые запрашивает клиент на основе URL, затем HTML-файл страницы и таблица стилей CSS передается клиенту и отображается браузером.
Для динамических сайтов и веб-приложений работает сервер приложений запущенный на веб-сервере, который обрабатывает бизнес-логику приложения. Эта бизнес-логика и есть тот серверный код, написанием которого занимается backend-разработчик. Код должен обеспечивать обработку запросов от клиента, обмен данными с базой данных, выполнение любых необходимых изменений или модификаций, а затем возврат результата клиенту. Код может быть написан на таких серверных языках как Python, JavaScript/Node.js, Ruby, PHP и многих других.
База данных – это место, где хранятся данные для приложения. База данных хранит, организует и предоставляет доступ к данным приложения. Существует несколько типов баз данных и систем управления базами данных, которые можно использовать для серверной веб-разработки.
Краткое резюме
Таким образом, веб-сервер предоставляет доступ к ресурсам в Интернете, обрабатывая веб-запросы от клиентов. Он может содержать сервер приложений, который обрабатывает динамическую бизнес-логику приложения, а также подключаться к базе данных, которая соответствует уровню данных приложения. Эти два компонента, которые необходимо программировать в качестве backend-разработчика.
Существует множество языков и технологий, которые вы можете использовать для каждого слоя (представление, приложение, данные) и для веб-сервера. Комбинация технологий, используемых для приложения, составляет «стек» разработки программного обеспечения. В следующих статьях я планирую рассмотреть эти компоненты более подробно.
Поделиться ссылкой:
- Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
- Нажмите, чтобы открыть на Facebook (Открывается в новом окне)
Источник: igorosa.com
Разработка бэкенда мобильного приложения на стороне студии: почему это выгодно

Клиентская часть — это мобильное приложение, которое показывает пользовательский интерфейс и функции для достижения пользовательских целей. Если взять за пример приложение , то через него пользователь взаимодействует с товарами, поиском и фильтрами, отправляет товары в корзину и оформляет покупку.
Хороший бэкенд обладает:
- гибкостью, позволяющей добавлять новые возможности без проблем и костылей и тем самым развивать приложение;
- возможностью масштабирования;
- активной техподдержкой, способной дать быстрый ответ на вопрос, быстро исправить ошибку, сделать нужное изменение в интересах продукта.
Пользователь не видит бэкенд, но его роль важна. Это самостоятельная часть вашего цифрового сервиса, в которую нужно вкладываться. И если не понимать бэкенд как отдельный продукт, то он обесценится до одной лишь документации к API.

Что такое API
API (Application Programming Interface) — это часть бэкенда, играющая роль языка общения между сервером и клиентом (в нашем случае — с мобильным приложением). API служит для представления серверных данных в формате, удобном для этого общения.
Когда мы говорим «API мобильного приложения», мы имеем в виду не только формат представления данных, но приложение, которое берёт данные, обрабатывает их и отдаёт клиенту в этом формате. Когда мы говорим «пишем API», это значит, что мы программируем , пишем документ и придумываем сами форматы.
Для хорошего API характерны:
- следование общим принципам разработки,
- актуальная и полная документация,
- стабильность работы,
- быстрое время ответа на запрос от клиента,
- версионирование.
Бывает так, что написана хорошо, а API — плохо. Для проектирования и программирования API важно владеть специфическими знаниями: знать стандартные подходы и лучшие практики, понимать, как работают мобильные приложения, знать потребности их пользователей.

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

Таймеры в приложениях «Киноголик» и «Мой Доктор»
Ограничить время отправки важно по двум причинам:
- За СМС платит владелец приложения, и многократное нажатие кнопки «отправить» разоряет его.
- СМС доставляются с задержкой. Если запросить много кодов подряд, то они придут разом и запутают пользователя.
Таймер — это не только обратный отсчёт времени, который пользователь видит в интерфейсе, но и на бэкенде. Почему важно синхронизировать и то, и другое?
- Если злоумышленник взломает приложение, или кнопка отправки зависнет, а таймер сбросится, то бэкенд всё равно не позволит отправлять СМС до истечения времени.
- Если пользователь закроет приложение и снова откроет, то бэкенд отправит приложению оставшееся количество секунд до повторной отправки СМС и пользователю не придётся ждать всё время сначала.
- Во время тестирования время на таймере можно установить поменьше, а если у провайдера проблемы, то побольше.
Несмотря на то, что задача небольшая, нужно согласовать схему взаимодействия бэкенда и мобильного приложения и договориться, в каком формате будет отправляться количество оставшегося времени и попыток.
Заказывая разработку API у нас, мы гарантируем, что документацию к нему подготовит либо аналитик, либо . Первый сделает это перед началом работы, второй — в процессе, но важно другое: результат их работы поймёт принимающая сторона, то есть наши мобильные разработчики. На одном из проектов, где API занималась третья сторона, вместо документации были формальные извещения о созданных методах и изредка — уточнения, как к этим методам обращаться. Когда уточнять и переспрашивать надоело, документацию написали мы.
Другие риски связаны с тем, что клиент не всегда может нанять такого , который однажды не допустит грубой ошибки. Однажды наша сторона неделю разгребала последствия правок в API, которые выражались в том, что в половине методов, с которыми работает мобильное приложение, приходило не то, что нужно, либо совсем ничего. Если вы доверите ответственность за подбор людей в команду нам, то наш менеджмент, и тестирование перед релизом снизят вероятность возникновения такой ошибки до критически малых размеров.
Все эти технические неурядицы звучат для наших клиентов одинаково: сроки горят, а деньги уходят не туда. Решить значительную их часть можно, когда обе команды рядом.
Быстрая и доверительная коммуникация
Есть две команды, совершенно не знающие характеров друг друга, не имеющие общих интересов и не общающиеся на обедах и перекурах. Сколько времени им потребуется, чтобы сработаться? Похожий пример: будь у вас финансовые проблемы, кто быстрее вошёл бы в ваше положение — первый встречный или родственники и ближайшие друзья?
Хорошая коммуникация между отделами обусловлена возможностью в любой момент пройти несколько метров из одного кабинета в другой и обсудить проблему лично. Наша команда была лишена этой возможности на одном из проектов, где за бэкенд отвечал разработчик из Европы. Пятичасовая разница во времени ставила всех в затруднительное положение: выходил на связь только ранним утром, и если наша команда не могла провести митинг, то нам приходилось либо переносить его на несколько дней вперёд, либо отменять свои дела. Итого: вместо прогулки в кабинет по соседству — переписки в чатах, хаотичные звонки, более обстоятельная подготовка ко встречам и прочие причины, растянувшие коммуникацию и отложившие выход первой версии приложения на несколько месяцев.
Пока наша команда устраняет последствия подобных событий, клиенты подсчитывают убытки — и финансовые, и репутационные. Вот ещё несколько запомнившихся кейсов:
- В одном из приложений есть кнопка для отмены подписки. Сторонние решили изменить интерфейс метода отписки от рассылок, но не поставили нас в известность. Работа клиента и сервера рассинхронизировалась, поэтому письма продолжали приходить пользователям. Кнопка не работала 3 месяца, что привело к гневным отзывам от пользователей и удару по имиджу компании.
- Пользователи не могли сделать через приложение заказ на адрес, включающий знак «/». Чтобы сервер перестал считать их невалидными, нужно было вставить этот знак в регулярное выражение в коде, которое проверяет адреса. Между обнаружением проблемы и её решением прошла неделя — достаточно, чтобы потерять количество пользователей.
- Перед нами был выбор: своими силами внести правки в приложении или дождаться буквально одной манипуляции от серверных разработчиков. Когда ждать было больше нельзя, мы приняли меры, но финансовые издержки неприятно впечатляют: оплата работы iOS и , полный регресс, тестирование, релиз — за всё это платит клиент.
Когда команды работают по одну сторону, они находят решение без стресса, споров и необходимости зарабатывать авторитет в глазах друг друга. В то же время в руках менеджеров находятся рычаги давления, которых они лишены, когда команда удалённая. Всё это ускорит темпы работы над вашим проектом.
В ситуациях, когда затягивает с результатом, но показать работу продукта нужно, мы можем создать . Это имитация запросов от приложения и ответов от сервера через , зашитые в мобильном приложении. Структура таких объектов опирается на то, что написано в составленной аналитиком документации. Метод выручает при разработке MVP и при параллельной разработке приложения и бэкенда, но важно знать, что время уходит на написание кода, который станет бесполезным, когда сервер заработает. Поэтому, чтобы не растягивать бюджет, мы предлагаем клиенту заморозить разработку завязанной на бэкенде функциональности и взять другую задачу.
Актуальная документация
Интеграция мобильного приложения с готовым сторонним сервисом — типичная для разработки история: писать платёжные сервисы и чаты под одно приложение с нуля невыгодно. Как и всякие другие, эти сервисы и их API развиваются и обновляются, что должно отражаться в документации, которая доступна на официальном сайте сервиса.
Но что, если разработчики сервиса не сделают этого своевременно? Тогда наша команда будет настраивать интеграцию по неактуальной документации, и приложение не будет понимать, на каком языке сервис общается с ним. Служба поддержки доступна только тем, кто оплатил аккаунт, но представим, что он не оплачен. В результате разработчик от беспомощности строит предположения, гуглит форумы и тратит на задачу больше времени, чем мог бы. А вместе со временем он тратит ваши деньги.
Те же трудности могут испытать мобильные разработчики студии, когда будут интегрироваться с бэкендом, сделанным на стороне. Устаревшая документация — результат человеческого фактора: не все изменения вносятся своевременно. Любой связанный с этим конфуз команды, находящиеся по одну сторону, решают диалогом. Но если вы захотите передать проект, разработанный у нас, на поддержку другой студии, то можете быть уверены: вы получите документацию, в которой разберётся иновичок.

Что помогает нам в работе
Гладкое взаимодействие между отделами мобильной и было бы невозможно без важных инструментов и методологий, ставших стандартными для процессов. Когда есть стандартизация, разработчик выполняет задачу быстрее, а время выполнения задачи более предсказуемо и обходится дешевле.
- При написании API мы придерживаемся общепринятой архитектуры REST. Это позволяет разработчикам интуитивно понимать работу API.
- Для повышения качества кода у нас отлажен процесс . Его смысл в том, чтобы любые изменения, вносимые программистом, попадали в основное хранилище кода и в релизную версию приложения только после того, как их проверят остальные участники команды. Качественный код лучше воспринимается даже теми разработчиками, которые прежде не работали на проекте, проще улучшается и изменяется, лучше поддерживается и тестируется. Подробнее о том, что такое , читайте в статье нашего аналитика.
- Для описания документации мы используем сервисы, например, Apiary и Swagger. С ними документация читается просто, а пишется быстро.
- Для автоматизированного запуска тестов и сборки приложения используем принцип Continuous Integration. Он освобождает нас от ручной работы и уменьшает количество ошибок, которые мог бы допустить разработчик.
- Для быстрых и регулярных релизов у нас отлажен процесс автоматизированного деплоя, то есть запуска кода для выполнения новой версии программы на сервере. Чтобы не делать это вручную, мы используем специальные скрипты. С автоматизацией снижается риск ошибки и тратится меньше времени. Это значит, что каждый деплой обходится для вас дешевле.
Закажите в студии Лайв Тайпинг
Компания Live Typing занимается проектированием, дизайном и разработкой мобильных приложений и . Мы создаём и поддерживаем цифровые продукты для стартапов, автоматизируем и выводим в мобильную среду существующий бизнес, выручаем из беды проекты, которым не повезло с предыдущими подрядчиками. Основное направление компании — создавать и заботиться о eCommerce и , но мы также имеем опыт работы в индустриях Publishing, Fashion, Travel, Health, Civic, Events, Technology, Art, IoT, Education, , Fintech.
Для серверной разработки мы используем язык PHP и фреймворки Laravel и Yii.
В 2019 году мы занимались разработкой и развитием API для приложений магазинов парфюмерии и косметики БОТЭ и Sephora, приложения для программы лояльности Лояка, приложения для контроля здоровья и получения медицинских рекомендаций Diagnost, приложения для покупки абонементов в кино Киноголик, приложение для чтения статей из «Блога Касперского» Kaspersky Security Pulse и мобильного сервиса для медицинских консультаций Мой Доктор.
Источник: livetyping.com
