Очередь в backend: за чем стоим и с чего начать свой путь

Для всех, кто не любит делать UI, «дышит» очередями и мечтает об идеальном API, в четвёртый выпуск подкаста «Сушите вёсла» мы позвали backend-разработчиков Андрея, Азата и Антона.

Железные разработчики Redmadrobot Артём и Рома записывают подкаст, где вместе с гостями обсуждают разные стороны создания ИТ-продуктов и делятся опытом в диджитале. В четвёртом выпуске ведущие разузнали у собеседников, с чего начинался их путь в backend, какой web-framework стоит выбрать, снится ли им верстка экранов и как объяснить маме, кем ты работаешь.

Прикладываем подкаст и ответы на несколько животрепещущих вопросов.

Тайминг

01:27 — Как приходят в backend-разработку.

10:33 — Что привлекает специалистов в backend.

12:32 — Срыв покровов: нужны ли глубокие знания алгоритмов для тех, кто «пилит апишку»?

15:17 — Вопросики масштабирования и безопасности.

16:23 — Одинаковую ли работу делают все backend-разработчики?

19:23 — Ruby on Rails, его «магия», взлёт и падение.

24:23 — Как выбрать платформу?

28:06 — Зачем нужны микрофреймворки и как с ними работать?

33:55 — Что такое асинхронный сервер и для чего он нужен?

35:58 — Go: простота и архитектура.

41:46 — Postgresql вместо MySQL. Почему?

44:58 — Зачем нужно изучить Docker как можно быстрее и для чего стоит поставить nginx?

50:49 — «Зелёные» разработчики: какими минимальными навыками необходимо обладать выпускникам университетов, чтобы устроиться на работу?

1:04:21 — Лучшие книги по алгоритмам.

1:09:33 — Что нужно знать и что не нужно делать на собеседовании?

1:14:29 — Не хочется ли ребятам уйти из backend?

1:20:28 — И все-таки, чего не стоит делать на работе и почему «с людьми нужно общаться»?

Как приходят в backend-разработку?

Несмотря на популярность мобильной разработки, остались еще те, кому милее старый-добрый backend. Среди них, разумеется, и наши гости.

Азат, например, рассказал, как он не пошел в мобильную разработку и решил, что логичнее заниматься веб-разработкой в широком смысле. А вот история Антона тесно связана с Python.

Я учился в университете и выучил Python. Он мне нравился, и мне хотелось продолжать делать что-то на «питоне». А в Белгороде, где я жил и учился, можно было найти только какую-нибудь веб-студию, которая делает сайты на CMS — просто подверстывают шаблоны. Мне этим вообще заниматься не хотелось.

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

Антон Медведев

, backend-разработчик

Что привлекает людей в backend…

…Когда есть суперпопулярный frontend?

Артём вспомнил множество собеседований, на которых соискатели рассказывали, почему они хотят строить карьеру в мобильной разработке. Просто чтобы потом похвастаться крутостью приложения. В backend с этим сложнее.

Но на самом деле, если друзья, с которыми ты делишься радостью создания backend, понимают в ИТ-разработке, то они похвалят тебя. А вот маме можно сказать, что делал сервер для мобильного приложения магазина, которым она пользуется. И даже если ей не до конца понятно, что такое сервер, мама всё равно будет гордиться.

Плюсы backend-разработки

Азат предположил, что людей привлекает тот факт, что не нужно верстать. Ещё есть мнение, что backend сложнее и круче, хотя каждому, конечно же, свое. После этого ребята ушли в беседу о масштабировании и безопасности. Подробнее — с 15:17.

Все ли backend-разработчики делают одну работу?

Это не так. Задачи в backend-разработке бывают разными, и они зависят не от языка или платформы, а от потребностей и специфики компании, а также от уровня самого разработчика.

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

Python, Ruby, Go, С++ и все-все-все

Ребята в студии заговорили о том, как выбрать платформу. А также о том, что Ruby «ещё живет» (Рома недавно видел доказательство), а ещё почему Антон начал учить Python, о странных именах создателей языков программирования, простоте Go, микрофреймворках (о них говорили особенно много — слушайте с 28:06), MySQL, Docker, асинхронных серверах и магии рельсов.

«Зелёные» разработчики и минимальные навыки для соискателя

Насколько глубоко должен, например, выпускник университета разбираться в backend, чтобы получить работу?

Во время обсуждения выяснилось, что он должен быть «уверенным пользователем ПК». А если серьезно, то? по мнению Азата, молодой специалист обязан обладать минимальными навыками администрирования Unix-систем — знать определенный набор команд: cd, ls и другие.

Также должен понимать, что такое процесс, какие есть права доступа, какая система прав Linux и как вообще в ней функционируют сети, как работает IPC (inter process communications), TCP сокеты. Для начала этого достаточно. Нужно просто уметь программировать.

Есть базовые вещи, общие для любой разработки, допустим, для ООП (объектно-ориентированного программирования) есть правила написания, проектирования классов. Если это алгоритмы, нужно просто знать, как они проектируются, что там есть, динамическое программирование, ну и «использовать stack везде, где можно».

Антон Медведев, backend-разработчик

Иными словами, для начала погружаться в это с головой не нужно.

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

Какие книги по алгоритмам стоит прочитать

Андрей «топил» за Стивена Скиена и его «Алгоритмы. Разработка и применение». Антон порекомендовал книгу Томаса Кормена, в которой «есть баланс между строгостью, понятностью и простотой изложения», и ещё “Cracking the Coding Interview” — хорошее практическое руководство, чтобы быстро разобраться в алгоритмах.

Также гости посоветовали «Искусство программирования» Дональда Кнута, которая задумывалась как пособие по компиляторам, а стала настоящей «книгой книг».

В итоге backend — да или нет?

Ребята пришли к выводу, что во всех сферах веб-разработки есть свои плюсы и минусы. И это нормально. Если вам нравится backend, алгоритмы и очереди, то вам стоит задуматься о карьере именно в нём. Это если кратко.

Если же хочется вживую услышать рассуждения, то включайтесь в подкаст с 1:14:29.

Полезные материалы

Для желающих погрузиться в Python можно почитать:

Подборка для будущих джедаев REST:

Предыдущие выпуски подкаста «Сушите вёсла»

Слушайте нас там, где удобно: Soundcloud, Apple, Google Podcasts.

Забегайте обсудить выпуск в Telegram-чат.

0
10 комментариев
Написать комментарий...
Mihael Isaev

Как насчет Swift?

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Mihael Isaev

Я три года уже использую свифт на бэке в продакшене, до этого использовал node.js, а еще раньше php 🤷‍♂️ Прошел пусть с Vapor фреймворком со второй версии до текущей четвертой. Написал кучу библиотек и активно их развиваю https://github.com/MihaelIsaev
На удивление вокруг серверного свифта собралось очень доброе и отзывчивое комьюнити, токсичность отсутствует. Особенно это актуально для Vapor'овского сервера в Discord https://discordapp.com/invite/vapor
Для энтерпрайза может пока и не годится из-за малой популярности, но для стартапов лучше выбора и быть не может. Все-таки свифт красив и быстр. По производительности это практически как писать бэк на Си. А по красоте свифт вобрал в себя все лучшее из разных языков.
Экономичность использования ОЗУ вас приятно удивит, например, Vapor приложение при запуске кушает всего 12Мб. А значит можно его хоть на 256Мб машине поднять запросто, но если БД будет Postgres, то лучше минимум 512Мб.
Свифт сейчас используют уже повсюду, и в IoT, и на распберри. Readdle давно пишет мост для Android. Свифт уже достаточно хорошо портирован на винду. Только IDE пока нормально его не поддерживают, так что тут ограничение на Xcode.
Основой для бэка все популярные фреймворки сейчас использую NIO которую пишет и развивает Apple, а это очень круто. https://github.com/apple/swift-nio
Если есть интерес, то присоединяйтесь 🙂 Мне можно в дискорде писать в личку @iMike#3049 всегда помогу чем смогу, поделюсь опытом 🙂 

Ответить
Развернуть ветку
Сергей Веселый
По производительности это практически как писать бэк на Си.

Звучит сомнительно, тут свифт где-то на уровне питона и руби по скорости и на порядки отстает от си - https://www.techempower.com/benchmarks

Ответить
Развернуть ветку
Nikolay Kapustin

Сравнить libreator c swift-nio = это я не знаю, надо суметь.

Ответить
Развернуть ветку
Mihael Isaev

Компилится он в нативный машинный код силами LLVM, и можно напрямую использовать Си код, так что сделать можно все что душе угодно.
То, что фреймворки не выдают производительность сопоставимую с libreactor думаю тут трейдофф за красоту свифта и всякие удобства вроде JSONEncoder/Decoder.
Бенчмарки по JSON это взгляд однобокий, лучше сравнивать по разным сценариям и смотреть конечно не только на скорость ответа, но и на прожерливость.
В любом случае я предпочту использовать Swift нежели node.js или питон, потому что скорость и приятность разработки для меня на 1 месте.
Питон, кстати, скриптовый язык и считается очень медленным. По заверениям эпл, которые легко гуглятся, свифт в 8.4x раз быстрее питона 🤷‍♂️
Сам я пару лет назад поднимал простой сценарий для теста собственноручно: поднимал пустой сервер на пустом дроплете DO отдельно под node.js, отдельно под python, отдельно под vapor 3. Каждый сервер обслуживал только один просто эндпоинт который возвращает plain text: Hello world. С аналогичного дроплета я поочереди для каждого сервера запускал утилиту wrk которая ломилась на тот простой эндпоинт. Результаты были: ~70k rps у Vapor, ~70k rps у node.js, ~30k rps у python.
Вот старая статейка с бенчем https://medium.com/@codevapor/server-side-swift-vs-the-other-guys-2-speed-ca65b2f79505 тут еще Vapor2.
От себя могу добавить, что Vapor2 был без NIO и был по каким-то причинам быстрее, чем Vapor3+NIO1. Сейчас Vapor4 на NIO2 и все говорят, что производительность выросла, много всего пофиксили и оптимизировали, но я сам еще не тестировал.
Swift еще в начале своего пути на бэке и тут сейчас очень интересно, потому что еще есть, что создавать 🙂 и для начала пути он очень хорош, а дальше думаю будет только еще лучше 🙂 

Ответить
Развернуть ветку
Nikolay Kapustin

Статья устарела. Латтнер поднимает в гугле бекенд для TensorFlow заместо пайтона (уже в бете). Так что Swift на беке теперь вполне норм. А учитывая еще возрастающие усилия и роадмап на swift.org = вполне можно новые проекты начинать на нем. 

Ответить
Развернуть ветку
911

только если пет проекты
(так и делаю сам)

Ответить
Развернуть ветку
Nikolay Kapustin

Скажи это Амазону с их Smoke для Prime Video. 

Ответить
Развернуть ветку
Сергей Веселый

Как то тухло

Ответить
Развернуть ветку
7 комментариев
Раскрывать всегда