Модные слова везде. Возможно, вы заметили, что я не большой поклонник. Они используются повсюду (иногда неправильно), и из-за этого большинство людей боятся спрашивать 101-й вопрос, поскольку они не хотят казаться невежественными.
Несколько лет назад мой Back-Then-Manager спросил меня, хочу ли я выполнять работу DevOps в рамках работы с разработкой программного обеспечения. Конечно, я был молод и боялся (по вышеуказанным причинам) спросить, поэтому я просто сказал: «Да, давайте попробуем. В худшем случае я умру, и вы возьмете выходной в горе ».
Слава Богу, я все еще жив, мучая людей своими сочинениями. Так что теперь я хочу дать вам хороший и круглый обзор терминов, с которыми я столкнулся в своих первых шагах, и хотел бы, чтобы я знал тогда, плюс еще несколько, которые не были изобретены, но это хорошо знать их сейчас.
Давайте начнем
( Кредиты Уильяму Стилтту, Unsplash.com)
DevOps
Дисциплина DevOps была создана для преодоления разрыва между разработчиками и операциями парней (например, инженеры по систему, DBAS и т. Д.). Основное видение состоит в том, чтобы (в основном) переходить от среды разработки в тестирование/производственные среды безупречны, быстро, автоматизированы и полностью прозрачно.
До этого развертывание вызывало постоянную подушку, а войны с стрельбой из-за сражения (иногда даже бросали клавиатуру) между двумя «племенами», и развертывание было медленным, болезненным и требовалось много рабочего времени. Вы можете это легко проверить, если вы знаете о компании -разработке программного обеспечения, которая не использует такую практику.
Как вы можете себе представить, на движение повлияло увеличение популярности гибких методологий, где быстрая развертывание очень поощряется и является нормой при разговоре о серьезных компаниях -разработчиках программного обеспечения.
IAAS
Инфраструктура как услуга. Вам предоставляется возможность запустить виртуальную машину с ОС по вашему выбору (ну, облачный провайдер должен поддерживать ее, Но наиболее известные ароматы Windows и Linux существуют ), Спецификации по вашему выбору (ОЗУ, постоянное хранилище , количество процессоров и т. Д.).
Как и со всеми урезанными виртуальными машинами, вы должны установить все самостоятельно, с компромиссом Быть больше под контролем Анкет
Наиболее известными примерами являются EC2 от AWS, Google Compute Engine из Google Cloud.
Паас
Платформа как услуга. Вы можете думать об этом как о абстракции IAAS.
Все, кроме вашей бизнес -логики, и часть базы данных — это черный ящик для вас. Вы можете знать подробности об инфраструктуре, но вы очень мало контролируете ее.
Например, вы можете изменить версии используемого вами программного обеспечения, но это произойдет:
- Из пользовательского интерфейса продавца
- Модификация версии произойдет в диапазоне, который поддерживает поставщик. Если поставщик не поддерживает Python 3.7, вы не можете его иметь И если вы попытаетесь обновить вручную, это, скорее всего, болезненно, и есть сильная вероятность, что вы будете все испортить. По крайней мере, это мой опыт.
Наиболее известными примерами являются Elastic Beanstalk от AWS, Google App Engine от Google Cloud.
Примечание : Существует комбинация компонентов *AAS в реальных случаях. Паас и IAAS работают вместе, особенно распространены. Это называется Гибридное облако Анкет
Саас
Программное обеспечение как услуга. В этом случае вы хотите получить доступ к кусочке программного обеспечения (облачного) и платите в соответствии с использованием, которое вы делаете (если нет бесплатных планов).
Вы не контролируете программное обеспечение, кроме того, что позволяет пользовательский интерфейс и потенциальный API. Наиболее известными примерами являются Netflix, Dropbox и большинство сервисов Google.
Вы можете увидеть визуальное сравнение IAAS, SaaS и PaaS в этом Статья Анкет
Обеспечение
Обеспечение в контексте DevOps означает (автоматически) начаться с инфраструктурой.
Поэтому, если кто -то хочет предоставить тестовую среду, он, вероятно, должен настроить несколько виртуальных машин (не случайные виртуальные машины, определенный тип виртуальной машины или определенное изображение, которое используется в качестве шаблона), а затем настройте требуемое программное обеспечение, настройка Любые веб -серверы и т. Д. Звучит скучно, а?
Именно поэтому люди используют инструменты обеспечения, которые выполняют работу для них автоматически (чтобы они могли просматривать Reddit и 9GAG без вины во время ожидания).
Два из наиболее известных инструментов для обеспечения Ansible и Terraform Анкет На данный момент я не буду вдаваться в подробности, так как это потребует 5-кратную статью, но я покажу пример в Terraform, чтобы показать вам, насколько это просто.
resource "aws\_instance" "example" { ami = "ami-b374d5a5" instance\_type = "t2.micro" provisioner "local-exec" { command = "echo ${aws\_instance.example.public\_ip} > ip\_address.txt" } }
Короткое объяснение может потребоваться для примера выше; ami Стоится с изображения Amazon и в значительной степени виртуальная виртуальная машина.
T2.micro относится к вычислительным характеристикам машины (ЦП, ОЗУ и т. Д.). Если вы не видели этого раньше, и вам любопытно, вы можете проверить это Страница Анкет
В значительной степени он настраивает экземпляр T2.micro с предопределенным AMI, а когда UP запускает команду Echo, в разделе Local-Exec.
Ansible играет на более низком уровне, где вы определяете настройку команд, называемых Playbook, с более подробными командами. Вокруг есть отличные статьи, такие как это Во -первых, я бы посоветовал вам прочитать это.
Докеризация
Dockerazition означает, что вам нужно сделать некоторые определенные шаги, чтобы ваше приложение работало с Docker.
Докер, в двух словах, является средством легкой виртуализации (немного упрощен, вы можете прочитать больше здесь ).
Вы можете определить изображение Docker, используя так называемый DockerFile, который в значительной степени представляет собой набор команд, которые строят изображение Docker шаг за шагом.
Здесь это один из самых простых файлов Docker, который вы могли бы найти, наряду с объяснениями. Больше изображений для начала можно найти в Docker Hub .
Почему все эта суета о Docker хотя? Что предлагает Docker?
Есть много преимуществ при использовании Docker, но для меня наиболее важными вариантами использования являются:
- Портативные среды. Я могу использовать ту же самую среду для разработки, для производства, для постановки среды, для воспроизведения проблемы производства, для того, чтобы сделать демонстрацию клиенту… и этот список можно продолжить. Нет больше «работает на моей машине».
- Настройка среды в пару команд. Это в значительной степени соответствует обеспечению, как видно в этой статье .
Без сервера
Вопреки тому, что подразумевает название, у нас все еще есть серверы, на которых работает логика бэкэнд. На самом деле происходит:
Если вы хотите выполнить определенную часть кода (называемой функцией, поэтому эта модель вычислений иногда также называется функцией в качестве услуги — FAAS), облачный провайдер выделяет необходимые ресурсы (динамическим образом) для его выполнения.
После окончания исполнения он выпускает эти ресурсы.
Функции работают в различных случайных триггерах или периодически бегают по-CRON.
В идеале, функции должны быть чистыми, что означает, что они полагаются только на свои аргументы, чтобы вычислять результат, а не на какое -либо внешнее состояние (например, база данных), хотя нет проблем с использованием внешнего сервера базы данных или около того.
Основными преимуществами является то, что вы заботитесь только о своей бизнес -логике и что вы можете масштабировать свои функции в взгляде на глаза.
Если вы хотите больше понимания этого, это может быть специфично для AWS, но это Статья отличное чтение.
Довольно хорошее видео для быстрого вступления было бы это Один из Traversy Media.
CI/CD
Непрерывная интеграция и непрерывная доставка. История такова: различные разработчики работают против предстоящего релиза или набора параллельных видальных функций. Когда код будет совершен (обычно для основной ветви, хотя это настраивается), набор операций работает автоматически, и цель состоит в том, чтобы все операции были успешными.
Такие операции заключаются в том, чтобы убедиться, что код компилируется, для успешного запуска модульных тестов, чтобы гарантировать, что тестовое покрытие выше приемлемо Анкет
Я думаю, что вы можете понять, насколько важно иметь непрерывную обратную связь и выполнять все необходимые шаги, не думая о них, и, что еще хуже, полагаться на свою силу воли, чтобы сделать это. Вы знаете много разработчиков, которые любят тестирование? Я не: D
Вывод
Спасибо, что прочитали эту статью. Если вы сейчас входите в DevOps, это увлекательное поле. Я надеюсь, что эта статья сделала ультрабатическую терминологию немного более ясной. Как всегда, не стесняйтесь комментировать любые ваши отзывы.
Первоначально опубликовано в https://perigk.github.io/ Анкет
Оригинал: «https://dev.to/perigk/the-devops-introduction-i-wish-i-had-ij8»