С Spawn больше нет общих баз данных для разработки

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

Spawn позволяет нам сделать подготовку базы данных для разработки безболезненной и позволить каждому инженеру иметь свою собственную выделенную среду базы данных без необходимости предоставления какой-либо дополнительной инфраструктуры.

Общие базы данных

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

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

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

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

Одна база данных на разработчика

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

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

Используя Spawn, мы можем создавать образ данных из производственной среды каждый день (как часть запланированного конвейера сборки) и делать этот образ доступным как для разработчиков, так и для систем CI - все с помощью Spawn CLI. Образы можно создавать из файлов резервных копий или сценариев. Затем каждый разработчик может подготовить свои собственные базы данных на основе этого образа, не выходя из командной строки, так же просто, как запустив spawnctl create data-container <prod-image> .

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

Использование Spawn дает несколько преимуществ для подготовки базы данных:

  • Быстрая подготовка произвольно больших баз данных: Spawn использует моментальные снимки файловой системы на уровне блоков для восстановления и записи в базы данных. Это означает, что даже самые большие образы можно подготовить за секунды, а запись останется быстрой.
  • Снимок и восстановление: базы данных можно сделать снимок в любой момент с помощью команды Spawn CLI spawnctl save. Вернитесь в любое предыдущее состояние с помощью spawnctl reset. Изменения в базе данных можно вносить без опасений, потому что всегда легко вернуться назад.
  • Нет инфраструктуры: Spawn заботится о предоставлении базы данных и размещении, позволяя разработчикам сосредоточиться на коде.
  • Несколько копий одного и того же образа: один образ можно использовать для предоставления любого количества баз данных - все со своими собственными строками подключения, независимыми и изолированными друг от друга.
  • Поддержка нескольких баз данных: Spawn поддерживает SQL Server, Postgres, MySQL, Redis и Mongo.

Чтобы узнать больше о Spawn, посетите его веб-сайт и его документацию.