Рубрики
Uncategorized

Инфраструктура как SQL

Какое программное обеспечение вы развернули в том, какие услуги и взаимодействие между ними и внешними … Tagged с DevOps, Cloud, Terraform, SQL.

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

Состояние инфраструктуры — это данные, изменение инфраструктуры — это код. Это так просто.

И манипулирование вашей инфраструктурой таким образом естественно.

INSERT INTO aws_ec2 (ami_id, ec2_instance_type_id)
SELECT ami.id, ait.id
FROM ec2_instance_type as ait, (
    SELECT id
    FROM   amis
    WHERE  image_name LIKE 'amzn-ami-hvm-%'ORDER BY creation_date DESC
    LIMIT 1
) as ami
WHERE  ait.instance_name = 't2.micro';

Отношения и типы имеют значение для инфраструктуры

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

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

Вы не можете установить тип экземпляра EC2 как t2.mucro и попросите вашу систему развертывания попытаться создать такой экземпляр. вставить Заявление потерпит неудачу и скажет вам, что ноль рядов были вставлены, и вы можете быстро понять, почему.

Точно так же, если у вас есть запись в Security_Group Таблица, вы не можете удалить его, если есть какие -либо ссылки на это в ec2_security_groups Присоединяйтесь к таблице. Реляционная структура IASQL не позволяет вам вкладывать вашу инфраструктуру в неверное состояние.

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

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

SHOW tables;

Вы можете запросить необычные модели использования.

SELECT aws_ec2.*
FROM aws_ec2
INNER JOIN ec2_instance_type AS ait ON ait.id = aws_ec2.ec2_instance_type_id
WHERE ait.vcpus > 8
ORDER BY ait.vcpus DESC

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

SELECT aws_ec2.*
FROM aws_ec2
INNER JOIN company_team_ec2s AS cte ON cte.aws_ec2_id = aws_ec2.id
INNER JOIN company_teams AS ct ON ct.id = cte.company_team_id
WHERE ct.name = 'Data Engineering'

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

const ec2_instance_id = await iasql(`
  INSERT INTO aws_ec2 (ami_id, ec2_instance_type_id)
  SELECT ami.id, ait.id
  FROM ec2_instance_type as ait, (
      SELECT id
      FROM amis
      WHERE image_name = 'application-job-runner'
  ) as ami
  WHERE ait.instance_name = 'g3.4xlarge'
  RETURNING id;
`);
await iasql(`
  INSERT INTO ec2_security_groups (ec2_id, security_group_id)
  SELECT ${ec2_instance_id}, sg.id
  FROM security_groups AS sg
  WHERE sg.name = 'application-job-group';
`);
// Only large-enough job runners will take it based on job metadata
const result = await job.run(myMassiveJob); 
await iasql(`
  DELETE FROM aws_ec2
  WHERE id = ${ec2_instance_id};
`);

Вам не нужно изучать новый API (вероятно)

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

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

Вы тоже можете проверить

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

Восстановиться с легкостью

Сейчас 3 часа ночи, и ваш сервис упал. Вы вернули самую последнюю миграцию IASQL, но это не решило проблему, и вы не уверены, какие изменения, которые сегодня вызвали услуги. Таким образом, вы просто заменяете состояние базы данных IASQL на снимки вчерашнего дня, чтобы вернуть все в Интернете в известное состояние, а затем не торопитесь после того, как вы получите хорошо, чтобы выяснить, что на самом деле пошло не так.

Подпишитесь на наш список ожидания здесь

Оригинал: «https://dev.to/depombo/infrastructure-as-sql-81i»