Погружение в веб-разработку для начинающих. Часть 2. Бэкенд

02.08.2019

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

Бэкенд разработка (server-side) включает в себя процессы, которые происходят на стороне сервера, и чаще всего не видны пользователю. Интерфейс веб-приложения (client-side) может отправлять запросы к бэкенду для получения HTML, сохранения пользовательских данных в базу, аутентификации, отправки писем или совершения оплаты. То, что эти процессы не видны пользователю напрямую, не отменяет их высокой значимости. Бэкенд — это сердце и мозг вашего приложения.

Языки программирования

В сравнении с фронтендом, выбор языков и средств на стороне бэкенда намного шире, и здесь вы полностью свободны в выборе решений для решения задачи.

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

Скриптовые языки программирования

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

Перечислим наиболее популярные, которые сейчас используются в бэкенде:

  • JavaScript может использоваться в бэкенде с помощью Node.js. Есть поддержка собственного API для решения задач бэкенда, например работа с файловой системой. Изучение Node.js — это великолепный выбор для использования одного языка программирования одновременно на фронтенде и бэкенде. Под Node.js известны такие фреймворки, как express, koa и LoopBack.

  • Python — это язык общего назначения. Понятный синтаксис и лёгкие конструкции делают его очень простым для изучения в качестве первого языка программирования. Python широко используется для разработки приложений, но также имеет большое значение в мире науки, в частности области искуственного интеллекта. Сейчас параллельно ипользуются две версии: Python 2 и Python 3. Одной из самых известных разработок на Python является Django — фреймворк для постройки веб-приложений. Также для веб-разработки меньших масштабов есть микрофреймворк Flask.

  • PHP — другой популярный язык программирования из мира веб-разработки. Язык имеет очень низкий порог вхождения, но также содержит достаточно возможностей для продвинутых разработчиков. Большинство популярных готовых CMS созданы именно на PHP. Фреймворки, которые следует отметить: Laravel, Symfony и CodeIgniter.

  • Ruby — это скриптовый язык программирования, созданный быть простым и приятным для чтения и программирования. Популярный фреймворк Ruby on Rails написан именно на нём.

Компилируемые языки программирования

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

Рассмотрим чаще встречающиеся в веб-разработке:

  • Java — это объектно-ориентированный язык высокого уровня созданный Sun Microsystems и поддерживаемый Oracle. Спроектирован для поддержки кроссплатформенности между разными платформами: исходный код компилируется в промежуточный байт-код который запускается в виртуальной машине JVM на любой из платформ. Это очень зрелый язык программирования с большим набором разных фреймворков для создания веб-приложений, наиболее популярный из которых Spring. В дополнение скажем, что Java используется для создания Android приложений. И хотя Java считается старомодным, он лежит в основе других современных JVM языков, таких как Kotlin или Scala, оставаясь при этом самым популярным языком программирования в мире.

  • C# другой ООП язык программирования высокого уровня разрабатываемый Microsoft. Изначально, созданный для использования в Windows, сейчас может применяться для создания кроссплатформенных приложений с помощью .NET Core. Наиболее популярным фреймворком для создания веб-приложений является ASP.Net Core.

  • Go относительно молодой, но активно растущий язык программирования разрабатываемый Google. В отличие от Java и C# более компактный, с набором базовых примитивов и умышленно лишённый некоторых комплексных конструкций представленных в других языках. Go быстр, с малым потреблением памяти и начальной поддержкой параллельного программирования.

  • Kotlin язык разрабатываемый JetBrains, близкий конкурент Java. Kotlin запускается на виртуальной машине Java — JVM, но может компилироваться в обычный JavaScript. Как и Java может используется для создания Android приложений.

  • Scala другой JVM язык программирования, альтернатива Java. Имеет очень компактный синтаксис, с преимущественно функциональным программированием.

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

Базы данных

99% веб-приложений обрабатывают пользовательские или другие данные. Данные содержатся в хранилищах данных, а работой с хранилищем занимается специальное ПО — СУБД. СУБД обеспечивает доступ к хранилищу, давая приложениям возможность сохранять, получать и обновлять данные. Существуют разные типы баз данных созданные для решения определённых задач. Здесь мы рассмотрим два наиболее популярных типа: реляционные и нереляционные.

Реляционные

Реляционные БД хранят данные в таблицах, где записи представлены строками, а атрибуты записи — колонками. Строки в разных таблицах могут быть связаны между собой с помощью колонок специального типа (foreign keys). Например, если вы создаёте интернет-магазин, вы можете создать таблицу для хранения заказов, с такими колонками, как номер заказа, имя клиента и адрес доставки, где каждая строка представляет собой отдельный заказ. В этом случае инфоромация о товарах в заказе будет храниться в отдельной таблице, где каждый товар будет ссылаться на заказ к которому он относится.

В большинстве реляционных БД используется специальный язык запросов SQL или его диалекты. Поэтому реляционный БД часто называют SQL БД.

Наиболее популярные реляционные БД:

  • Oracle Database — это БД разрабатываемая Oracle. Благодаря возможностям масштабирования и богатому набору возможностей, часто используется в больших приложениях Enterprise-класса. Для небольших приложений и проектов используется редко из-за высокой стоимости лицензии использования.

  • MySQL — это свободная open-source БД, созданная шведской компанией MySQL AB, позднее выкупленной Oracle. MySQL может использовать разные движки хранилища данных для отдельных таблиц. MySQL самое популярное решение для создания веб-приложений, особенно в составе так называемого стека LAMP. После перехода к Oracle сообществом паралельно развивается отдельный проект MariaDB.

  • SQL Server также известная как MSSQL, БД поддерживаемая Microsoft. Доступны редакции для лицензирования в проектах разных масштабов. SQL Server наиболее популярна в среде пользователей стека продуктов от Microsoft. Является основным конкурентом БД от Oracle.

  • PostgreSQL — это другая open-source БД разрабатываемая мировым сообществом команд, специализирующихся на создании ПО с открытым исходным кодом. Содержит большой набор возможностей и более подготовлена к высоким нагрузкам чем MySQL.

Нереляционные (NoSQL)

Нереляционные БД используют модель хранения данных отличную от привычных таблиц. Существуют разные модели, такие как: хранение пар ключ-значение, документы, связный граф или данные распределённый по времени. Нереляционные БД также известны как NoSQL БД, так как большинство из них используют свой язык запросов, отличный от SQL.

Некоторые БД используемые в веб-разработке:

  • MongoDB — это свободная документ-ориентированная БД, с открытым исходным кодом, которая хранит JSON объекты. Вы можете хранить и получать эти объекты, преобразовывая их в объекты вашего приложения. MongoDB — это хороший выбор для приложений в которых согласованность данных не является основной задачей.

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

Очереди сообщений

Иногда компоненты серверной системы должны запускаться в фоне по определённым событиям. Например, кнопка запроса бизнес-отчёта может запускать долгий процесс генерации, документ которого будет отправлен на электронную почту пользователю, без его ожидания в интерфейсе. Для реализации таких процессов требуется пересылать сообщения между разными компонентами системы. Системы которые обеспечивают такую пересылку системных сообщений называются брокерами сообщений.

Два наиболее популярных брокера это:

  • RabbitMQ — это традиционный брокер сообщений, который поддерживает разные способы пересылки и доставки сообщений. Гарантирует, что сообщение будет получено и обработано требуемым компонентом системы. RabbitMQ работает через стандартный протокол AMQP, который поддерживается множеством клиентских библиотек и другими брокерами сообщений.

  • Apache Kafka — система ориентированная на обработку большого потока сообщений, которая также может использоваться, как брокер сообщений.

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