Moviento 0deps: Локальні залежності та безпека

У більшості проєктів розробники програмного забезпечення встановлюють сотні зовнішніх бібліотек. Сучасні фреймворки покладаються на тисячі транзитивних залежностей. Це означає, що ваш застосунок виконує код, написаний сотнями невідомих людей.

Ця екосистема прискорює розробку. Вона також створює величезні ризики для ланцюга постачання.

Рух 0deps ставить просте запитання: Що, якби ваш застосунок виконував лише той код, який ви насправді контролюєте?

Кожна залежність створює нову поверхню атаки. Залежність може:

  • Вносити вразливості безпеки.
  • Стати ціллю атак на ланцюг постачання.
  • Бути покинутою автором.
  • Змінити свій публічний API.
  • Порушити зворотну сумісність.

У моделі 0deps ви переміщуєте всі необхідні залежності безпосередньо у репозиторій свого проєкту. Ви припиняєте динамічне завантаження пакетів під час збірки. Усе, що потрібно для роботи застосунку, залишається в репозиторії з моменту його клонування.

Цей підхід забезпечує:

  • Відтворюваність збірок.
  • Меншу залежність від зовнішніх реєстрів пакетів.
  • Централізовані аудити безпеки.
  • Передбачувані результати.

Мета полягає не в тому, щоб зробити код статичним. Реалізації та алгоритми мають еволюціонувати, щоб виправляти помилки та залишатися безпечними. Мета — зберегти стабільним публічний контракт.

Кожна бібліотека надає певний інтерфейс. Наприклад:

  • authenticate()
  • createSession()
  • verifyPasskey()

Ці функції формують контракт. Контракт залишається незмінним, навіть якщо ви переписуєте внутрішній код. Ви можете замінити бібліотеки або змінити протоколи, не порушуючи роботу решти вашого застосунку.

Коли з'являється вразливість, ви зазвичай стикаєтеся з двома проблемами:

  1. Виправити помилку.
  2. Перевірити, чи не порушує оновлення роботу вашого застосунку.

В архітектурі 0deps друга проблема зникає. Ви оновлюєте реалізацію за інтерфейсом. Публічний API залишається ідентичним. Ваш застосунок продовжує працювати без змін у коді.

Ізолюючи зовнішній код за допомогою внутрішніх адаптерів, ви зменшуєте довгострокові ризики. Якщо бібліотека зникне завтра, вам потрібно буде оновити лише адаптер.

0deps не бореться з open source. Він змінює спосіб його використання. Бібліотеки стають інтегрованими компонентами, а не динамічними зовнішніми посиланнями.

Це дозволяє створювати програмне забезпечення, яке є передбачуваним, стійким і простим в обслуговуванні. Реалізації еволюціонують. Контракт залишається.

Джерело: https://dev.to/fullagenticstack/movimiento-0deps-dependencias-locales-contratos-inmutables-y-seguridad-por-diseno-1a6o