Обмен технологиями

Облако

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Облако

определение

Более авторитетные определения в настоящее время исходят в основном от Pivotal и Cloud Native Computing Foundation (CNCF).

1.1 Поворотный момент

  • 4 ключевых момента:
    DevOps持续交付微服务容器化
  • Шесть характеристик:
    模块化(Modularity)可观测性(Observability)可部署性(Deployability)
    可测试性(Testability)可处理性(Disposability)可替换性(Replaceability)
  • Cloud Native — это совокупность идей, включающая как технологии (микросервисы, гибкая инфраструктура), так и управление (DevOps, непрерывная доставка, закон Конвея, реорганизация и т. д.). Cloud Native — это совокупность облачных технологий и методов управления предприятием.

1.2 CNCF

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

2. Технические характеристики

2.1 Микросервисная архитектура:

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

2.2 Контейнерное развертывание:

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

2.3 Динамическая оркестровка и автоматизированное управление:

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

2.4 Эластичное масштабирование:

Cloud Native позволяет приложениям эластично масштабироваться в соответствии с условиями нагрузки. Благодаря автоматизированной оркестрации контейнеров и обнаружению сервисов экземпляры контейнеров можно динамически добавлять или удалять, чтобы адаптироваться к различным изменениям нагрузки и повысить производительность приложений и использование ресурсов.

2.5 Непрерывная доставка и развертывание:

Нативизация облака предполагает использование методов непрерывной интеграции и непрерывной доставки (CI/CD) для обеспечения быстрой доставки и развертывания приложений. Благодаря автоматизированным процессам сборки, тестирования и развертывания обновления приложений можно быстро и надежно переносить в производственную среду. риск и временные затраты на публикацию.


Три технологических стека

3.1 Контейнеризация

  • Механизм контейнеров. Например, Docker — это механизм контейнеров приложений с открытым исходным кодом, который упаковывает приложения и их зависимости в стандартизированные образы контейнеров. Образы контейнеров могут работать в любой среде, поддерживающей Docker, обеспечивая согласованность приложений в средах разработки, тестирования и производства.
  • Среда выполнения контейнера: например,Containerd или Runc, отвечает за управление жизненным циклом контейнера, включая создание, запуск, остановку, удаление и другие операции контейнера, а также взаимодействие с ресурсами хоста.
  • Оркестрация контейнеров. Например, Kubernetes (K8s) в настоящее время является самой популярной платформой оркестрации контейнеров. Она предоставляет мощный набор API и наборов инструментов для автоматического развертывания контейнеров, планирования, расширения и сжатия, балансировки нагрузки, чередующихся обновлений и самовосстановления. ., обнаружение служб, управление конфигурацией и другие операции.

3.2 Микросервисная архитектура

  • Микросервисы: разбейте большое монолитное приложение на набор небольших независимых сервисов. Каждый сервис ориентирован на одну бизнес-функцию и взаимодействует через API. Микросервисы взаимодействуют друг с другом посредством облегченных механизмов связи (таких как RESTful API, gRPC и т. д.), что помогает увеличить скорость разработки, уменьшить связанность, а также повысить масштабируемость и отказоустойчивость системы.

3.3 Связь между службами

  • RESTful API:
    Основанный на протоколе HTTP и его различных методах (GET, POST, PUT, DELETE и т. д.), интерфейс выполнен в ресурсно-ориентированном архитектурном стиле и широко используется при взаимодействии между микросервисами.
  • гРПЦ:
    Высокопроизводительная платформа RPC (удаленный вызов процедур) общего назначения, разработанная Google на основе протокола HTTP/2 и протокола сериализации протокольных буферов и подходящая для сценариев с высокими требованиями к производительности и эффективности.
  • очередь сообщений:
    Такие как RabbitMQ, Apache Kafka, Amazon SQS и т. д. в качестве промежуточного программного обеспечения асинхронной связи, используемого для разделения сервисов, обработки пиковых нагрузок и реализации архитектуры, управляемой событиями.

3.4 Сервисная сетка

  • Технология сервисной сетки:
    Такие как Istio, Linkerd, Envoy и т. д. расположены между сервисами. Являясь прозрачным уровнем инфраструктуры, они отвечают за сетевую связь, маршрутизацию, безопасность, наблюдаемость и другие функции между сервисами. Сервисная сетка абстрагирует сложность взаимодействия между сервисами, устраняя необходимость для разработчиков реализовывать эти функции в коде приложения.

3.5 Непрерывная интеграция и непрерывное развертывание (CI/CD)

  • Инструменты CI/CD:
    Такие как Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps и т. д., используемые для автоматизации процесса сборки, тестирования, упаковки, выпуска и развертывания разработки программного обеспечения. Практики CI/CD помогают сократить циклы итераций, улучшить качество программного обеспечения и уменьшить количество ошибок, вызванных ручным вмешательством.

3.6 Декларативная инфраструктура

  • Декларативная конфигурация:
    Используйте файлы конфигурации формата YAML или JSON для описания целевого состояния развертывания приложения, например YAML-манифесты Kubernetes. Разработчикам нужно только определить желаемое состояние, и система автоматически определит, как его достичь.
  • Инфраструктура как инструменты управления кодом (IaC):
    Такие как Terraform, CloudFormation и т. д., используемые для управления инфраструктурой на облачных платформах для обеспечения контроля версий, автоматического развертывания и управления согласованностью инфраструктуры.

3.7 Цепочка инструментов DevOps

  • Агрегация журналов:
    Такие как ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog и т. д., используемые для сбора, анализа, хранения, поиска, анализа и визуализации данных журналов.
  • монитор:
    Такие как Prometheus, Grafana, New Relic, Dynatrace и т. д. обеспечивают мониторинг производительности системы и приложений.
  • След ошибки:
    Такие как Sentry, Bugsnag, Rollbar и т. д., используемые для захвата, анализа и управления исключениями и ошибками во время выполнения приложения.
  • Хаос-инжиниринг:
    Такие как Chaos Monkey, Chaos Toolkit и т. д., путем упреждающего внесения ошибок в производственную среду для проверки производительности системы и возможностей восстановления в нештатных условиях.

3.8 Бессерверные вычисления (Бессерверные)

  • Бессерверный сервис:
    Такие как AWS Lambda, Google Cloud Functions, Azure Functions и т. д., которые позволяют разработчикам писать и запускать фрагменты кода (функции), не заботясь о работе и обслуживании базового сервера. Они выполняются и оплачиваются только по требованию, когда функция используется. срабатывает.

Четыре сценария применения

Облачные технологии имеют широкие перспективы применения во многих областях, включая, помимо прочего:

  • Крупномасштабные интернет-приложения. Создавайте интернет-приложения с высокой доступностью, производительностью и масштабируемостью.
  • Финансовый бизнес: обеспечьте безопасные, надежные и эффективные методы разработки и развертывания приложений для повышения надежности и безопасности финансовых бизнес-приложений.
  • Искусственный интеллект и большие данные. Обеспечьте эффективные, масштабируемые и гибкие методы разработки и развертывания приложений для искусственного интеллекта и больших данных.
  • Интернет вещей: обрабатывайте большие объемы данных датчиков, добивайтесь быстрого развертывания и эластичного масштабирования, а также повышайте надежность и удобство обслуживания приложений Интернета вещей.
  • Блокчейн: Обеспечьте эффективные, масштабируемые и эластичные методы разработки и развертывания приложений блокчейна.

Это все, что касается облачных технологий, спасибо, что читаете!