Как стать автором
Обновить
245.38

Open source *

Открытое программное обеспечение

Сначала показывать
Порог рейтинга
Уровень сложности

Как работают объектные хранилища: OpenStack Swift

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 945
Блог компании Selectel Open source *Хранилища данных *Распределённые системы *
Ретроспектива

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

Раз меньше времени работе, то больше — знаниям. Меня зовут Рома, и я работаю в объектном хранилище — самой высоконагруженной услуге Selectel. Здесь мы непрерывно трудимся над улучшением и развитием архитектуры, удовлетворяя спрос на пропускную способность, функциональность и надежность.

В первой части я поделился сложностями, которые возникают при попытке построить распределенное и отказоустойчивое хранилище для объектов. Та система, которую мы позволили себе нафантазировать, очень похожа на OpenStack Swift. С него начиналась история нашего продукта, так что мы можем не только разобрать принцип его работы «на пальцах», но и погрузиться в скрытые особенности OpenSource, которые проявляются лишь в больших масштабах.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 0

Новости

Российский Kubernetes, какой он? Знакомимся с платформой Deckhouse

Время на прочтение 3 мин
Количество просмотров 1.6K
Блог компании КРОК Open source *IT-инфраструктура *Микросервисы *Kubernetes *
Репортаж
Исследование Statista в России показывает, что около 60% компаний применяют технологию оркестрации контейнеров в рамках своей инфраструктуры. При этом самостоятельная разработка на Open Source для решения этой задачи значительно повышает требования к скиллам команды и характеризуется высокой стоимостью. Другой вариант — облачные PaaS-сервисы, но они зачастую имеют ограниченный набор инструментов, а зарубежные платформы ушли с российского рынка.

Есть ли сегодня в России аналоги западным платформам контейнеризации? Мы решили изучить этот вопрос и пригласили директора по развитию Deckhouse компании «Флант» Артёма Кожокина, чтобы подробно расспросить про их платформу оркестрации контейнеров.

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



Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 8

Выбираем IAM в 2023 или, что есть кроме Keycloak

Время на прочтение 4 мин
Количество просмотров 1.5K
Информационная безопасность *Open source *Go *
Обзор

Гипотетическая ситуация — ваш работодатель поручил вам выбрать Identity and Access Management platform.

Обязательно: open‑source (Apache 2.0), self‑hosted, OAuth 2.0, OIDC, SAML, LDAP.

Для тех кому интересно узнать, что есть еще кроме Keycloak.

Узнать
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 6

Архитектура SSH. Узел-бастион и принцип нулевого доверия

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 6.3K
Блог компании RUVDS.com Децентрализованные сети *Информационная безопасность *Open source *Серверное администрирование *

В инфраструктуре организации есть такое понятие, как узел-бастион — специальный компьютер в сети, обычно на внешней стороне демилитаризованной зоны (ДМЗ) организации. Узел назван по военной терминологии. Если кто видел средневековые крепости, там есть специфические выступы — бастионы, как на КДПВ.

То же самое в компьютерных сетях. Например, перед защищённой компьютерной сетью ставится специальный сервер, через который пробрасывается SSH-туннель в свою частную сеть. Данный «бастион» организуется в соответствии с концепцией нулевого доверия, которая предполагает абсолютное недоверие ко всем объектам и пользователям как снаружи организации, так и внутри неё.
Читать дальше →
Всего голосов 40: ↑40 и ↓0 +40
Комментарии 1

Истории

Шаблон backend сервера на Golang — часть 5 — оптимизация Worker pool

Уровень сложности Средний
Время на прочтение 31 мин
Количество просмотров 1.3K
Open source *API *Go *
Туториал

# Шаблон backend сервера на Golang — часть 5 — оптимизация Worker pool


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Представленный Worker pool поддерживает работу с двумя типами задач


  • "Короткие" — не контролируется предельный timeout выполнения и их нельзя прервать
  • "Длинные" — контролируется предельный timeout выполнения и их можно прервать

Накладные расходы Worker pool на добавление в очередь, контроль очереди, запуск обработки task, контроль времени выполнения task:


  • Для "коротких" task — от 300 ns/op, 0 B/op, 0 allocs/op
  • Для "длинных" task — от 1400 ns/op, 16 B/op, 1 allocs/op

Для task, которые должны выполняться быстрее 200 ns/op представленный Worker pool использовать не эффективно


Собираются следующие метрики prometheus:


  • wp_worker_process_count_vec — количество worker в работе
  • wp_task_process_duration_ms_by_name — гистограмма длительности выполнения task в ms с группировкой по task.name
  • wp_task_queue_buffer_len_vec — текущая длина канала-очереди task — показывает заполненность канала
  • wp_add_task_wait_count_vec — количество задач, ожидающих попадания в очередь

Ссылка на репозиторий проекта.


Шаблон goapp в репозитории полностью готов к развертыванию в Docker, Docker Compose, Kubernetes (kustomize), Kubernetes (helm).


Ссылки на предыдущие части:


  • Первая часть шаблона была посвящена HTTP серверу.
  • Вторая часть шаблона была посвящена прототипированию REST API.
  • Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).
  • Четвертая часть будет посвящена развертыванию в Kubernetes с Helm chart и настройке Horizontal Autoscaler.
Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 4

Apache NlpCraft 1.0.0. Упрощение использования и расширение возможностей

Время на прочтение 7 мин
Количество просмотров 367
Open source *Scala *API *Apache *Natural Language Processing *
Обзор

Apache NlpCraft - библиотека с открытым исходным кодом, предназначенная для интеграции языкового интерфейса с пользовательскими приложениями. Новая версия 1.0.0 привнесла в проект наиболее существенные изменения за все время его существования. 

Основные идеи развития библиотеки были изложены в данной заметке, вкратце напомню их суть:

1. Предельное упрощение, отказ от всех вспомогательных enterprise возможностей, предельно точная фокусировка продукта.

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

Читать далее
Рейтинг 0
Комментарии 0

Docs as Code для художественной литературы. Делаем творческий сайт ребенка с помощью MkDocs

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 2.8K
Open source *GitHub *DIY или Сделай сам Подготовка технической документации *
Кейс


Docs as Сode — подход к работе с текстами, подразумевающий написание текста как кода:


  • в простом текстовом редакторе или IDE;
  • с использованием системы контроля версий;
  • с CI / CD / Code Review.

В настоящее время Docs as Code широко применяется при работе с технической документацией, давая техническим писателям и проектным командам массу удобств и преимуществ.


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


В этой статье я расскажу о таком эксперименте (забегая вперед, удачном). Моей дочери 11 лет, она пишет сказки, стихи и рассказы. Чтобы поддержать ее увлечение, я помог ей создать литературный сайт, используя подход Docs as Code. Она успешно освоила основы Markdown и Git. Сейчас она самостоятельно публикует новые произведения и обновляет новости на своем сайте https://lib-beliakova.github.io/.

Читать дальше →
Всего голосов 40: ↑40 и ↓0 +40
Комментарии 17

PostgreSQL под капотом. Часть 4. Цикл бэкэнда

Время на прочтение 21 мин
Количество просмотров 1.4K
Open source *PostgreSQL *Анализ и проектирование систем *C *Реверс-инжиниринг *

Приветствую!

В прошлой статье была исследована входная точка бэкэнда до главного цикла. В этой статье закончим ее обзор исследованием главного цикла.

Кроме нее будут рассмотрены:

— Модуль для работы с транзакциями.

— Исключения в С и их реализацию.

— Клиент‑серверный протокол.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 1

Apache NiFi. Запуск Pipeline тогда, когда надо

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 1.2K
Open source *Data Engineering *Визуальное программирование *
Кейс

Добрый день. Меня зовут Иван, я дата‑инженер, основной профиль — доставка данных от источников до целевых систем DWH. Чаще всего работаю с Apache NIFI.

В данной статье я расскажу о вариантах старта PipeLine обработки данных в требуемое время. Статья подойдет новичкам, опытные коллеги могут дополнить в комментариях.

Интересующимся - читать дальше.
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

GSM NetMonitor для гика и преподавателя

Уровень сложности Сложный
Время на прочтение 14 мин
Количество просмотров 2.3K
Блог компании RUVDS.com Open source *Разработка систем связи *Сотовая связь

В статье я рассмотрю, как недорого в лабораторных условиях собрать и на практике использовать GSM NetMonitor на основе открытого программного продукта Osmocom, более известного в IT-среде по проекту OpenBTS, позволяющему создавать персональные базовые станции. Так, входящая в его состав программа OsmocomBB помогает узнать большое количество различных технических характеристик, задействованных в стеке GSM-протоколов для удовлетворения личного исследовательского интереса. В образовательной среде она поможет понять и на практике изучить работу рассматриваемых телекоммуникационных сетей, на которых в той или иной степени базируются определённые 3G, 4G и 5G-решения. Чтобы минимизировать заимствования из схожих публикаций, материал носит практический характер (за редким исключением). Дополнительно я раскрою явным образом недокументированную, но полезную возможность рассматриваемого программного обеспечения по одновременному NetMonitor сигналов от различных операторов.
Читать дальше →
Всего голосов 44: ↑44 и ↓0 +44
Комментарии 3

Безграничные возможности FFmpeg на примерах

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 21K
Блог компании RUVDS.com Open source *Работа с видео *Софт Видеотехника

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

FFmpeg объединяет более 300 видео/аудио/графических кодеков, декордеров, муксеров, демуксеров и фильтров. Благодаря ему вы можете написать собственный видеоплеер в тысячу строчек кода, не разбираясь с кишочками видеообработки.

Это «движок» почти всех современных инструментов для обработки/сжатия/редактирования видео. Они просто предлагают графический интерфейс с кнопками, а ffmpeg делает реальную работу.
Читать дальше →
Всего голосов 125: ↑122 и ↓3 +119
Комментарии 79

Своя альтернатива Google Maps: хостим сервер OpenStreetMap

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 5K
Блог компании QIWI Хостинг Open source *OpenStreetMap *Геоинформационные сервисы *
Туториал
Перевод

Зачем? Это странно...


Нет, не странно! Google Maps — это, наверно, самый потрясающий сервис, который мы получаем бесплатно [в обмен на свои персональные данные].

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

Но что, если бы нам вообще не нужен был Google?

OpenStreetMap бесплатно предоставляет всему миру данные карт, собранные при помощи краудсорсинга. Но я не имею в виду, что можно просто воспользоваться OSM. Эта организация предоставляет данные, однако политика использования стимулирует пользователей не полагаться на её серверы при личном пользовании, а брать на себя ответственность за хостинг. И глядя на этот проект, я понимаю, почему. Его аппаратные требования не для слабонервных.
Читать дальше →
Всего голосов 33: ↑33 и ↓0 +33
Комментарии 19

Доказательство с нулевым разглашением на примере реализации SRP в ProtonMail

Время на прочтение 10 мин
Количество просмотров 2.2K
Блог компании Eppie Децентрализованные сети *Криптография *Open source *C# *

Привет, Хабр! Это команда Eppie. Подробнее о нашем проекте бессерверной электронной почты можно почитать в этом посте.

Мы, параллельно с созданием собственного децентрализованного протокола, интегрируем в клиентское приложение Eppie популярные классические сервисы. Осенью мы познакомились с основателем Proton Энди Йеном и договорились добавить в Eppie возможность подключения почтового ящика ProtonMail. Насколько нам известно, ни один нативный десктопный клиент не умеет авторизоваться на сервере Proton — Eppie будет первым.

В Proton реализована собственная версия протокола SRP (Secure Remote Password). Наш криптограф портировал библиотеку на C#. Если хотите посмотреть код, вот ссылка на репозиторий в GitHub.

SRP — пример «доказательства с нулевым разглашением». Смысл процедуры в том, чтобы доказать факт владения определенной информацией, не раскрывая при этом саму информацию. В частности, аутентификация по SRP позволяет пользователю ProtonMail доказать, что он знает пароль, не передавая пароль серверу. Сейчас расскажем, как это устроено изнутри.

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

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 15

Новое, старое, обновленное: что «выросло» в ядре Linux 6.2. Подробности релиза

Время на прочтение 6 мин
Количество просмотров 13K
Блог компании Selectel Open source **nix *Разработка под Linux *


Вчера появилась новость о выходе стабильного релиза ядра Linux 6.2. Изменений и дополнений действительно много, в этот раз принято почти 17 тыс. исправлений от 2178 разработчиков. Изменения при этом внесены в 14108 файлов, с добавлением 730195 строк кода. Большая часть изменений, почти 50%, связана с драйверами устройств, еще примерно 16% — с аппаратными архитектурами, 12% — сетевые технологии, 4% — файловые системы и еще 3% — подсистемы ядра. Под катом — подробности о том, что представляет собой ядро 6.2.

Наиболее актуальные изменения, которые добавлены в ядро, касаются продолжения работы над интеграцией языка Rust, о чем Торвальдс говорил уже давно. Кроме того, разрешен прием кода кода под лицензией Copyleft-Next. А еще — добавлена возможность регулирования потребления памяти при отложенной записи, появился гибридный механизм защиты потока выполнения команд, плюс появилась утилита rv (Runtime Verification). Ну а теперь, собственно, подробности.
Читать дальше →
Всего голосов 69: ↑68 и ↓1 +67
Комментарии 40

Встречайте, новая стратегия Embrace, Extend, and Expropriate для Linux?

Уровень сложности Средний
Время на прочтение 2 мин
Количество просмотров 8K
Open source *Управление сообществом *Исследования и прогнозы в IT *Копирайт История IT
Мнение

image


Помните, несколько лет назад была проведена согласованная клеветническая компания против Ричарда Столлмана, в которой он был ложно обвинён в одобрении изнасилований, и по результатом которой его вынудили уволиться с поста президента Фонда Свободного Программного Обеспечения?


Уже тогда многие предполагали, что данная спланированная акция является подготовкой к атаке производителей проприетарных программ на экосистему свободного программного обеспечения. Многие в это не верили (типа, «не приписывайте обычную глупость злому умыслу»), а кто-то не верит и сейчас. Ведь гораздо проще и удобнее игнорировать якобы не существующую опасность, ведь в противном случае на нее нужно как-то реагировать (хотя бы морально).


И вот сейчас, в релизе ядра Linux 6.2, произошло очень важное изменение — разрешён приём кода в ядро Linux под лицензией Copyleft-Next, для которой заявлена совместимость с GPLv2, что подтверждено юристами компаний SUSE и Red Hat (кто бы сомневался?).


Данная лицензия также содержит пункт о предоставлении прав на запатентованные технологии, что делает Copyleft-Next совместимой и с Apache 2.0. А для обеспечения полной совместимости с GPLv2, в тексте Copyleft-Next явно указано, что производная работа может поставляться не только под исходной лицензией Copyleft-Next, но и под лицензией GPL.


Но как говорится, «есть нюанс».

Читать дальше →
Всего голосов 50: ↑36 и ↓14 +22
Комментарии 63

OpenAPI Comparator — детектор изменений, ломающих [большие] API

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 2.5K
Блог компании SkillFactory Open source *Программирование *API *C# *
Кейс
Перевод

Защита от изменений API, которые могут повлиять на ваших клиентов, — одна из самых больших проблем при разработке HTTP API. Если вы вносите критические изменения, то создаете клиентам серьёзные проблемы. Стабильный API — ключ к удовлетворенности клиентов и, в конечном счете, к успеху в бизнесе.


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

Читать дальше →
Всего голосов 4: ↑2 и ↓2 0
Комментарии 4

Создаем свой собственный язык программирования с использованием LLVM. Часть 3: Генерация кода

Время на прочтение 29 мин
Количество просмотров 3.9K
Open source *Программирование *Компиляторы *

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 2

Создание кластера для расчета в OpenFOAM

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 2K
Open source *Серверная оптимизация *
Туториал

В статье я расскажу, как можно (при необходимости) быстро и дешево собрать кластер Beowulf на основе домашних компьютеров. Выполню я это с помощью компьютеров находящихся в аудитории университета, используя существующую локальную сеть. Используемые программные инструменты: средства численного моделирования механики сплошных сред OpenFOAM, сетевого протокола прикладного уровня SSH и распределенного протокола файловой системы NFS. Все выполнялось под управлением операционной системы ubuntu 20.04.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 6

Как Homebrew раздаёт 52 миллиона пакетов в месяц?

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 2.6K
Open source *Облачные вычисления *API *Big Data *Data Engineering *
Туториал
Перевод

Пакетный менеджер Homebrew раздаёт 52 миллиона пакетов в месяц. Чтобы это делать, он использует хранилища контейнеров, отлично подходящие для этой задачи. Как это работает?

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 8

Шаблон backend сервера на Golang — часть 3 (Docker, Docker Compose, Kubernetes (kustomize)

Уровень сложности Сложный
Время на прочтение 27 мин
Количество просмотров 4K
Open source *PostgreSQL *API *Go *Kubernetes *
Туториал

Шаблон backend сервера на Golang — часть 3 (Docker, Docker Compose, Kubernetes (kustomize)


Схема развертывания в Kubernetes


Первая часть шаблона посвящена HTTP серверу.


Вторая часть шаблона посвящена прототипированию REST API.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Четвертая часть будет посвящена развертыванию в Kubernetes с Helm chart и настройке Horizontal Autoscaler.


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Для корректного развертывания в Kubernetes, в шаблон пришлось внести изменения:


  • способа конфигурирования — YAML, ENV, Kustomize
  • подхода к логированию — переход на zap
  • способа развертывания схемы БД — переход на liquibase
  • добавление метрик prometheus

Ссылка на новый репозиторий.


Шаблон goapp в репозитории полностью готов к развертыванию в Docker, Docker Compose, Kubernetes (kustomize), Kubernetes (helm).


Настоящая статья не содержит детального описание используемых технологий


Содержание


  1. Изменение подхода к конфигурированию
  2. Добавление метрик prometheus
  3. Изменение подхода к логированию
  4. Развертывание схемы БД
  5. Сборка Docker image
  6. Сборка Docker-Compose
  7. Схема развертывания в Kubernetes
  8. Подготовка YAML для Kubernetes
  9. Kustomization YAML для Kubernetes
  10. Тестирование Kubernetes с kustomize
Читать дальше →
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Вклад авторов