- Один стендап в Яндекс.Такси, или Чему нужно научить бэкенд-разработчика
- Фронтенд и бэкенд: о самом главном
- Back-end разработчик: особенности профессии и обязанности
- Что нужно знать backend разработчику в 2019
- Что нужно знать, чтобы стать бэкенд-разработчиком в 2018
Один стендап в Яндекс.Такси, или Чему нужно научить бэкенд-разработчика
Имена сотрудников может и изменены, а вот задачи вполне себе реальны!
На часах 12:45, вся команда собирается в переговорке. Первым слово берет Иван, стажёр-разработчик.
Иван:
Я работал над задачей отображения всех возможных вариантов сумм, которые пассажир мог дать водителю при известной стоимости поездки. Задача достаточно известная — называется «Размен монет». С учётом специфики добавил в алгоритм несколько оптимизаций. Отдал пул-реквест на ревью еще позавчера, но с тех пор я исправляю замечания.По довольной улыбке Анны стало понятно, чьи замечания исправляет Иван.
В первую очередь произвёл минимальную декомпозицию алгоритма, раcхардкодил получение банкнот. В первой реализации возможные банкноты были прописаны в коде, поэтому вынес их в конфиг по странам.
Добавил комментариев на будущее, чтобы любой читающий мог быстро разобраться в алгоритме:
for exception in self.exceptions[banknote]: exc_value = value + exception.delta if exc_value - cost >= banknote: continue if exc_value > cost >= exception.banknote: banknote_results.append(exc_value) # основные разветвления алгоритма дают некратные купюры for exception in self.exceptions[banknote]: # для таких исключений можно посчитать результат по остатку от # деления таких купюр exc_value = value + exception.delta # но при этом результат не может получиться больше самой банкноты # (corner case) if exc_value - cost >= banknote: continue if exc_value > cost >= exception.banknote: banknote_results.append(exc_value)
Ну и, естественно, остаток времени потратил на покрытие всего кода тестами.RUB = [1, 2, 5, 10, 50, 100, 200, 500, 1000, 2000, 5000] CUSTOM_BANKNOTES = [1, 3, 7, 11] @pytest.mark.parametrize( 'cost, banknotes, expected_changes', [ # no banknotes ( 321, [], [], ), # zero cost ( 0, RUB, [], ), # negative cost ( -13, RUB, [], ), # simple testcase ( 264, RUB, [265, 270, 300, 400, 500, 1000, 2000, 5000], ), # cost bigger than max banknote ( 6120, RUB, [6121, 6150, 6200, 6300, 6500, 7000, 8000, 10000], ), # min cost ( 1, RUB, [2, 5, 10, 50, 100, 200, 500, 1000, 2000, 5000], ), ... ], )
Помимо обычных тестов, которые запускаются при каждом билде проекта, написал тест, использующий алгоритм без оптимизаций (считай — полный перебор). Результат работы этого алгоритма для каждой купюры из первых 10 тысяч случаев положил в файл и прогнал отдельно на алгоритме с оптимизациями, чтобы быть уверенным, что он действительно работает верно.
Давайте на минуту отвлечёмся от стендапа и подведем локальные итоги всего того, о чём говорит Иван. При написании кода основная цель — обеспечить его работоспособность. Чтобы эта цель была достигнута, необходимо выполнить следующие задачи:
- Декомпозировать бизнес-логику на атомарные фрагменты. Читаемость усложняется при просмотре полотна кода, написанного в одной функции.
- Добавить комментарии в «особо сложные» части кода. У нас в команде следующий подход: если на код-ревью задают вопрос по поводу реализации (просят объяснить алгоритм), то необходимо добавить комментарий. А ещё лучше подумать об этом заранее и добавить его самому.
- Написать тесты, покрывающие основные ветви выполнения алгоритмов. Тесты — не только метод проверки работоспособности кода. Они ещё выполняют роль примера использования вашего модуля.
Увы, но даже специалисты с многолетним опытом не всегда используют эти подходы в своей работе. В Школе бэкенд-разработки, которую мы сейчас делаем, студенты получат практические навыки написания архитектурно качественного кода. Ещё одна наша цель — распространение практик покрытия проекта тестами.
Но вернёмся на стендап. После Ивана выступает Анна.
Анна:
Я разрабатываю микросервис отдачи промотирующих изображений. Как вы помните, сервис изначально отдавал статичные данные-стабы. Затем тестировщики попросили кастомизировать их, и я вынесла их в конфиг, а сейчас делаю «честную» реализацию с отдачей данных из базы (PostgreSQL 10.9). Мне очень помогла заложенная изначально декомпозиция, в рамках которой интерфейс получения данных в бизнес-логике не меняется, а каждый новый источник (будь то конфиг, база данных или внешний микросервис) лишь реализует свою логику.Вадим:Я проверила написанную систему под нагрузкой, тестирование показало, что ручка начинает резко тормозить, когда мы ходим в БД. По explain увидела, что индекс не используется. Пока не придумала, как пофиксить.
А что за запрос?Аня:
Два условия под OR:SELECT * FROM table_1 JOIN table_2 ON table_1.some_id = table_2.some_id WHERE (table_2.attr1 = 'val' OR table_1.attr2 IN ('val1', 'val2')) AND table_1.deleted_at IS NULL AND table_2.deleted_at IS NULL ORDER BY table_2.created_at
Explain запроса показал, что в нём не используется один из индексов по атрибутам attr1 таблицы table_2 и attr2 таблицы table_1.
Сталкивался с аналогичным поведением в MySQL, проблема как раз в условии по OR, из-за которого используется лишь один индекс, скажем, attr2. А второе условие использует seq scan — полный проход по таблице. Запрос можно разбить на два независимых запроса. Как вариант — разделить и замержить результат запросов на стороне бэкенда. Но тогда нужно подумать над тем, чтобы обернуть эти два запроса в транзакцию, либо объединить их с помощью UNION — по сути, на стороне базы:Аня:SELECT * FROM table_1 JOIN table_2 ON table_1.some_id = table_2.some_id WHERE (table_2.attr1 = 'val') AND table_1.deleted_at IS NULL AND table_2.deleted_at IS NULL ORDER BY table_2.created_at SELECT * FROM table_1 JOIN table_2 ON table_1.some_id = table_2.some_id WHERE (table_1.attr2 IN ('val1' , 'val2')) AND table_1.deleted_at IS NULL AND table_2.deleted_at IS NULL ORDER BY table_2.created_at
Спасибо, попробую ^_^
Снова подведём итоги:
- Почти все задачи продуктовой разработки связаны с получением записей из внешних источников (сервисов или баз данных). Нужно тщательно подойти к вопросу декомпозиции классов, выгружающих данные. Правильно спроектированные классы позволят вам без проблем писать тесты и модифицировать источники данных.
- Чтобы эффективно работать с БД, нужно знать особенности выполнения запросов, например разбираться в explain.
Работа с информацией и организация потоков данных — неотъемлемая часть задач любого бэкенд-разработчика. Школа познакомит с архитектурой взаимодействия сервисов (и источников данных). Студенты научатся работать с базами архитектурно и с точки зрения эксплуатации — миграции данных и тестирования.
Последним на встрече выступает Вадим.
Вадим:
Я на неделе дежурил, разбирал очередь инцидентов. Одна нелепая ошибка в коде заняла ну очень много времени: в проде не было логов по запросу, хотя их создание было прописано в коде.По скорбному молчанию всех присутствующих понятно — все уже так или иначе сталкивались с проблемой.
Для получения всех логов в рамках запроса используется request_id, который прокидывается во все записи в следующем виде:
# запись без request_id logger.info( 'my log msg', ) # запись с request_id logger.info( 'my log msg', extra=log_extra, # здесь передается request_id — связующая информация о запросе )
log_extra — это словарь с метаинформацией запроса, ключи и значения которого будут записаны в лог. Без передачи log_extra в функцию логирования запись не будет связана со всеми другими логами, потому что в ней не будет request_id.Пришлось исправлять ошибку в сервисе, перевыкатывать его и лишь потом разбираться с инцидентом. Такое случается уже не первый раз. Чтобы больше это не повторялось, я постарался исправить проблему глобально и избавиться от log_extra.
Сначала я написал враппер над стандартным исполнением запроса:
async def handle(self, request, handler): log_extra = request['log_extra'] log_extra_manager.set_log_extra(log_extra) return await handler(request)
Нужно было решить, каким образом хранить log_extra в рамках одного запроса. Здесь было два варианта. Первый — изменить task_factory для eventloop из asyncio:class LogExtraManager: __init__(self, context: Any, settings: typing.Optional[Dict[str, dict]], activations_parameters: list) -> None: loop = asyncio.get_event_loop() task_factory = loop.get_task_factory() if task_factory is None: task_factory = _default_task_factory @functools.wraps(task_factory) def log_extrad_factory(ev_loop, coro): child_task = task_factory(ev_loop, coro) parent_task = asyncio.Task.current_task(loop=ev_loop) log_extra = getattr(parent_task, LOG_EXTRA_CONTEXT_KEY, None) setattr(child_task, LOG_EXTRA_CONTEXT_KEY, log_extra) return child_task # updating loop, so any created task will # get the log_extra of its parent loop.set_task_factory(log_extrad_factory) def set_log_extra(log_extra: dict): loop = asyncio.get_event_loop() task = asyncio.Task.current_task(loop=loop) setattr(task, LOG_EXTRA_CONTEXT_KEY, log_extra)
Второй вариант — «протолкнуть» через команду инфраструктуры переход на Python 3.7 для использования contextvars:log_extra_var = contextvars.ContextVar(LOG_EXTRA_CONTEXT_KEY) class LogExtraManager: def set_log_extra(log_extra: dict): log_extra_var.set(log_extra)
Ну и дальше нужно было пробросить сохраненную в контексте log_extra в logger.class LogExtraFactory(logging.LogRecord): # this class allows to create log rows with log_extra in the record def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) task = asyncio.Task.current_task() log_extra = getattr(task, LOG_EXTRA_CONTEXT_KEY, None) if not log_extra: return for key in log_extra: self.__dict__[key] = log_extra[key] logging.setLogRecordFactory(LogExtraFactory)
Итоги:
- В Яндекс.Такси (да и повсеместно в Яндексе) активно используется asyncio. Важно не только уметь его использовать, но и понимать его внутреннее устройство.
- Выработайте в себе привычку читать чейнджлоги всех новых версий языка, думайте, как вы можете облегчить жизнь себе и коллегам с помощью нововведений.
- При работе со стандартными библиотеками не бойтесь залезать в их исходный код и разбираться в их устройстве. Это очень полезный навык, который позволит вам глубже понять работу модуля и откроет новые возможности в реализации фич.
Преподаватели Школы бэкенда съели не один пуд соли и набили уйму шишек в асинхронной работе сервисов. Они расскажут студентам об особенностях асинхронной работы Python — и на уровне применения на практике, и в части разбора внутренностей пакетов.
Книги и ссылки
В изучении Python вам могут помочь:
- Три книги: Python Cookbook, Diving Into Python 3 и Python Tricks.
- Видеолекции таких столпов IT-индустрии, как Реймонд Хеттингер и Дэвид Бизли. Из видеолекций первого можно выделить доклад «Beyond PEP 8 — Best practices for beautiful intelligible code». У Бизли советую посмотреть выступление про asyncio.
Чтобы обрести более высокоуровневое понимание архитектуры, прочтите книги:
- «Высоконагруженные приложения». Здесь подробно расписаны вопросы взаимодействия с данными (кодирование данных, работа с распределёнными данными, репликация, секционирование, транзакции и т. д.).
- «Микросервисы. Паттерны разработки и рефакторинга». В книге показаны основные подходы к микросервисной архитектуре, описаны недостатки и проблемы, с которыми приходится сталкиваться при переходе с монолита на микросервисы. В посте про них почти ничего нет, но всё равно советую прочитать эту книгу. Вы начнёте понимать тенденции в построении архитектур и изучите основные практики декомпозиции кода.
Ещё один из самых важных навыков, который можно до бесконечности развивать в себе, — это чтение чужого кода. Если вдруг вы понимаете, что редко читаете чужой код — советую выработать в себе привычку регулярно смотреть новые популярные репозитории.
Стендап закончился, все разошлись по рабочим местам.
habr.com
Фронтенд и бэкенд: о самом главном
Frontend и backend: об иерархии разработки веб-приложения, точках соприкосновения, сходствах и различиях двух столпов веба, а также сферах их ответственности.
Давно остались в прошлом времена, когда мир веба был прост и понятен, а сайты были наборами статических страниц с табличной разметкой. Веб-разработка прошла быстрый, яркий и насыщенный путь развития. Появились новые языки, техники, технологии и парадигмы. Сегодня это одно из самых перспективных и высокооплачиваемых IT-направлений.
Сложная и многоуровневая структура современных веб-приложений требует иерархического разделения процесса их разработки. Исторически этот процесс разделяется на две части: front-end (клиентская) и back-end (серверная). Взглянем поближе на каждую из них, поговорим об их различиях, точках соприкосновения и зонах ответственности
Пользователь вводит адрес в строке поиска, переходит по ссылке с внешнего ресурса или из поисковой системы. Он видит много рекламы. Взору его предстает навязчивое требование регистрации. Ему представлена неудобная навигация и трудночитаемый контент. Страница долго загружается, или не адаптирована для мобильных устройств, или имеет устаревший дизайн. Что делает пользователь? Правильно, покидает сайт.
Задачей фронтенд-разработчика является сделать все возможное, дабы предупредить подобное развитие событий. Сфера его ответственности охватывает создание пользовательского интерфейса, что в свою очередь подразумевает некоторую иерархию. Это дизайн макета, верстка, адаптация. Важной частью разработки веб-приложения является UI/UX дизайн — то, что в наибольшей степени влияет на первое впечатление пользователя.
Но дизайн — это еще не фронтенд. В эпоху современных веб-приложений, в подавляющем большинстве реализующих некоторую бизнес-логику, их поведение не менее важно, чем внешний вид.
В этом контексте невозможно не упомянуть JavaScript. Скриптовый язык изначально предназначался для реализации простого функционала вроде анимации элементов интерфейса, но в умелых и знающих руках он превращается в поразительно мощный инструмент. Создано множество JS-библиотек, расширений, надстроек, многократно увеличивающих сферу возможностей этого языка.
Библиотека jQuery позволяет легко реализовывать эффективное взаимодействие JavaScript и HTML. Язык TypeScript, компилируемый в js-код, дает возможность использования классов, модулей, шаблонов, являясь, таким образом, полноценным объектно-ориентированным языком. Программная платформа Node.js превращает JavaScript из узкоспециализированного языка в язык общего назначения, «выпуская» его из браузерной песочницы. На клиентской стороне реализуется отправка запросов и обработка ответов сервера
Бэкенд — это серверная логика веб-приложения. Здесь реализуется работа с хранилищем данных, поэтому человек, занимающийся разработкой серверной логики, должен иметь навыки работы с базами данных, а также опыт использования механизмов ORM. Именно от бэкенд-разработчика зависит производительность серверного кода, его масштабируемость, безопасность и рациональность.
Помимо серверной логики в сферу ответственности бэкендера входит отладка и прототипирование с использованием клиентской части приложения. Это влечет за собой необходимость понимания работы стека протоколов TCP/IP, HTTP, REST/SOAP, принципов взаимодействия браузера с веб-приложением.
Несмотря на то, что сфера фронтенда традиционно считается самой богатой и разнообразной в плане технологий, бэкенд также имеет широкий спектр инструментов разработки. Помимо каноничного PHP, несправедливо многими поругаемого, прочные ниши заняли Python с фреймворком Django, Java и Node.js, Ruby, а также набирающий популярность Go.
Веб-разработка — одна из самых динамично развивающихся сфер в IT. Охватывая широчайший спектр задач, она порождает все новые инструменты и идеологии, усложняясь, притягивая на свою сторону талантливых специалистов и открывая многочисленные перспективы как для себя, так и для своих апологетов.
В арсенале как фронтенда, так и бэкенда имеется множество языков и технологий. Об их актуальности и удобстве ведутся ожесточенные споры. Но истина, как всегда, где-то рядом. На выбор технологии должна влиять не мода, а то, какие задачи разработчик перед собой ставит. Каждый язык и фреймворк уместен тогда, когда он отвечает специфике решаемой проблемы. В этом (и только в этом) случае использование его будет наиболее эффективным.
Фронтенд и бэкенд — вовсе не взаимоисключающие параграфы. Для тех, кто одинаково свободно чувствует себя на обоих поприщах, существует такое понятие, как full stack. “Фулл стэк” -разработчик занимается и клиентской, и серверной частями приложения. Освоение такой профессии — непростое дело. На этому тернистом пути путеводной звездой может послужить онлайн-программа по веб-разработке от Нетологии. В ней в оптимальной пропорции совмещаются теория и практика. В процессе обучения вы освоите два языка программирования, пополните свое портфолио пятью проектами, прокачаете коммуникационные навыки и работу с системой контроля версий git.
И напоследок приятный бонус для наших читателей — промокод proglib со скидкой 7000Р.
Старт программы — 21.07.
Успейте подать заявку
Простыми словами: бэкенд, фронтенд и их взаимодействие
Веб-разработчик и путь его развития в 2018 году
proglib.io
Back-end разработчик: особенности профессии и обязанности
Работает над программной и административной частью различных веб-приложений. Занимается внутренним содержанием систем и серверных технологий (базой данных, программной логикой, архитектурой).
Back-end разработчик: кто это и чем занимается
С развитием интернет-технологий веб-приложения обрели сложную архитектуру и их уже не под силу разрабатывать одному человеку. К процессу подключается команда специалистов, каждый из которых отвечает за определенный «участок» разработки.
Неотъемлемой частью команды является back-end разработчик – специалист, который отвечает за программирование «сердца» веб-сайта. Важными качествами, которыми должен обладать back-end developer являются:
- мышление, основанное на логических умозаключениях;
- проявление инициативы в обсуждении проектов;
- умение планировать свою работу, а также придерживаться планов, установленных руководством;
- умение пользоваться распространенными версиями фреймворков: Django, Flask и Spring;
- знание английского языка программно-технического направления.
Бэкэнд, помимо всего прочего, требует смекалки, находчивости и умения находить выход из нестандартных ситуаций.
Работа в back-end: особенности профессии
Back-end, в переводе с английского, означает «оборотная сторона». Соответственно бэкэнд разработчик занимается внутренними процессами, за счет которых, сайт или приложение могут бесперебойно функционировать. Бэкэнд программист – это боец невидимого фронта, который занимается сложнейшими задачами:
- проектирует на программном уровне архитектуру приложения;
- программирует и настраивает ядро сайта;
- разрабатывает платформу и фундаментальный функционал сайта или приложения;
- работает с архитектурой программного кода;
- разрабатывает безопасные приложения, поддерживающие интерфейс пользователя;
- контролирует состояние тестовых и рабочих серверов;
- следит за актуальными версиями баз данных;
- постоянно работает над улучшениями, добавляя полезный функционал.
Back-end обучение: как стать востребованным специалистом
Бэкэнд – это перспективная, но трудоемкая специальность в сфере IT. Она требует понимания программной архитектуры и фундаментальных знаний. Если вы хотите стать back-end разработчиком, то вам стоит сделать свой выбор в пользу государственных вузов, крупных онлайн-школ и университетов.
info-hit.ru
Что нужно знать backend разработчику в 2019
Если вы задаетесь вопросом о навыках разработчиков, значит пришло время раскачать себя по полной программе и наконец подтянуть все те навыки и умения, которых прежде просто не хватало. Новые тенденции и технологии веб-разработки настолько быстро изменяются, что проследить за их работой порой просто нереально. И чтобы не потерять свою любимую работу, быть интересным и востребованным специалистом во все века — необходимо идти в ногу со временем и следить за новинками в сфере программирования и создания сайтов, ибо меняются не только сайты и их составляющие, но и запросы тех людей, которые заказывают себе интернет-платформу для бизнеса.
Backend разработчиком является специалист по программно-административной составляющей интернет приложения, а также внутренней работе системы, технологиями серверов, такими как база данных, архитектура, вся программная логика. Перед ним стоит сложная и ответственная работа, а поскольку тенденции и течения изменяются, необходимо все время учиться и развиваться, чтобы всегда оставаться востребованным специалистом.
Итак, какие же навыки обязательно необходимы для работы?
- самое главное — желание работать, без которого остальное можно и не практиковать;
- владение РНР5 на уровне уверенного пользователя;
- знание английского языка для ознакомления с документацией;
- знание ООП;
- навыки работы с MySQL;
- наличие опыта работы с Git;
- умение разбираться максимально быстро с чужим кодом;
- знание фреймворков.
Сегодня сайты, веб-приложения, игрушки сложные по своей структуре, поэтому и работает над их созданием и функционированием целая группа спецов. Чтобы сделать хороший полноценный сайт – воплощение удобного в использовании, красивого внешне, функционального — необходим огромный труд и согласованность между разработчиками. Подобное позволит ускорить создание сайта, а также разработку приложения, упростить в несколько раз обслуживание такового.
То есть, бэкенд разработка представляет собой создание непосредственно двигателя а все остальное — фронтенд разработка — так называемое создание дизайна, запуск функций по управлению. Такие стороны как бэкенд, фронтенд разработчики взаимодействуют очень тесно всегда.
Основными инструментами в работе каждого из бэкенд разработчиков являются ряд языков программирования, это такие как: PHP, Python, Java, Ruby, Node JS. Плюсом большим будет выучить дополнительно Express, Mongo DB, тогда работаться будет в несколько раз легче.
В качестве вспомогательных средств используют такие фреймворки как Symfony, Yii, Zend Framework, Codeigniter, Kohana. Хранение данных — MySQL/SQLite.
Разумеется, есть еще огромное количество навыков, но всеми ими не овладеть, ибо вакансии разные и могут требовать наличие индивидуальных навыков – не стандартных. Поэтому, одного точного списка просто не существует.
Для современного разработчика умения написать код для различных программ недостаточно. Программисты таким образом работали очень давно – приблизительно 10 лет тому назад. Сегодня подобное определение уже является неуместным, так как в работе часто разрешают и не писать код, а просто соединять готовые составляющие в одну конфигурацию. Помимо этого плюсом будет умение организовать выкладку кода на сервер или хостинг. Чтобы соответствовать последним требованиям законодательства мы рекомендуем купить хостинг в России.
Сфера IT не стоит на месте, развивается постоянно, проекты с каждым днем более сложные, — конструктор, который легко собрать с готовым шаблоном.
Итак, основные функции back end разработчика сводятся к следующим:
- Осуществление задач по проектированию сервиса и архитектуры такового;
- Создание непосредственно ядра сайта;
- разработка в полном объеме платформы, а также ее функционала;
- знание кода, его архитектуры;
- разработка вех приложений, которые осуществляют поддержку интерфейса пользователя, а также безопасность такового;
- осуществление контроля и присмотра за всеми серверами;
- контролирование версий, баз с данными, а также непрерывной интеграции.
Чтобы быть настоящим профи в сфере бэкенд разработки нужно получить образование по специальности, а затем можно продолжить развиваться, посещая компьютерные курсы, проходя онлайн-тренинги и читая дополнительную литературу.
Важно знать и всегда помнить о том, что наличие фундаментального образования – это только основа, и для успешной работы этого будет недостаточно. Настоящий профессионал своего дела изо дня в день учится и развивается в одну ногу с современными тенденциями. Если этого не делать, обязательно придет молодой, успешный и перспективный. Поэтому важная составляющая — самообразование, чтобы знать, что сейчас востребовано, а что нет, какие технологии используются, а какие давно отошли на второй план. Ну и конечно практика и много раз практика!
Большинство современных работодателей, конечно, очень редко смотрят на образование, ибо, если есть желание работать, учиться и развиваться — будет работа и перспективы. А начать своё развитие при должном желании вы можете самостоятельно, благодаря нашему онлайн курсу по PHP с видео уроками.
webshake.ru
Что нужно знать, чтобы стать бэкенд-разработчиком в 2018
В этой статье речь пойдёт о том, какими языками и инструментами необходимо овладеть, чтобы стать бэкенд-разработчиком в 2018 году.
Фронтенд – это веб-страницы, которые вы просматриваете и взаимодействуете с ними в браузере. Но как веб-страницы вообще попадают в интернет? Каждый раз, когда вы вводите URL в поисковой строке, переходите по ссылке или заполняете форму, браузер подключается к серверу. Когда пользователь запрашивает у сервера какой-либо ресурс, сервер предоставляет его пользователю. Сделать с помощью языка программирования так, чтобы сервер предоставлял пользователю то, что он запрашивает – главная задача бэкендера.
За что конкретно ответственен бэкенд-разработчик?
Бэкенд-разработчики пишут программы, которые обрабатывают:
-
Пользовательские данные
Большинство веб-приложений позволяют юзерам заполнять различные формы данными, а бэкенд-разработчик ответственен за их хранение и корректное отображение только для тех пользователей, которые имеют к ним доступ.
На серверной стороне веб-приложения также хранятся данные платёжных методов пользователей вроде кредитных карт или интернет-кошельков. Некоторые бэкенд-разработчики несут ответственность за безопасное хранение этих данных и корректное проведение транзакций.
-
API (Application Programming Interfaces)
С помощью API другие программы и мобильные устройства могут получать доступ к ресурсам веб-приложения. Создание API – это распространённая практика среди разработчиков веб-приложений, так что, чтобы стать бэкенд-разработчиком, нужно уметь создавать API, либо, как минимум, уметь взаимодействовать с API других веб-приложений.
Какими технологиями необходимо овладеть, чтобы стать бэкенд-разработчиком?
Ответ сервера на запрос пользователя требует нескольких шагов, и каждый из них использует свой тип ПО. Комбинация технологий, используемых на определённом веб-сервере, называется стеком технологий. Вообще, выбор веб-серверов, языков, фреймворков и баз данных огромен, но они все довольно похожи. Поэтому, программисту, желающему стать бэкенд-разработчиком, достаточно выучить хотя бы по одной технологии из каждого уровня стека, чтобы претендовать на должность бэкендера, а тонкостям работы со стеком определенного проекта в компаниях обычно обучают на месте. Типичный стек технологий состоит из следующих элементов:
-
Серверное ПО (обычно говорят просто «веб-сервер»)
Среди популярных веб-серверов можно отметить:
- Apache
- nginx
- Microsoft IIS (Internet Information Services)
-
Фреймворки, библиотеки и прочие инструменты
Вот некоторые из наиболее популярных:
-
JavaScript
-
Java
- Spring
- Hibernate
- JSF (JavaServer Faces)
- Python
- C#
Достаточно овладеть хотя бы одним из языков и перечисленных инструментов, чтобы повысить шансы стать бэкенд-разработчиком и найти работу.
Также не обойтись без:
Чтобы связать код, написанный бэкенд-разработчиком, с базой данных, используется ORM (Object Relational Mapping), – технология, с помощью которой данные из БД конвертируются в объекты. Большинство баз данных используют SQL (Structured Query Language) для доступа к данным. ORM-библиотека автоматически пишет необходимые фреймворку запросы. Однако ORM не может написать за вас какой-либо сложный запрос: это придётся делать вручную. Так что знания SQL обязательны для бэкендера.
Наиболее популярными СУБД являются:
- MySQL
- SQL Server
- PostgreSQL
Если вы освоите хотя бы одну из них, то без проблем сможете работать практически с любой СУБД.
-
HTML (ну куда же без него!)
Как только программа на стороне сервера получает запрашиваемые из БД данные, бэкенд-разработчику необходимо вставить их в страницы, написанные фронтендерами, поэтому знание HTML также обязательно.
Если вы занимаетесь поддержкой API, то вам необходимо также знать JSON или XML, так как данные, предоставляемые для API сервером, конвертируют в один из этих языков. В идеале стоит разбираться и в JSON, и в XML.
-
Системы контроля версий
Без систем контроля версий сейчас проекты никто не разрабатывает. Даже те, кто разрабатывает приложение в одиночку, зачастую используют их, так что о командных проектах даже говорить не приходится. Поэтому знание Git сейчас обязательно для любого программиста, вне зависимости от того, хотите вы стать бекэнд-разработчиком или писать плагины для Sublime Text.
А ещё обратите внимание на облачные платформы:
- Amazon Web Services
- Heroku
- Google Cloud Platform
- Windows Azure
Облачные платформы сейчас популярны. Они предоставляют веб-приложениям необходимые мощности и значительно облегчают их поддержку. Подобные знания требуется во многих компаниях на должность бэкенд-разработчика.
В заключение
Если вы в этой теме новичок и только планируете стать бэкендером, начните со всё тех же «трёх китов веба» в виде HTML, CSS, JS. Бэкенд-технологии, в отличие от фронтенда, более стабильны поэтому, изучив хотя бы один язык, фреймворк и СУБД, вы будете готовы разрабатывать свои веб-приложения, и ваши навыки не так быстро устареют. Хотя это также не отменяет того факта, что вам предстоит постоянно обучаться и совершенствовать навыки разработки.
Источник
proglib.io
Отправить ответ