Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Это захватывающая 2D рогалик, аркадный шутер и динамичная игра. Исследуйте уникальные уровни, уничтожайте врагов, собирайте монеты и прокачивайте своего персонажа.

Подземелье дизлайков

Экшены, Аркады, Шутер

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
6
Dedero
4 месяца назад
Лига программистов

Rate limiter спасёт ваше приложение⁠⁠

Rate limiter спасёт ваше приложение IT, Интернет, Программирование, Backend, Длиннопост

Итак, ваше приложение падает под нагрузкой. Нужно что-то делать, но вертикальное масштабирование дорогое, горизонтальное сложное, а кэш уже не помогает? Rate limiter спешит на помощь!

Зачем и как?

Rate limiter тарифицирует количество запросов, чтобы вашим приложением не злоупотребляли боты или реальные люди. Помните тот момент, когда вы третий раз просите прислать смс у сервиса, а вам говорят, что пришлют только через какое-то время? Или вы несколько раз вводите неверно логин и пароль, а сервис в ответ просит подождать некоторое время? Rate limiter работает по похожему принципу, но у него под капотом может много больше алгоритмов, которые мы разберём.

Какие бывают?

Вообще, rate limiter может быть внешним или внутренним. Внешний работает как прокси, принимает запрос, делает обработку, отклоняет или передаёт запрос вашему приложению.

Rate limiter спасёт ваше приложение IT, Интернет, Программирование, Backend, Длиннопост

Внешний rate limiter

Внутренний rate limiter расположен внутри вашего приложения, может работать как middleware.

Rate limiter спасёт ваше приложение IT, Интернет, Программирование, Backend, Длиннопост

Внутренний rate limiter

Главное отличие в том, что внутренний может работать как библиотека на вашем языке программирования, либо вы сами можете его написать, а внешний может работать с любым стэком, особенно это актуально для приложений, которые написаны на скриптовых языках. Например, у вас приложение на php, а rate limiter написан на rust. Это даёт огромную производительность при небольших затратах.

Алгоритмы

Token Bucket

Rate limiter спасёт ваше приложение IT, Интернет, Программирование, Backend, Длиннопост

Работает так: есть ведро с токенами, оно пополняется с фиксированной скоростью, но есть потолок токенов, каждому запросу выдаётся токен. Если токенов не осталось, то есть ведро пусто, тогда запрос отклоняется.

Leaky Bucket

Rate limiter спасёт ваше приложение IT, Интернет, Программирование, Backend, Длиннопост

Тоже есть ведро, но худое, вода вытекает с постоянной скоростью. Если ведро становится полным, то есть наполняется запросами, то все лишние запросы отбрасываются.

Fixed Window

Rate limiter спасёт ваше приложение IT, Интернет, Программирование, Backend, Длиннопост

На определённый промежуток времени, окно, мы позволяем пройти определённому количество запросов, остальные отбрасываются.

Sliding Window

Rate limiter спасёт ваше приложение IT, Интернет, Программирование, Backend, Длиннопост

Отличается от предыдущего тем, что окно постоянно скользит во времени. Если Fixed Window на границах окна резко обнуляет лимит, то Sliding Window делает это плавно, двигаясь во времени, сглаживая нагрузку.

Это не все алгоритмы, но самые часто используемые, остальные вы можете разобрать сами.

А чтобы поиграть с рабочим rate limiter зайдите на мой гитхаб, я написал внешний rate limiter с этими 4 алгоритмами. Не забудьте поставить звёздочку.

Показать полностью 7
IT Интернет Программирование Backend Длиннопост
8
13
Dedero
4 месяца назад
Так себе работа

Как я устроился на валютную удалёнку⁠⁠

Привет, меня зовут Илья, занимаюсь разработкой бэкенд приложений.

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

Я не делал каких-то сверхусилий, просто рассылал резюме. В одно утро заметил, что на почте письмо, где меня приглашают на собеседование. Работодатель - небольшая аутсорсинговая компания.

Обычно по собеседованию можно определить насколько технически сильна компания. Это собеседование было достаточно жёстким, но без лайв-кодинга, ответы на некоторые вопросы я не знал, например, что PostgreSQL хранит в себе статистику времени запросов и можно определить самые долгие запросы, или, что есть не только физическое разделение (шардирование), но и логические разделение (партиции). В общем, интервью для меня оказалось полезным и я блеснул знаниями, но было несколько моментов, которые меня смутили, но не обратил на них внимания, а стоило. Я был так окрылён, что это валютная удалёнка, что совсем забыл о мерах предосторожности. Первое - это легаси проект с разными технологиями (ruby, elixir, go). Второе - это аутсорс, переходящий из рук в рук, стало быть там огромный технический долг.

После пары дней мне пришёл оффер, я также подумал пару дней и принял, предварительно договорившись, что мне понадобиться неделя, чтобы открыть ИП и расчётный счёт. Поскольку санкции актуальны, то ИП надо было открывать во внешнем контуре, выбирал между двумя странами: Грузия и Киргизия. В Грузии налог 1%, в Киргизии 2%, но поскольку я уже был в Киргизии и там остались незавершённые дела, то полетел туда. ИП открыл за день, открывают в момент обращения. С открытием расчётного счёта оказалось сложнее, большинство банков не хочет открывать счёт, если вы гражданин РФ и занимаетесь IT. В итоге открыл счёт в Doscredobank. Оглядываясь назад, понимаю, что если заранее знать все тонкости, то можно уложиться в один день - утром прилетел, сделал и вечером улетел.

Вернувшись на родину я радостный сообщил, что можем начинать работу. И начался онбординг, где неожиданно узнал, что работаем по трекеру - на свою машину надо установить тулзу, которая трекает время, активность (мышь, клавиатура), какие приложения и на какие сайты ходите, а также периодически делает скриншоты. Тогда я знатно приуныл сразу на встрече, мне стоило отказаться, но да, это тот самый эффект, когда вложил так много, что отказаться уже не можешь. Забегая вперёд скажу, что если у вас есть проблема с постоянным сменой контекста, то это может помочь, поскольку видно, что вы делаете, это держит в тонусе.

Вернёмся к проекту. Сервисы связаны между собой RabbitMQ, у некоторых отдельная БД, у кого-то базы данных нет совсем, но дублируют данные в S3 на случай сбоя, чтобы восстановить, и это также является пайплайном, то есть в одном сервисе сохранят в S3, в другом достают из S3. Используется и REST и Graphql для внешних и внутренних сервисов, для фронта и бэка. Есть своя БД с OpenStreetMap, но для гео-данных также используется несколько провайдеров. Всё это крутиться в Kubernetes. И над всем этим колдует только один разработчик, вторым был я.

Достаточно быстро я понял, что проект полумёртвый, дышит только за счёт искусственных средств. Readme давно не обновлялись, засетапить проект - уже боль, второй разработчик вместо докера всю инфру развернул локально, все его действия по сетапу нигде не описаны, пришлось потратить пару часов вместе с ним в лайве, чтобы просто запустить проект. Ну, и начались сыпаться задачи, которые я, вроде как, начал решать. Самое унизительно, помимо трекера, что "тестов мы не пишем", отлавливать баги надо из веб ui, а дебажить через REPL.

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

Несомненный плюс работы контрактором в том, что вы можете разорвать трудовые отношения одним днём. Теперь у меня открыто ИП и расчётный счёт в другой стране, всё также нет работы. И самое забавное, что после отправки денег по свифту, компании вернулись деньги, но на $50 меньше, а мой банк говорит, что перевод ему не поступал и вообще, разбирайся сам.

Парам-парам-пам.

Показать полностью
[моё] Программирование Backend IT Программист Удаленная работа Текст
13
pikabu.education
pikabu.education
5 месяцев назад
Серия Программирование

Топ-5 курсов по разработке на Go⁠⁠

Если вы хотите освоить язык программирования Go и построить карьеру в backend-разработке, то эта подборка курсов поможет вам выбрать оптимальный вариант обучения. Мы собрали курсы от ведущих онлайн-школ, где вы изучите основы языка, алгоритмы, многопоточность, работу с базами данных и создание микросервисной архитектуры. Каждый курс содержит практические задания, проекты и поддержку менторов, что поможет вам не только освоить теорию, но и подготовиться к реальной работе.

Мы тщательно анализируем плюсы и минусы каждого курса, опираясь на мнение пользователей как на нашей платформе, так и на других ресурсах. Изучите реальные отзывы студентов и найдите подходящий для вас курс на платформе Pikabu Курсы.

  • Курс «Go-разработчик с нуля» от Яндекс Практикум

  • Курс «Go (Golang) Developer Basic» от Otus

  • Курс «Go-разработчик» от Бруноям

  • Курс «GО‑разработчик» от Kata Academy

  • Курс «Backend-разработчик на Go» от Skillfactory

Топ-5 курсов по разработке на Go Онлайн-курсы, Golang, Backend, Длиннопост

Обзор курсов

1. Курс «Go-разработчик с нуля» от Яндекс Практикум
Вы научитесь программировать на языке Go, создавать REST API, работать с базами данных и многопоточностью, а также освоите основы Linux и CI/CD. Вы узнаете, как проектировать и тестировать веб-приложения, работать с Docker и настраивать автоматический деплой. Вы изучите ключевые инструменты разработчика, такие как Git, Postman, Docker Compose и GitHub Actions. Разберетесь в архитектуре веб-приложений и научитесь писать лаконичный и эффективный код. Ознакомитесь с реальными проектами и получите опыт работы с заказчиками, что поможет вам подготовиться к трудоустройству в IT.

Топ-5 курсов по разработке на Go Онлайн-курсы, Golang, Backend, Длиннопост

Цена: зависит от тарифа.
Длительность: зависит от тарифа.
Подробности:

  • программа регулярно обновляется;

  • практическая направленность;

  • бесплатный вводный модуль позволяет попробовать себя в роли Go-разработчика до оплаты;

  • изучение не только языка Go, но и смежных технологий (HTTP, SQL, Docker, CI/CD, Linux);

  • включена подготовка к трудоустройству, помощь в составлении резюме и портфолио, а также поддержка HR-экспертов;

  • возможность работать над задачами от настоящих заказчиков и участвовать в хакатонах;

  • онлайн-тренажер и YandexGPT для объяснения сложных тем;

  • диплом о профессиональной переподготовке;

  • некоторые модули требуют значительного времени (например, 118 часов на основы Go), что может быть сложно для совмещения с работой;

  • 50 часов на итоговый проект и самостоятельные задания требуют высокой мотивации и самодисциплины;

  • нашли отзыв с жалобой на содержание некоторых модулей.

Посмотреть программу курса >>>

2. Курс «Go (Golang) Developer Basic» от Otus
Вы научитесь программировать на языке Go с нуля, освоите его синтаксис, многопоточность и конкурентность, а также узнаете, как работать с базами данных, сетями и микросервисами. Вы изучите инструменты разработчика, такие как Git, Docker, OpenAPI, Swagger и gRPC, и разберетесь, как создавать и тестировать проекты на Go. Вы ознакомитесь с алгоритмами и структурами данных, а также получите практический опыт, разрабатывая итоговый проект, который станет частью вашего портфолио.

Топ-5 курсов по разработке на Go Онлайн-курсы, Golang, Backend, Длиннопост

Цена: 71 000 ₽
Цена со скидкой: 63 900 ₽
Длительность: 5 месяцев.
Подробности:

  • подходит для разных уровней;

  • практическая направленность;

  • изучение не только языка Go, но и смежных технологий (Docker, Git, PostgreSQL, Redis, MongoDB, gRPC, OpenAPI);

  • вебинарный курс, но вебинары доступны в записи, что позволяет учиться в удобное время;

  • охватывает современные инструменты и подходы;

  • поддержка карьерного центра и доступ к сообществу разработчиков;

  • дополнительные занятия по алгоритмам, что полезно для собеседований;

  • требует выполнения множества домашних заданий, что может быть сложно при совмещении с работой;

  • для успешного прохождения курса требуется высокая мотивация и самодисциплина;

  • налоговый вычет.

Посмотреть программу курса >>>

3. Курс «Go-разработчик» от Бруноям
Вы научитесь программировать на языке Go, начиная с основ: установка среды, работа с переменными, циклами, функциями и структурами. Вы узнаете, как создавать REST API, работать с HTTP-запросами, базами данных (PostgreSQL) и многопоточностью (горутины, каналы, синхронизация). Вы изучите Git для управления версиями, Docker для настройки окружения и паттерны проектирования для создания масштабируемых приложений. Вы разберетесь с тестированием (unit-тесты, бенчмарки) и Agile-методологиями, а также разработаете финальный проект, который станет частью вашего портфолио. Ознакомитесь с основами Linux и конфигурированием веб-серверов.

Топ-5 курсов по разработке на Go Онлайн-курсы, Golang, Backend, Длиннопост

Цена: 83 100 ₽
Цена со скидкой: 49 900 ₽
Длительность: 3 месяца.
Подробности:

  • обновляется каждые 3 месяца, что гарантирует изучение современных технологий и подходов;

  • много практических заданий и финальный проект для портфолио;

  • изучение не только Go, но и смежных технологий (Git, Docker, PostgreSQL, REST API, многопоточность, тестирование);

  • онлайн-встречи с преподавателями, чат в Telegram для обсуждения вопросов и решения задач;

  • помощь в поиске работы, включая разборы вопросов и поддержку в создании портфолио;

  • 10-12 человек в группе;

  • изучение Agile-методологий (Scrum, Kanban) и тестирования в agile-командах;

  • требует выполнения множества заданий и участия в вебинарах, что может быть сложно при совмещении с работой;

  • для успешного прохождения требуется высокая мотивация и самодисциплина;

  • налоговый вычет.

Посмотреть программу курса >>>

4. Курс «GО‑разработчик» от Kata Academy
Вы научитесь программировать на языке Go с нуля, освоите его синтаксис, многопоточность (горутины и каналы), а также узнаете, как создавать REST API, работать с базами данных (PostgreSQL, Redis) и микросервисной архитектурой. Вы изучите паттерны проектирования, оптимизацию кода и инструменты мониторинга (Grafana, Prometheus). Вы разберетесь с Docker, Kubernetes и Event-driven архитектурой, а также получите опыт командной разработки, работая над реальным проектом. Ознакомитесь с подготовкой к собеседованиям и получите поддержку в трудоустройстве.

Топ-5 курсов по разработке на Go Онлайн-курсы, Golang, Backend, Длиннопост

Цена: оплата после трудоустройства.
Длительность: 9 месяцев.
Подробности:

  • вы платите только после того, как устроитесь на работу (17% от зарплаты в течение 24 месяцев), хотя это плюс, для некоторых может быть минусом, так как 17% от зарплаты в течение 2 лет — это значительная сумма;

  • много домашних заданий, командный проект и стажировка, которые можно добавить в портфолио;

  • изучение не только Go, но и смежных технологий (Docker, Kubernetes, PostgreSQL, Redis, Kafka, gRPC, Swagger);

  • опыт работы в команде с использованием инструментов (Jira, Confluence, GitLab) и код-ревью;

  • помощь в составлении резюме, подготовке к собеседованиям и поиске работы;

  • изучение микросервисной архитектуры, Event-driven архитектуры и инструментов мониторинга (Grafana, Prometheus);

  • задания, такие как создание банковского приложения или конвертера валют, приближены к реальным проектам;

  • много практических заданий и проектов, что требует значительного времени и усилий;

  • для успешного прохождения требуется высокая мотивация и самодисциплина.

Посмотреть программу курса >>>

5. Курс «Backend-разработчик на Go» от Skillfactory
Вы освоите профессию backend-разработчика на Go и получите навыки, востребованные в крупных IT-компаниях. Изучите язык программирования Go, алгоритмы, многопоточность, базы данных, REST API, архитектуру приложений и основы DevOps. Научитесь писать высоконагруженные сервисы, разрабатывать микросервисные приложения и упаковывать проекты в контейнеры. В процессе обучения вы создадите несколько практических проектов, включая новостной агрегатор, и подготовитесь к собеседованиям на позицию Go-разработчика.

Топ-5 курсов по разработке на Go Онлайн-курсы, Golang, Backend, Длиннопост

Цена: зависит от тарифа.
Длительность: 12 месяцев.
Подробности:

  • практико-ориентированный подход;

  • подготовка к собеседованиям, тренировка алгоритмов и реальных кейсов из IT-индустрии;

  • помощь в трудоустройстве;

  • пошаговое изучение всех ключевых тем backend-разработки на Go;

  • финальный проект с микросервисной архитектурой для портфолио;

  • возможность стажировки и рекомендаций работодателям;

  • может быть сложно для пользователей без опыта в программировании;

  • теоретические блоки короткие, но требуют самостоятельного изучения дополнительных материалов;

  • диплом о профессиональной переподготовке установленного образца;

  • доступ к материалам курса навсегда;

  • нашли отзыв с жалобой на содержание некоторых модулей.

Посмотреть программу курса >>>

Реклама. ООО «ЯНДЕКС», ИНН: 7736207543, erid: 5jtCeReNwxHpfQTDve31wmc, ООО Отус онлайн-образование, ИНН 9705100963, erid: LdtCJyCA3, ООО БРУНОЯМ, ИНН 7840502496, erid: LdtCK4uLs, ООО «Ката Академия», ИНН 7802925162, erid: 5jtCeReNwxHpfQTFQcF9VVm, ООО Скилфэктори, ИНН 9702009530, erid: LdtCK5EkP.

Показать полностью 6
Онлайн-курсы Golang Backend Длиннопост
42
7838
rovercrimea
rovercrimea
5 месяцев назад
Скриншоты комментов

А ты с какой стороны дедлайна?⁠⁠

#comment_341682400

А ты с какой стороны дедлайна? Комментарии на Пикабу, Скриншот, Backend, Дедлайн
Показать полностью 1
Комментарии на Пикабу Скриншот Backend Дедлайн
127
5223
KOPOBOPOTEHb
KOPOBOPOTEHb
5 месяцев назад
Противозачаточные шутки

Девушка хочет в бэкэнд⁠⁠

Девушка хочет в бэкэнд Из сети, Юмор, Мужчины и женщины, Backend, Скриншот, Комментарии
Показать полностью 1
Из сети Юмор Мужчины и женщины Backend Скриншот Комментарии
216
3
DropTrigger
DropTrigger
5 месяцев назад
Серия Записки вкатуна

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT)⁠⁠

Термины в статье:

  1. Эндпоинт

  2. Аутентификация, Регистрация, JWT, Access, Refresh

К стеку добавился:

  • Vue.js

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Дописываю API

Потратив 2 ночи (и немного терпения), я наконец завершил реализацию всех эндпоинтов! В какой-то момент это очень наскучило, но я все равно продолжал писать их.

Как выглядят эндпоинты в этой статье - Создаю онлайн-сервис для чтения книг. День 4. Обработка первого запроса.

Архитектура папок теперь выглядит вот так:

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Всего реализовано 38 эндпоинтов , и это еще не конец — их количество будет расти! Последний из них ощущался как будто я пробежал марафон.


Разработка дизайна 🎨

Но как делать веб без дизайна? Верно, никак! 🤔
Зайдя в Figma и подсмотрев интерфейс GitHub'а , я накидал ориентировочный дизайн страниц регистрации и входа.

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост
Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Верстка 🖥️

Верстка — это немного рутинное занятие, но результат того стоит!
Могу сказать, что получилось почти идентично дизайну.

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Frontend с Vue.js

Почему Vue.js ? Просто такие условия 🙃. Если бы выбор был за мной, я бы взял React .

Добавлю в решение новый проект Веб-приложение ASP.NET Core (MVC) . Стандартный шаблон создаст такие папки:

  • wwwroot
    Это корневая папка для статических файлов, которые будут доступны напрямую через браузер.

  • Controllers
    Папка содержит классы контроллеров, которые управляют маршрутизацией.

  • Models
    Папка содержит модели данных, которые представляют сущности приложения.

  • Views
    Папка содержит представления — файлы, которые отвечают за отображение HTML-страниц пользователю.

В папку wwwroot/lib добавлю клиентскую библиотеку Vue.js .

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Создам новый контроллер для страниц аутентификации.

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

В папке Views есть еще 2 папки:

  • Home

  • Shared

В папку Shared добавлю новый шаблон страницы Razor с названием _LoginLayout для страниц аутентификации.

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Создам папку Auth, добавив туда пустую страницу Razor с названием _ViewStart. Этот файл указывает какой шаблон будут использовать страницы.

@{

Layout = "_LoginLayout";

}

Теперь закину в wwwroot/css свой файл со стилем, который наверстал.


Логика фронтенда 🧠

Начну со страницы входа, добавив HTML-разметку, которую наверстал.

Снизу файла напишу блок скриптов:

@Section scripts {

<script src="~/lib/vue/vue.global.js"></script>

<script>

...тут будут все скрипты...

</script>

}

Пример запроса на бэкенд:

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

На скрине показан метод ассинхронный метод login(), в нем реализована отправка запроса на эндпоинт /auth/login, если запрос проходит успешно, я записываю Access-токен в локальное хранилище и перенаправляю пользователя на страницу по адресу /home. В противном случае я показываю ошибку пользователю.

В ответе сервера я получаю Access и Refresh токены.

  • Access-токен записываю в локальное хранилище.

  • Refresh-токен храню в Http-only куках для большей безопасности 🛡️.

Пример записи куки на сервере:

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Здесь я записал новую куку с под названием refreshToken, и значением, равным Refresh-токену.

Вообще для чего мне Refresh-токен, если есть Access? Все очень просто, у Access-токена срок жизни 15 минут, поэтому через 15 минут его необходимо будет сгенерировать заново. Для этого как раз и понадобится Refresh-токен.

По истечению Access-токена я буду посылать на сервер запрос со своими куками. Сервер прочитает Refresh-токен из них и, если он валидный, вернет новый Access-токен.

Как это реализовано со стороны сервера:

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Со стороны клиента:

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

При загрузке страницы сразу же срабатывает метод checkRefreshToken, далее отправляется запрос на /auth/refresh. Если сервер возвращает положительный ответ, записываю новый Access в локальное хранилище и продолжаю пользоваться сервисом.

Тестирование 🧪

Запущу бэкенд и фронтенд.

После запуска я сразу попадаю на страницу входа.

Войду в аккаунт, который я создвал еще на начальных этапах.

Если сейчас обратиться по адресу /home, меня перекинет назад на страницу авторизации.

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Попробую сначала ввести неправильный пароль.

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Теперь введу правильный пароль. Все сработало! Я попал на домашнюю страницу.

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Зайдя в консоль разработчика, можно посмотреть локальное хранилище и найти там Access-токен.

Создаю онлайн-сервис для чтения книг. День 6-9. CRUD, Дизайн+Верстка, Frontend(JWT) Разработка, Программирование, Aspnet, Frontend, Backend, Длиннопост

Теперь я могу пользоваться сервисом, отправляя запросы на эндпоинты, передавая данный токен в заголовке.

Показать полностью 15
[моё] Разработка Программирование Aspnet Frontend Backend Длиннопост
3
1
DELETED
5 месяцев назад
Лига программистов

Функциональная масштабируемость: что это и как ее достичь⁠⁠

В мире разработки важно не только создавать системы, которые работают здесь и сейчас, но и проектировать их так, чтобы они оставались эффективными по мере роста нагрузки. Именно с этой задачей помогает справиться функциональная масштабируемость (Functional Scaling).

Что такое функциональная масштабируемость?
Функциональная масштабируемость — это подход к проектированию систем, при котором большая система делится на независимые модули или сервисы. Каждый модуль отвечает за свою конкретную функцию и может масштабироваться автономно, без влияния на другие части системы.

💡Ключевая идея: вы не добавляете ресурсы всей системе целиком, а сосредотачиваетесь на отдельных частях, которые нуждаются в увеличении мощности.

Почему это важно?
1️⃣ Экономия ресурсов. Масштабируя только загруженные модули, вы не тратите деньги на те части системы, которые работают в штатном режиме.
2️⃣ Гибкость. Вы можете использовать разные подходы для разных модулей в зависимости от их задач.
3️⃣ Устойчивость. Проблемы в одном модуле не затрагивают работу всей системы.

Основные подходы к реализации
🔸 Микросервисная архитектура.
Система разбивается на множество небольших сервисов, каждый из которых выполняет одну задачу и может масштабироваться отдельно.
💡 Пример: в интернет-магазине сервис обработки заказов можно масштабировать отдельно от сервиса рекомендаций.

🔸 Асинхронное взаимодействие между модулями.
Использование асинхронного обмена данными между модулями позволяет разгрузить систему и ускорить выполнение задач.
💡 Пример: вместо ожидания ответа от сервиса платежей модуль заказов ставит задачу в очередь и продолжает работу.

🔸 Использование очередей сообщений.
Очереди сообщений (например, RabbitMQ, Kafka) помогают организовать взаимодействие между модулями, чтобы избежать перегрузки и сбалансировать нагрузку.
💡 Пример: сервис обработки изображений получает задачи из очереди и обрабатывает их, не перегружая систему.

🔸 Serverless-архитектура для изолированных задач.
Serverless (например, AWS Lambda, Google Cloud Functions) подходит для задач, требующих обработки большого числа событий или коротких операций.
💡 Пример: при загрузке файла serverless-функция может автоматически обрабатывать его (например, сжимать или анализировать) без необходимости держать постоянный сервер.

Преимущества функциональной масштабируемости
✔️ Повышение производительности: вы можете оперативно масштабировать только те части системы, которые испытывают нагрузку.
✔️ Устойчивость к сбоям: изолированные модули упрощают локализацию и устранение проблем.
✔️ Ускорение разработки: команды могут работать над отдельными модулями независимо друг от друга.

Заключение
Функциональная масштабируемость — это путь к созданию современных, эффективных и устойчивых систем. Выбор подхода зависит от задач вашей системы, но главное правило остается неизменным: разделяйте и властвуйте!

#scaling #технологии #backend

Функциональная масштабируемость: что это и как ее достичь Кросспостинг, Технологии, Backend, Длиннопост
Показать полностью 1
Кросспостинг Технологии Backend Длиннопост
2
Партнёрский материал Реклама
specials
specials

Только каждый третий пикабушник доходит до конца⁠⁠

А сможете ли вы уложить теплый пол, как супермонтажник?

Проверить

Ремонт Теплый пол Текст
DELETED
5 месяцев назад
Лига программистов

Горизонтальная масштабируемость: ключ к мощным системам⁠⁠

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

Что такое горизонтальная масштабируемость?
Горизонтальная масштабируемость (Horizontal Scaling) — это способ увеличения мощности системы за счёт добавления новых серверов. Вместо того чтобы "усиливать" один сервер, нагрузка распределяется между несколькими узлами, работающими параллельно.
Пример: если сервер обрабатывает 10 000 запросов в секунду, но вам нужно обрабатывать 30 000, вы добавляете ещё два сервера, и каждый из них берёт свою долю.

Как это работает?
1️⃣ Балансировка нагрузки
Балансировщик равномерно распределяет запросы между всеми доступными серверами. Это защищает систему от перегрузки.
2️⃣ Распределение данных
Данные делятся между узлами с помощью шардирования или репликации, что ускоряет доступ к ним.
3️⃣ Кэширование
Популярные данные сохраняются в распределённом кэше, чтобы уменьшить нагрузку на базу данных.
4️⃣ Облачная инфраструктура
В облаке можно динамически добавлять или удалять ресурсы в зависимости от текущей нагрузки.

Преимущества
✅ Неограниченный рост производительности
Чем больше серверов, тем больше запросов система может обработать.
✅ Отказоустойчивость
Если один сервер выходит из строя, другие продолжают работать.
✅ Гибкость
Легко добавлять или убирать мощности по мере необходимости.

Минусы
❌ Сложность управления
С увеличением количества узлов система становится сложнее в администрировании. Требуется настройка и поддержка балансировщиков, распределённых баз данных и кэшей.
❌ Задержки при синхронизации
При работе с распределёнными данными может возникать задержка из-за необходимости синхронизации между серверами.
❌ Увеличение расходов
Каждый новый узел требует дополнительных затрат на инфраструктуру, лицензии и мониторинг.
❌ Повышенные требования к архитектуре
Для правильной работы системы нужно учитывать особенности горизонтального масштабирования на этапе проектирования.

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

#scaling #технологии #backend

Горизонтальная масштабируемость: ключ к мощным системам Кросспостинг, Технологии, Backend
Показать полностью 1
Кросспостинг Технологии Backend
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии