Безопасное проектирование программного обеспечения. Конфиденциальность и Шифрование

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

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

Читать далее


Проектирование DWH с помощью Data Vault

Методология Data Vault была разработана Дэном Линстедом в конце 1990-х годов и предлагает гибкий, масштабируемый и проверяемый способ управления данными. Data Vault сочетает в себе самые лучшие черты нормализованных моделей данных и звездных схем.

В этой статье мы рассмотрим эту методологию и как с помощью нее проектировать DWH на примере.

Читать далее


Реализация принципа единственной ответственности на Python

Сегодня мы рассмотрим одну из основополагающих концепций SOLID-принципов — принцип единственной ответственности или сокращенно — SRP. Разберем, что такое SRP и как правильно его применять в Python.

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

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

Читать далее


Может ли искусственный интеллект работать архитектором 1С

Давайте посмотрим, на что сейчас способны лучшие языковые модели в плане выполнения работы архитектора 1С. В этом обзоре присутствуют все основные игроки (OpenAI, Anthropic, Google). Также я добавил к ним двух отечественных провайдеров (Yandex и Сбер).

Читать далее


Способы обхода GIL для повышения производительности

Global Interpreter Lock в Питоне предотвращает одновременное выполнение нескольких потоков в одном процессе интерпретатора Python. Т.е даже на многоядерном процессоре многопоточные Python‑приложения будут выполняться только в одном потоке за раз. Это было введено для некой потокобезопасности при работе с объектами Python, упрощая тем самым разработку на уровне интерпретатора.

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

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

Читать далее


Кратко про микросервисы на Scala и Erlang

Микросервисы давно являются некой «попсой» для создания гибких, масштабируемых и отказоустойчивых систем. И естественное имеет свою реализацию в функциональном программирование.

В статье рассмотрим два языка программирования, которые выделяются своим функциональным подходом и широким применением в микросервисной архитектуре: Scala и Erlang.

Читать далее


Пример дивергентного мышления ИИ при использовании 1С запрос copilot

Американский психолог Джой Пол Гилфорд, известный исследователь проблем интеллекта, в свое время предложил понятие дивергентного мышления. Сам Гилфорд определял его, как тип мышления идущий в различных направлениях. Ищем все возможные способы решения одной проблемы. Выходим за рамки стереотипов и, как результат, находим неожиданные и суперэффективные методы. Дивергентное мышление ассоциируется с креативностью. Яркий пример такого мышления можно увидеть в хорошо известной истории про Нильса Бора и барометр.

До появления генеративных языковых моделей было распространено мнение, что искусственный интеллект, когда и если будет создан, будет уступать человеку в креативности. Будет действовать скрупулезно, последовательно, без ошибок, но шаблонно. Оказалось — наоборот. Как это выглядит в реальности, при решении «скучных» учетных задач в 1С, смотрите ниже.

Читать далее


Клеточная архитектура

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

Основная цель такого разделения — минимизация радиуса поражения при возникновении сбоев и упрощение масштабирования системы.

Читать далее


Кратко про библиотеку Axum в Rust

Axum была создана командой Tokio, которая уже получила свой +rep за создание асинхронной платформы Tokio для Rust.

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

Основная фича Axum заключается в его возможности обрабатывать тысячи запросов без значительных затрат на ресурсы.

Читать далее


4 вида распространённых ошибок в Event-Driven системах

В последние несколько лет в крупных компаниях наблюдается значительный рост внедрения event-driven (событийно-ориентированных) систем. Каковы основные причины этой тенденции? Это чистой воды хайп или есть веские причины, побуждающие к внедрению этой архитектуры? С нашей точки зрения, основными причинами, по которым многие компании выбирают этот путь, являются:

  • Слабая связанность между компонентами
  • Концепция “Fire and Forget”
  • Отсутствие зависимости во времени

Читать далее


Proof of Work и Proof of Stake для чайников

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

Для достижения консенсуса в блокчейне существуют механизмы Proof of Work и Proof of Stake. Рассмотрим их в этой статье.

Читать далее


Обзор библиотеки Go Kit

Go Kit предоставляет стандартизированный способ создания сервисов, с ее помощью можно легко реализовать совместимость сервисов. С его помощью можно легко интегрировать различные транспортные протоколы, такие как HTTP, RPC, gRPC, и многое другое, а также реализовывать общие паттерны: логирование, метрики, трассировка. В общем, Go Kit хорошо подходит для разработки микросервисов на go.

Читать далее

Архитектура программного обеспечения: подборка статей на Хабр