Инженерия бэкэнда - это искусство. За свою 18-летнюю карьеру, работая с бэкэнд-приложениями и строя их, я обнаружил, что определенные шаблоны проектирования для взаимодействия повторяются. Существует лишь несколько способов, которыми клиенты взаимодействуют с бэкэнд-приложениями, хотя их может быть больше, я считаю, что обсуждаемые в этом курсе шаблоны - самые распространенные. Примеры таких шаблонов - это запрос-ответ, издатель-подписчик, короткий и длинный и push.
На основе этих шаблонов проектирования для взаимодействия инженеры могут использовать ряд протоколов для конкретного общения. В то время как основные транспортные средства ограничены TCP или UDP, тонны отраслевых протоколов построены на их основе для решения определенных проблем и сценариев использования. Примеры таких протоколов высокого уровня - HTTP/1.1, HTTP/2, HTTP/3, gRPC, WebRTC и многие другие. Другие транспортные протоколы, такие как QUIC, были созданы поверх UDP для того, чтобы снизить уровень передачи потока HTTP/2. У каждого протокола есть свои плюсы и минусы и он подходит для определенных сценариев использования. В курсе я обсуждаю наиболее распространенные протоколы и предоставляю примеры и демонстрации при необходимости.
Прежде чем клиент может отправить запрос, он должен установить соединение с бэкэндом. Важно понимать, как устанавливается соединение, и какие части установки соединения выполняются в ядре, а какие - в процессе бэкэнд-приложения. Критически важно также понимать, как соединение затем принимается бэкэнд-приложением и как оно может принимать соединения как можно быстрее, чтобы очередь ядра не заполнилась, иначе клиенты больше не смогут подключаться.
После установки соединения клиент отправляет запрос, но что именно происходит в бэкэнд-приложении для чтения запроса? Что представляет собой запрос на самом деле? Понимание затрат на разбор запроса на основе протокола позволяет инженеру оценить проделанную работу и оборудовать его лучшими инструментами для устранения проблем с производительностью или ошибок.
Как только запрос достигает бэкэнда, приложение должно выполнить запрос. У бэкэнда есть выбор в стиле выполнения, который он может выбрать. Понимание разницы между процессом и потоком, многопроцессорностью, многозадачностью и связью с количеством ядер процессора или аппаратных потоков - это ключевое условие для выбора правильного шаблона выполнения. Не обязательно придерживаться этих шаблонов, но можно изобрести новые, соответствующие вашим потребностям.
Этот курс предназначен для инженеров, которые строили бэкэнд-приложения. Это курс среднего и продвинутого уровня, требуется определенные знания в программировании и сетевых технологиях, поэтому я рекомендую пройти мой курс по основам сетевой инженерии перед тем, как приступить к этому курсу, если у вас нет навыков в области сетевых технологий. Надеюсь, вам понравится этот курс, и большое спасибо за то, что рассматриваете его.