Backend

Backend #

Этот документ посвящён необходимым знаниям, относящихся к Python Backend, напрямую или косвенно.

Общие знания #

Владение общими знаниями хорошо тем, что они применимы к любой Backend платформе, будь то Java, .Net, NodeJS или другие.

Клиент-серверное взаимодействие, IP адреса, DNS #

Базовые идеи, о которых необходимо иметь общее представление. Что нужно знать:

  • Что такое IP адрес
  • Разница между TCP и UDP
  • Что такое TCP сокет
  • Клиент-серверное взаимодействие. Что именно происходит, когда браузер запрашивает страницу сайта
  • Что такое DNS

Избранные курсы и учебные ресурсы #

HTTP #

Главный протокол WEB.

Что нужно знать:

  • HTTP методы
  • Заголовки, cookies
  • Коды ответа
  • Form data, multipart form data

Избранные курсы и учебные ресурсы #

  • Статья про HTTP простым языком
  • Практика - проекты, начиная с 3

REST API #

REST - набор правил взаимодействия клиента и сервера на основе HTTP. Сделать работающее клиент-серверное приложение легко, элегантно его спроектировать - сложно.

Что нужно знать:

  • Отличие RESTful от RESTless
  • Базовые дизайн принципы и типовые ошибки, которых следует избегать

Избранные курсы и учебные ресурсы #

Python #

Перейдём к знаниям, относящимся напрямую к Backend разработке на Python.

Разработка бэкенд приложений без фреймворков #

Что нужно уметь:

  • Пользоваться библиотекой http.server и технологией uWSGI для реализации бэкенд приложений

Избранные курсы и учебные ресурсы #

  • TODO
  • Практика - проекты 3, 4

Django #

Django - один из основных фреймворков для веб разработки на Python.

Что нужно уметь:

  • Работать с базами данных
  • Реализовывать REST API
  • Создавать веб страницы
  • Библиотеки экосистемы Django - Django ORM, и другие

Избранные курсы и учебные ресурсы #

FastAPI #

  • Плейлист от Артёма Шумейко
  • Практика - проект 7

Шаблонизаторы веб-страниц #

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

Для Python существует множество шаблонизаторов. Остановимся на Jinja2.

Что нужно уметь:

  • Передавать данные из Python в шаблон
  • Использование Jinja2 в проекте с фреймворком и без него

Избранные курсы и учебные ресурсы #

Что дальше #

Перечисленные выше знания и инструменты - база для Junior. Если есть желание и необходимость углубиться в Backend технологии, советую обратить внимание на:

  • Websocket
  • XML, Protobuf
  • Альтернативны REST - SOAP, GRPC, GraphQL
  • Другие Python фреймворки, например Flask
  • Написание бэкенд приложений в реактивном стиле