Сказка о бэкенде, ruby и rails
Оригинал статьи тут и картинки взяты там же.
Все мы знаем о прекрасном мире Веба. Каждый день мы возвращаемся туда за ответами или же просто чтобы хорошо провести время. Однако не каждый знает как устроен этот мир единички и нуля.
Что же, этот мир очень велик и не каждый видел его край. Сейчас он также велик как наш, к счастью, в нем нет границ и с каждым днем он расширяется. Там появляются новые государства, возможно вы слышали о некоторых из них, например PhP или Python, в этих государствах появляются города (мы их называем приложения), а в городах жители (объекты и сущности).
Добро пожаловать в мир Ruby
Сегодня я расскажу об одном из таких государств, возможно вы слышали о нем. Это государство называется Ruby. Также, возможно вы слышали о его славной династии королей «Rails» совсем недавно в государстве на престол взошел молодой и сильный король Rails V. Об этом короле слышали и в других странах и брали с него пример, можно сказать что в государстве Python есть свой король Django он очень похож на королей династии Rails.
Династия Rails создала множество городов. Кстати, вы наверное слышали о таких городах как Twitter, Github или Kickstarter, они тоже были основаны в государстве Ruby.
Король Rails V славно правит своим государством по завещанию своего отца, а тот правил по завещанию его отца. Об этом завещании слышали многие, возможно и вы тоже, это завещание еще называют (паттерн программирования MVC). Немного об этом завещании.
Каждый город (приложение) разрабатывается по одинаковой архитектуре и в каждом городе есть 3 основных здания:
- Муниципалитет (Model)
- Префектура (Controller)
- Площадь (View)
Это все. Такое просто завещание. Но, несмотря на это, очень важное. Давайте выясним, почему.
Мы с вами, как гости города хотим увидеть всю его красоту, поэтому мы идем на Площадь (View). Все верно, с площади можно увидеть весь город, а также вы можете попасть куда угодно, в любое заведение: галерею, контактный центр или просто познакомиться с другими гостями города. Однако чтобы посмотреть картины в галерее или узнать номера телефонов из контактного центра или просто просмотреть информацию о других гостях города нам нужно заглянуть в Префектуру (Controller), там нам скажут есть ли у нас право получить доступ к запрашиваемой информации, а если доступ есть, тогда наш запрос будет направлен в Муниципалитет (Model) — место где хранится вся информация о городе, его жителях и гостях.
Что касается Площади (View), то сейчас набирает популярность ответственность за ее строительство возлагать на государства специализирующиеся на строительстве площадей. Такие государства обосновались на континенте «Мобильной разработки», вы наверное слышали о них, это Android и IOS государства.
Префектура (Controller) — очень полезное место. Именно сотрудники префектуры говорят нам »404 — not found» когда мы пытаемся найти в городе заведение, которого не существует (например судоходный порт в городе не имеющем выход к морю).
Муниципалитет (Model) — это оплот каждого города, без него, город будет пустым. В городе может быть площадь, но без Муниципалитета вы никого на ней не встретите. Здесь также можно найти любую информацию, о его жителях, заведениях, о его гостях и вообще о всем что есть в городе. Муниципалитет — часть отвечающая за архивы каждого города.
Городская жизнь
Сегодня мы посетим очень молодой и развивающийся город с самым известным названием в мире — »MyApp». Этот город создан для того чтобы объединять людей со всего мира.
Предположим вы уже побывали на площади города MyApp и решили что пора бы с кем-нибудь познакомится. Направляетесь в Префектуру (Controller) и запрашиваете информацию о всех мужчинах которые сейчас в городе.
Пусть это будет "GET https://my_app/men”
Администратор префектуры вам вежливо ответит что ваш запрос направлен в Муниципалитет (Model) и успешно выполнен. Пройдет доля секунды и все эти мужчины будут ждать вас на площади.
Что же произошло за эту долю секунды?
Давайте спустимся в архивы муниципалитета и узнаем это. Информация в архивах может хранится в разном виде, она может лежать на одной полке, а можем быть хорошо отсортирована.
Например: информацию о всех гостях города мы положим на эту полку, и информацию о тех гостях которые уже уехали мы завернем в красную папку, а тех которые первый раз в нашем городе завернем в зеленую, а информацию о мужчинах мы будем записывать на синей бумаге, а о женщинах на фиолетовой…
Если архитектура наших архивов разрабатывалась хорошими специалистами тогда за эту долю секунды мы очень просто и быстро найдем нужных нам людей, в противном случае наша доля секунды может вырасти в ужасные несколько секунд. Разработка такой архитектуры одна из основных задач бэкенд-разработчика.
Предположим мы зашли в архив фотографий и выбрав нужные мы хотим узнать кто на этих фотографиях изображен. Но что же делать? Архив «пользователей» находится на другом конце муниципалитета. Благодаря правильно написанному коду нам не нужно идти туда, мы можем просто перевернуть фотографию и на обратной стороне будут написаны имена всех кто на ней изображен. Примерно так и работают архивы.
Конечно, находясь в Префектуре мы не знаем что происходит в муниципалитете, тем более мы не узнаем этого и на площади. Однако сотрудники муниципалитета беспокоятся о времени гостей своего города и об их запросах.
Именно бэкенд часть ответственная за такие вещи, плюс ко всему город должен быть не только удобен для его жителей, но и для гостей. Поэтому каждый его кирпичик должен быть протестирован. И конечно же не стоит забывать про безопасность. Безопасность города зависит от того как устроена префектура. Там должны отличать злодеев от гостей.
В некоторых префектурах просят пароль, в некоторых номер телефона, а некоторые работают с банковскими картами и деньгами. Такая важная часть требует немалых знаний и такой же ответственности, именно поэтому Муниципалитету при основании города должно выделяться особое внимание.
Приведем еще один пример из жизни города. Предположим вы находитесь в городе уже очень долго и знаете всех его жителей, но к сожалению не знаете его гостей, ведь город расширяется и каждый день приходят новые гости. Возможно вы бы хотели каждый новый день знать сколько гостей сегодня появилось. Но вы же не можете ходить в префектуру так часто и спрашивать о появлении новых гостей. Это будет очень утомительно… Не беспокойтесь вам не нужно этого делать. Там побеспокоятся о том чтобы каждый день вы получали почтовых голубей в любой точке города, (а если хотите то и в любое время дня).
Это все малая часть того чем занимаются сотрудники Префектуры и Муниципалитета. Задача бэкенд разработчика настроить работу в этих административных зданиях, предугадать чего могут захотеть гости города или что им может помешать.
Мораль этой истории…
Подводя итог нашей сказке про город MyApp хочу отметить что бэкенд это неотъемлемая и основная часть любого веб-приложения, данные с которыми вы работаете в нем должны выглядеть хорошо и аккуратно, более того доступ к ним должен быть быстрым и безопасным, и конечно же сами данные должны быть спрятаны от злоумышленников.
Не считая основной задачи, перед разработчиком стоят вопросы расширяемости и гибкости приложения. Вы захотели добавить в ваше приложение регистрацию через фейсбук когда там уже 1 000 000 пользователей или наоборот удалить ее, а может быть сегодня вам нужно вводить новый язык интерфейса для вашего приложения, а вы и не думали об этом на стадии проектирования, при всех этих условиях приложение должно работать также как работало до кардинальных изменений, а иногда даже лучше, именно об этом и заботятся бэкенд разработчики.
Комментарии (2)
26 ноября 2016 в 03:39 (комментарий был изменён)
+1↑
↓
Слишком высокий уровень абстракции. Для такого уровня абстракции нужно добавить в статью побольше скобок
(
((
)
())
(()
)))
)26 ноября 2016 в 09:23
0↑
↓
и запятых