Присоединяйтесь к нашему каналу и погрузитесь в мир Backend-разработки Связь: @devmangx РКН: https://clck.ru/3FobxK
Создайте минимальный сервис экзаменов на Go, чтобы изучить униарные, серверные потоковые, клиентские потоковые и двунаправленные gRPC-вызовы с использованием Protocol Buffers
⏩руководство
👉 @BackendPortal
Журналы предзаписи (WAL) повсюду — и делают больше, чем ты думаешь.
WAL решают одни из самых сложных задач в системах с сохранением состояния.
Это не просто «полезная фича» — именно благодаря журналам твоя БД не теряет данные при внезапном отключении света 😐
1. Надёжность
Прежде чем применить изменения, система сначала пишет их в лог на диск.
Продолжает работу только после того, как лог точно записан.
Это гарантирует, что данные останутся даже если всё внезапно рухнет.
—> Например, PostgreSQL всегда сначала сбрасывает WAL, а уже потом делает COMMIT
2. Восстановление после сбоя
Если база упала посреди записи — данные могут быть повреждены.
WAL позволяет при старте восстановить корректное состояние, просто проиграв лог.
3. Репликация
Когда система распределённая — нужен единый поток изменений.
WAL — это такой поток. Его читают реплики, чтобы быть в курсе всех апдейтов.
⏩MongoDB использует для этого oplog
⏩Kafka — вообще сам по себе лог
4. Быстродействие
Запись в лог — последовательная, без случайного доступа, значит очень быстрая.
Изменения копятся, пишутся пачкой и поехали дальше.
Лог — компактный, упорядоченный, легко читается.
Как это работает:
1. Пришёл запрос на insert / update / delete
2. Сначала — запись в лог (append-only)
3. Как только лог сброшен на диск — операция считается принятой
4. Потом, уже спокойно, изменения попадают в основные данные
WAL — это не только способ защиты от сбоев. Это фундаментальный подход к проектированию.
Если представить систему как поток логируемых событий — репликация, восстановление и отказоустойчивость становятся проще
Как устроена единая видеоплатформа VK? 🎦
Команда VK Видео собирает разработчиков на большой митап, где расскажет про единую видеоплатформу: её технологии, доставку контента через CDN, улучшение качества видео и амбициозные задачи команды на этот год.
Алексей Шпагин, руководитель разработки бэкенда видеоплатформы VK, подробно разберёт оригинальные разработки, лежащие в её основе, и жизненный цикл контента на ней — от загрузки и обработки ролика до отдачи пользователю.
Регистрируйтесь, ставьте лайки и пересылайте новость коллегам!
Яндекс Вертикали зовут талантливых и неравнодушных разработчиков на Java и Scala в Авто.ру, Яндекс Недвижимость, Аренду и Путешествия
Ищут тех, кто будет помогать миллионам пользователей превращать мечты в реальность через технологии: будь то идеальная машина, уютная квартира или долгожданная поездка.
Набирают через буткемп: вы проведёте 2 недели с каждой командой и выберете ту, которая будет по душе.
Чем предстоит заниматься:
— Развивать по-настоящему масштабный бизнес, понятный каждому, кто хоть раз ездил в отпуск, искал жильё или покупал машину
— Решать продуктовые и инфраструктурные задачи
— Создавать и поддерживать ПО: от написания до выкладки в продакшн
Формат работы: гибрид / офис в Москве, Петербурге и Екатеринбурге.
Что важно: опыт коммерческой разработки на Java/Scala от 3-х лет или готовность перейти с другого языка программирования, знание классических алгоритмов и структуры данных, умение проектировать системы.
Из бенефитов — все плюшки Яндекса: от расширенной программы ДМС до гибкого графика и спорта.
Откликнуться:
Java-разработчик в буткемп Вертикалей
Разработчик на Scala в буткемп Вертикалей
Что такое quadtree (квадродерево)?
Квадродерево — это структура данных, которая эффективно управляет двумерными пространствами, такими как карты.
Например, Google Maps использует её в своей библиотеке SDK для поиска ориентиров и точек интереса в заданной области.
Квадродеревья основаны на древовидной структуре, где каждый узел делит двумерное пространство на четыре квадранта.
Корневой узел представляет собой всю карту.
Затем деление продолжается рекурсивно в каждом узле до тех пор, пока каждый квадрант не удовлетворит определённым условиям.
Обычно в качестве условия остановки используется наличие в квадранте определённого количества точек интереса.
С квадродеревьями поиск точек интереса становится очень эффективным:
⏩Построить квадродерево в памяти сервера
⏩Начать поиск с корневого узла, спускаясь к нужному конечному узлу
⏩Добавить точки интереса из конечного узла в результат
⏩Расширить поиск на соседние квадранты, если найденных точек недостаточно
Построение квадродерева на большом наборе данных — ресурсоёмкая операция, которая может занять несколько минут.
Поэтому даже если дерево умещается в памяти одного сервера, лучше распределить нагрузку между несколькими серверами для обработки обновлений.
Это позволит обновлять и перезапускать их по очереди 😐
👉 @BackendPortal
Простое объяснение того, как работает Kubernetes
Пошагово, по делу, без воды
PDF, который должен быть у каждого девелопера под рукой 🏴☠️
👉 @BackendPortal
9 HTTP-методов
1. GET
Читает данные без их изменения.
Безопасный и идемпотентный — повторный запрос возвращает тот же результат.
2. POST
Создаёт новые ресурсы.
Не является идемпотентным — повтор может привести к дублированию данных.
3.PUT
Создаёт или полностью заменяет ресурс по известному URL.
Идемпотентный, идеально подходит для полных обновлений.
4. PATCH
Используется для частичных обновлений, изменяя только нужные поля.
5. DELETE
Удаляет ресурс.
Идемпотентный — повторное удаление не приведёт к ошибке. Часто используется в API для удаления записей.
6. HEAD
Как GET, но возвращает только заголовки (без тела ответа).
Удобен для проверки наличия ресурса или метаданных.
7. OPTIONS
Показывает доступные HTTP-методы для ресурса.
Часто используется для CORS preflight-проверок.
8. CONNECT
Устанавливает туннель — в основном используется для HTTPS через прокси.
9. TRACE
Возвращает полученный сервером запрос "как есть".
Нужен в основном для отладки
👉 @BackendPortal
Формошлёп — сотни хаков для фронтендеров в одном месте
Никакой скучной теории, воды и прочей шляпы, только практические примеры, которые работают.
👉 Подписывайся на @frontbox — стань тем, кто знает, как решить проблему, пока остальные ищут ответ на Stack Overflow.
Большая актуальная базу бесплатных API, которая обновляется ежедневно
Тут собрано аж 363 бесплатных API на все случаи жизни: от игр и погоды до финансов и здоровья.
Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика
Если API перестает работать или становится платным, он теряет рейтинг и удаляется с сайта
Переходите и смотрите сами: https://www.freepublicapis.com/
👉 @BackendPortal
Ищешь удобную альтернативу Kubernetes Dashboard?
Встречай Headlamp —> мощный open-source интерфейс для управления кластерами
⏩Просмотр всех ресурсов (Pods, Services, ConfigMaps и др.)
⏩Поддержка нескольких кластеров
⏩WebSocket для обновлений в реальном времени
⏩Подключение CRD и кастомных API
⏩Расширяется плагинами
Работает локально, в облаке и легко запускается через Docker или в Pod 😮
👉 @BackendPortal
Обзор рабочего процесса Docker 👆
Полезнo, если только осваиваешь Docker и не до конца понимаешь весь цикл работы
👉 @BackendPortal
⚡️ Айтишник из «VISION» скупил курсы айти школ и выложил гигабайты материалов к себе
Каждый найдет что-то по душе:
1202 ГБ — Python
1811 ГБ — Frontend
1100 ГБ — C / C++ / C#
804 ГБ — Java
411 ГБ — SQL & БД
309 ГБ — DevOps
998 ГБ — ИБ & Хакинг
773 ГБ — Kotlin / Swift
189 ГБ — PHP
201 ГБ — GoLang
170 ГБ — Rust
167 ГБ — QA / Тестирование
310 ГБ — 1C + Лицензии
495 ГБ — Машинное обучение
704 ГБ — Аналитика Данных
991 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
Классическая демонстрация работы бинарного поиска — алгоритма, который делит массив пополам, чтобы быстро находить нужный элемент 😍
👉 @BackendPortal
🔒 8539 ГБ платных материалов для программистов выложили в Telegram
Выбирай нужное и обучайся:
🖥 817 ГБ – Frontend
🖥 981 ГБ – Backend
🖥 724 ГБ – Python
👮♀ 644 ГБ – Хакинг и ИБ
🖥 5373 ГБ – Все направления IT
Вход открыт ровно 48 часов 🕔
Принёс вам приятную лекцию про объектно-ориентированное программирование (ООП) в Python на русском!
— Что такое ООП;
— Классы и зачем они нужны;
— Достоинства и недостатки механизма ООП;
— Конструктора класса;
— Основные понятия в ООП: объекты, наследование, инкапсуляция, полиморфизм и д.р.
👉 @BackendPortal
Если вы обрабатываете HTTP-запросы в Go, gzip-сжатие — это имба для снижения трафика и ускорения отклика
Пакет encoding/gzip
позволяет легко это реализовать, но есть подводные камни.
Вот на что стоит обратить внимание при добавлении gzip-сжатия в веб-сервер:
⏩Обязательно проверяйте заголовок Accept-Encoding — не всем клиентам нужно сжатие
⏩Проставляйте заголовок Content-Encoding: gzip в ответе
⏩Не сжимайте уже сжатые форматы (например, JPEG, MP4) — смысла нет
⏩Используйте sync.Pool
для повторного использования gzip.Writer
— это экономит ресурсы и ускоряет работу
На фото — пример реализации через middleware
👉 @BackendPortal
Нашёл огонь-туториал, где разжёвывают, как работают B-деревья и индексы баз данных
Автор доходчиво объясняет, зачем эти структуры в СУБД, как выбор ключа влияет на производительность, и раскрывает механику работы индексов.
Особый кайф — интерактивные примеры: можно добавлять ключи и наблюдать, как данные распределяются по веткам
Годнота, которую не стыдно отправить другу-программисту 😳
Ловите: https://planetscale.com/blog/btrees-and-database-indexes
👉 @BackendPortal
Dokploy — open-source PaaS без облаков и подписки
Управляй деплоем, как хочешь — без подписок, облаков и ограничений. Dokploy — это open-source платформа, которую ты разворачиваешь у себя. Полный контроль. Минимум настроек.
Что даёт Dokploy:
⏩Поддержка Node.js, Python, Go, PHP и других
⏩Docker & Docker Compose
⏩Готовые шаблоны: Supabase, Cal .com, Pocketbase
⏩Системный мониторинг — CPU, RAM, диск, сеть
⏩Базы: PostgreSQL, MySQL, MongoDB, Redis
⏩Резервные копии, масштабирование, деплой на удалённые сервера
⏩ Slack / Telegram / Email-уведомления
⏩ CLI + API для автоматизации процессов
Установи за минуту: curl -sSL https://dokploy.com/install.sh | sh
👉 @BackendPortal
CI и CD расшифровываются как непрерывная интеграция и непрерывная доставка
Проще говоря, непрерывная интеграция (CI) — это методика, при которой инкрементные изменения кода регулярно и стабильно вносятся в систему. Обновления кода, объединённые в основной репозиторий, проходят автоматические процедуры сборки и тестирования, инициируемые CI, что делает их надёжными. Затем код оперативно и эффективно развёртывается в рамках процесса CD 🤔
CI/CD-конвейер (CI/CD pipeline), используемый в индустрии разработки ПО, — это автоматизированный процесс, который позволяет разработчикам стабильно доставлять изменения от локальных машин до тестовых и продуктивных сред.
CI/CD также часто включает в себя непрерывное развёртывание, что означает автоматическое размещение кода, прошедшего через репозиторий, непосредственно в продуктиве. Все эти взаимосвязанные практики обычно называются CI/CD-конвейером, и часто реализуются в рамках подходов DevOps или SRE.
Преимущества CI/CD-конвейера:
🟡Повышение качества кода
🟡Улучшение командной работы
🟡Гибкость и надёжность систем
Этапы CI/CD-конвейера могут включать:
⏩Получение кода из системы контроля версий и его сборка
⏩Этапы согласований (staged gates) для разных типов проверок
⏩Управление переменными окружения
⏩ Перезапуск сервисов
⏩Выполнение тестов
⏩И многое другое...
Популярные CI/CD-инструменты:
—> Jenkins
—> TeamCity
—> CircleCI
—> Bamboo
—> GitLab
—> Azure DevOps
Как выбрать облачный CI/CD-инструмент
—> Он должен плотно интегрироваться с вашими репозиториями.
—> Храните пайплайны и конфигурации в системе контроля версий, а не только внутри CI/CD-инструмента.
—> Используйте инструменты вроде Docker, поддерживающие нужные вам языки, фреймворки и контейнеры.
—> Убедитесь, что команда понимает, как работает CI/CD и как использовать выбранный инструмент — некоторые платформы проще в освоении, чем другие.
—> Не обязательно стандартизировать один инструмент на все проекты — разные технологические стеки могут требовать разные пайплайны.
👉 @BackendPortal
Освой сети и командную строку с лучшими обучающими каналами
🤩 Network Admin - обучающий канал по сетевым технологиям
🤩 Network Admin | Guides - канал, где рассказывают полезную информацию про Windows/Linux
📱 BashTex - обучение работе с командной строкой
Kubernetes лучшие практики
В этом блоге рассказывается о 10 лучших практиках проектирования и настройки кластеров — чекнуть
😊
👉 @BackendPortal
Большинство систем выходят из строя не из-за плохого кода
Они ломаются из-за слабой архитектуры под нагрузкой.
Высокая доступность — это не магия. Это архитектура.
В обсуждении доминируют два шаблона: отказоустойчивость и репликация
Вот в чём проблема — многие команды бросаются этими терминами, не понимая компромиссов
➤ Отказоустойчивость (Failover) — это переключение на резервную систему, когда основная выходит из строя
Active-Active: Все узлы обрабатывают трафик. Если один выходит из строя, другие продолжают работу.
Плюсы: отсутствие простоя, высокая загрузка ресурсов
Минусы: сложная координация, риск гонок (race conditions)
Active-Passive: Один узел работает, другой в режиме ожидания.
Плюсы: проще в управлении, меньше конфликтов
Минусы: простой при переключении, возможная потеря данных при отставании репликации
➤ Репликация — это наличие одних и тех же данных в нескольких местах
С одним лидером (Single-Leader): Один узел записывает, остальные читают.
Плюсы: проще обеспечить согласованность
Минусы: узкое место при записи, задержки на репликах для чтения
Много лидеров (Multileader): Несколько узлов могут записывать.
Плюсы: можно записывать с любого узла, выше доступность
Минусы: конфликты данных, сложное разрешение расхождений
Что это значит для тебя 🤔
—> Не думай, что репликация исключает потерю данных.
—> Не думай, что отказоустойчивость гарантирует отсутствие простоев.
—> Не выбирай шаблон по популярности — выбирай по допустимому времени восстановления, задержкам и требованиям к согласованности.
Хорошая архитектура — это не про аптайм. Это про контролируемый отказ.
Если ты не понимаешь компромиссы, твоя система не так "доступна", как тебе кажется.
Один вопрос: от чего твоя система сегодня не сможет оправиться? ☕️
👉 @BackendPortal
Совет по Linux
Представь, что в системе всего 2 ГБ оперативной памяти, а приложению нужно 3 ГБ. Без swap-пространства этот процесс завершится сбоем, потому что не хватает доступной памяти.
Однако с использованием swap
ОС может переместить неактивные данные в эту зону переполнения, освободив место для приложения 🍪
Таким образом, swap
действует как страховка, позволяя системе справляться с ресурсоёмкими задачами даже при ограниченной оперативной памяти.
Хотя swap
не так быстр, как физическая оперативная память, в таких ситуациях он может спасти положение
👉 @BackendPortal
🇷🇺Подрабатываешь настройкой wifi? Патриот, при этом хочешь заработать?
Есть работа по профилю на юге Курской области!
🇷🇺Условия:
- Заработная плата 178 000 рублей на руки;
- По результатам выполнения боевых задач, дополнительная премия;
- Проживание, питание, обмундирование за счет компании;
- Обучение и переквалификация за счет компании;
- Страховые выплаты;
- Официальное трудоустройство (трудовой договор, полный соц.пакет);
🇷🇺Присоединяйся к Сталинским Соколам!🇷🇺
Подать заявку - @pilot_sokol
Подробная информация - сталинские-соколы.su
Рассказываем на примере блочных устройств нового облака MWS.
➡️Читайте новую статью на Хабр в хабе "Разработка публичных облаков".
Вы узнаете:
🔴 Как декларативный API облегчает управление циклами реконсиляции
🔴 На каких компонентах и технологиях написали управление циклами
🔴 Как работают межсервисные нотификации об изменении ресурсов
Подписаться на хаб
Твой фронтенд и бэкенд находятся в разных репозиториях?
Не проблема — ты всё равно можешь собрать и доставить всё в одном Docker-образе.
👉 @BackendPortal
Наткнулся на нагляднейшую схему — вот прям визуально показывает, как передаётся инфа по сети. От тебя → к другому устройству.
🍩Кликаешь в браузере — пошли данные (уровень 7)
🍩Данные оборачиваются в заголовки (headers) на каждом уровне. Это называется инкапсуляция.
🍩Внизу уже летят по сети нули и единицы (уровень 1)
🍩На стороне получателя — всё разворачивается обратно (деинкапсуляция)
🍩И вуаля — страница на экране
Это прям база
👉 @BackendPortal
Устал вручную пробрасывать порты и настраивать DNS?
Cloudflare Operator — Kubernetes-оператор, который автоматически создаёт Cloudflare Tunnel и обновляет DNS-записи для сервисов (HTTP / TCP / UDP) в твоём кластере
Полезно для внутренних API, админок, dev-сред, где важна безопасность и простота
👉 @BackendPortal
Объяснение Kafka
—> Apache Kafka — это распределённая стриминговая платформа, предназначенная для построения конвейеров обработки данных в реальном времени и стриминговых приложений
—> Она работает по модели pub-sub, где продюсеры публикуют сообщения, а потребители подписываются на темы, чтобы получать эти сообщения.
—> Kafka изначально распределённая, спроектирована для масштабирования и обеспечения отказоустойчивости за счёт распределения данных по нескольким узлам
—>Apache Kafka — проект с открытым исходным кодом, доступный для использования и модификации разработчиками.
—> Сообщения организованы в темы, которые могут быть дополнительно разбиты на партиции для более тонкой параллелизации и масштабируемости
—> Она предоставляет устойчивое хранилище с журналом предварительной записи (write-ahead log), что обеспечивает сохранность данных при сбоях сервера
—> Несколько потребителей могут образовать «группу потребителей» (Consumer Group), чтобы подписаться на темы — это позволяет балансировать нагрузку и параллельно потреблять данные
👉 @BackendPortal
ВКонтакте открывает набор Go-разработчиков для перехода на новую архитектуру
⏩ Компания запускает крупный проект по технической трансформации. Цель-перевести соцсеть на сервисную архитектуру и создать единую платформу разработки.
⏩ Собственную команду ВКонтакте планирует усилить более 100 Go-разработчиками. Это крутая возможность участия в важном этапе развития одного из крупнейших digital-продуктов в рунете.
⏩ 24 апреля ВКонтакте проведёт митап (ссылка на лендос) в петербургском офисе и онлайн. Команда расскажет о проекте, технологиях и команде.
👉 @BackendPortal