Более авторитетные определения в настоящее время исходят в основном от 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 и т. д., которые позволяют разработчикам писать и запускать фрагменты кода (функции), не заботясь о работе и обслуживании базового сервера. Они выполняются и оплачиваются только по требованию, когда функция используется. срабатывает.
Четыре сценария применения
Облачные технологии имеют широкие перспективы применения во многих областях, включая, помимо прочего:
Крупномасштабные интернет-приложения. Создавайте интернет-приложения с высокой доступностью, производительностью и масштабируемостью.
Финансовый бизнес: обеспечьте безопасные, надежные и эффективные методы разработки и развертывания приложений для повышения надежности и безопасности финансовых бизнес-приложений.
Искусственный интеллект и большие данные. Обеспечьте эффективные, масштабируемые и гибкие методы разработки и развертывания приложений для искусственного интеллекта и больших данных.
Интернет вещей: обрабатывайте большие объемы данных датчиков, добивайтесь быстрого развертывания и эластичного масштабирования, а также повышайте надежность и удобство обслуживания приложений Интернета вещей.
Блокчейн: Обеспечьте эффективные, масштабируемые и эластичные методы разработки и развертывания приложений блокчейна.
Это все, что касается облачных технологий, спасибо, что читаете!