AWS SDK и AWS CLI — формирование облака AWS — Terraform

Для предоставления инфраструктуры в облаке AWS в настоящее время мы используем шаблоны формирования облака, вызываемые из ролей ansible, но мы видим, что после увеличения размера инфраструктуры этот код стал неструктурированным или не модульным в GitHub.

На Github есть спагетти с этим кодом без надлежащей структуры, менее читаемые, не легко подбираемые новым специалистом.

В частности, для обеспечения инфраструктуры я вижу, что поддержка кода, написанного в доменные языки, такого как ansible, terraform, cloudformation и т. д., не является хорошей идеей для долгосрочного обслуживания кода в GitHub, потому что для полной (полной) автоматизации вы используете комбинацию этих ТЕХНОЛОГИИ.

Философия заключается в том, что код aws sdk выглядит более структурированным в GitHub, потому что он дает много абстракций, скрывающих детали реализации.

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

Мы уверены, что после перехода с Azure мы будем придерживаться облака AWS.


предметно-ориентированный язык по отношению к языку программирования,

Решает ли подход aws sdk эту проблему? Мы предпочитаем GoLang aws sdk, чтобы любой программист GoLang мог его подобрать.

А терраформ?

Ntwobike 21.06.2019 13:41

@Ntwobike terraform — это независимая от облачных вычислений версия cloudformation... пожалуйста, прочтите запрос

overexchange 21.06.2019 13:42

Независимость от облака - это только одно, есть и другие отличия, например: вы можете использовать модульную систему, которой нет в CF (стеки да, но не то же самое), однако ваш вопрос не о CF или TF.

Ntwobike 21.06.2019 14:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
1 425
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я правильно понимаю ваш вопрос, вы заявляете, что из-за увеличения размера ваш код Cloud Formation стал неуправляемым, и теперь вы заинтересованы в его определении с помощью AWS SDK, чтобы вы могли использовать лучшие практики программного обеспечения, чтобы сделать код более удобным для обслуживания.

Недостатком AWS SDK по сравнению с декларативным языком является то, что теперь вы несете ответственность за то, чтобы при нажатии кнопки «Выполнить» он не просто создавал новый экземпляр. Например. когда я развертываю машину ec2 с помощью AWS SDK, при следующем запуске этого кода будет развернута новая машина ec2. Cloud Formation сохраняет информацию о том, что и где было развернуто, что упрощает развертывание дополнительных изменений в инфраструктуре и откат изменений.

Я бы порекомендовал вам проверить новый AWS-CDK, который позволяет вам определять код, который в конечном итоге запускается через Cloud Formation. Это позволяет вам писать объекты в стиле OO:

const vpc = new Vpc(this, 'vpc', {
            cidr: '10.150.0.0/16',
            natGateways: 2,
            subnetConfiguration: [
                {
                    name: 'Public',
                    subnetType: SubnetType.Public,
                    cidrMask: 20
                },
                {
                    name: 'Private',
                    subnetType: SubnetType.Private,
                    cidrMask: 22
                },
                {
                    name: 'Isolated',
                    subnetType: SubnetType.Isolated,
                    cidrMask: 22
                }
            ]
        });

К сожалению, Golang пока не поддерживается.

Как скоро поддержка GoLang появится в aws cdk? Есть ли форум aws, где я могу найти ответ?

overexchange 21.06.2019 14:13

Я думаю, что поддерживать состояние также сложно с terraform. Не так ли?

overexchange 21.06.2019 14:15

Дополнительный... вы предлагаете лучшие практики программного обеспечения для настройки? Ansible — это то, что мы используем сейчас

overexchange 21.06.2019 14:20

Я не уверен в дорожной карте AWS-CDK и не уверен, что она общедоступна. Вы можете проверить их Gitter или зарегистрировать проблему на Github. В моей текущей ситуации мне не нужно иметь дело с настройкой программного обеспечения, поскольку мы работаем поверх AWS EKS. Мы не настраиваем вручную виртуальные машины, которые необходимо настроить, поэтому я не могу помочь в этом отношении. Поддерживать состояние в terraform несложно, вы можете легко настроить корзину S3 для поддержания состояния. Сложнее достичь CI/CD, подобного формированию облака, хотя это тоже возможно. Однако Terraform не зависит от облака.

Blokje5 21.06.2019 14:27

Вы имеете в виду, что формирование облака позволяет использовать CI/CD в отличие от терраформирования? В том смысле, что формирование облака может сопровождаться функциональным кодом... и быть частью сборки jenkins?

overexchange 21.06.2019 14:55

Нет, так как Cloud Formation обеспечивает CI/CD, поскольку AWS запускает Cloud Formation сразу после ее развертывания. Terraform — это то, что вы бы развернули сами (или, скорее всего, как часть сборки Jenkins), но у вас нет управляемого конвейера CD, как у облачного формирования AWS. Однако есть много проектов с открытым исходным кодом, которые помогают в этом.

Blokje5 21.06.2019 14:58

Когда вы говорите, что CloudFormation запоминает состояние? Допустим, если я создаю корневой сертификат ЦС с помощью AWS Certification mgr, используя Шаблон CloudFormation, запоминает ли Cloud Formation состояние? так что повторный запуск этого шаблона не приведет к созданию другого корневого сертификата ЦС.

overexchange 21.06.2019 15:49

Можете ли вы порекомендовать мне проекты, о которых вы упомянули?

overexchange 21.06.2019 16:01

Да, при запуске шаблона CloudFormation он не будет снова создавать ЦС при повторном запуске. Вы можете проверить, например: runatlantis.io в отношении Terraform CI/CD

Blokje5 23.06.2019 16:41

Итак, для обработки проблем с состоянием мне нужно использовать aws_cdk вместо aws_sdk или AWS_CLI+ansible.

overexchange 24.06.2019 02:11

Да либо CDK, либо Cloud Formation, иначе вы станете ответственным за поддержание состояния.

Blokje5 24.06.2019 09:43

Готов ли CDK к использованию? Поскольку я вижу из этого обсуждение, требуется больше изменений...

overexchange 24.06.2019 14:50

Я имею в виду, что мы используем шаблоны формирования облака для создания ресурсов aws любого типа (CA/EC2/ELB/...). Является ли CDK одинаково мощным инструментом для создания всех этих ресурсов?

overexchange 24.06.2019 15:29

Если вы проверите документацию: docs.aws.amazon.com/cdk/api/latest/docs/…, вы увидите, что поддерживается большинство ресурсов.

Blokje5 24.06.2019 15:38

Другие вопросы по теме