Основные элементы и ключевые технологические стеки облачных технологий включают в себя:
1. Контейнеризация: - Docker: Docker — это механизм контейнеров приложений с открытым исходным кодом, который упаковывает приложения и их зависимости (например, библиотеки, файлы конфигурации и т. д.) в стандартизированные образы контейнеров. Образы контейнеров могут работать в любой среде, поддерживающей Docker, обеспечивая согласованность приложений в средах разработки, тестирования и производства. Docker реализует упрощенную изоляцию ресурсов и управление ими с помощью технологий изоляции контейнеров (таких как пространства имен Linux и группы управления).
- Среда выполнения контейнера: например,Containerd или runc, которые являются конкретными реализациями среды выполнения контейнеров и отвечают за управление жизненным циклом контейнеров, включая создание, запуск, остановку, удаление и другие операции контейнера, а также взаимодействие с ресурсами хоста.
- Оркестровка контейнеров: - Kubernetes (K8s): Kubernetes в настоящее время является самой популярной платформой оркестрации контейнеров, исходный код которой открыт от Google и передан в дар Cloud. Native Computing Фонд (CNCF). Kubernetes предоставляет мощный набор API и инструментов для автоматического развертывания контейнеров, планирования, расширения емкости, балансировки нагрузки, последовательных обновлений, самовосстановления, обнаружения сервисов, управления конфигурацией и других операций. Kubernetes значительно повысил эффективность управления, эксплуатации и обслуживания крупномасштабных контейнерных приложений благодаря таким функциям, как режим контроллера, декларативный API и возможности самовосстановления. - Docker Swarm、Apache Другие инструменты оркестрации, такие как Mesos (а также Marathon или DC/OS поверх него), также предоставляют функции управления контейнерным кластером, но их доля рынка и экосистема меньше, чем у Kubernetes. 2. Микросервисная архитектура: - Микросервисы — это шаблон проектирования, который разбивает большое монолитное приложение на набор небольших независимых сервисов. Каждый сервис ориентирован на одну бизнес-функцию и взаимодействует через API. Микросервисы используют облегченные механизмы связи (такие как RESTful API, gRPC и т. д.) взаимодействуют друг с другом, и каждый сервис можно разрабатывать, развертывать, расширять и поддерживать независимо, что помогает увеличить скорость разработки, уменьшить связанность, а также повысить масштабируемость и отказоустойчивость системы. 3. Межсервисная связь: - RESTful API: основанный на протоколе HTTP и его различных методах (GET, POST, PUT, DELETE и т. д.), интерфейс разработан в ресурсно-ориентированном архитектурном стиле. RESTful API прост для понимания и реализации, имеет хорошую межъязыковую совместимость и широко используется при взаимодействии между микросервисами. - gRPC: высокопроизводительный RPC общего назначения (удаленный Procedure Call) фреймворк, основанный на протоколе HTTP/2 и протоколе Протокол сериализации буферов (protobuf). gRPC поддерживает взаимодействие на нескольких языках (таких как Java, Go, Python, Node.js и т. д.) и предоставляет расширенные функции, такие как двунаправленная потоковая передача, сжатие сообщений, тайм-аут, повторная попытка и аутентификация. Он подходит для сценариев с высокой нагрузкой. Требования к производительности и эффективности. - Очередь сообщений: например RabbitMQ、Apache Kafka、Amazon SQS и т. д. в качестве промежуточного программного обеспечения асинхронной связи используются для разделения служб, обработки пиковых нагрузок и реализации архитектуры, управляемой событиями. Очереди сообщений позволяют службам обмениваться сообщениями в режимах публикации-подписки (Pub/Sub) или «точка-точка» (очередь) и подходят для обработки слабосвязанных сценариев связи не в режиме реального времени. 4. Сервисная сетка: - Технологии Service Mesh, такие как Istio, Linkerd и Envoy, расположены между сервисами. Являясь прозрачным уровнем инфраструктуры, они отвечают за сетевую связь, маршрутизацию, безопасность, наблюдаемость и другие функции между сервисами. Service Mesh абстрагирует сложность взаимодействия между сервисами, поэтому разработчикам не нужно реализовывать эти функции в коде приложения, но они могут обеспечить управление сервисами посредством управления конфигурацией и политиками. Сети сервисов часто тесно интегрированы с платформами оркестрации контейнеров, такими как Kubernetes, но их также можно развертывать независимо. 5. Непрерывная интеграция и непрерывное развертывание (CI/CD): - Jenkins、GitLab CI/CD、GitHub Actions、Azure Такие инструменты, как DevOps, используются для автоматизации процессов сборки, тестирования, упаковки, выпуска и развертывания программного обеспечения. Практики CI/CD помогают сократить цикл итераций, улучшить качество программного обеспечения и уменьшить количество ошибок, вызванных ручным вмешательством. Это важное средство достижения гибкой разработки и культуры DevOps. 6. Декларативная инфраструктура: - Используйте файлы конфигурации формата YAML или JSON для описания целевого состояния развертывания приложения, например Kubernetes YAML. проявляется. Декларативная конфигурация означает, что разработчикам нужно только определить желаемое состояние, и система автоматически решит, как достичь этого состояния. Эта модель облегчает контроль версий, откат, аудит и лучшую интеграцию с такими инструментами автоматизации, как CI/CD. - Такие инструменты, как Terraform и CloudFormation, используются для управления инфраструктурой как кодом (IaC) на облачных платформах. Они позволяют программно определять и управлять облачными ресурсами (такими как виртуальные машины, хранилища, сети, DNS и т. д.), обеспечивая контроль версий, автоматическое развертывание и управление согласованностью инфраструктуры. 7. Цепочка инструментов DevOps: - Агрегация журналов: например ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog и т. д. используются для сбора, анализа, хранения, поиска, анализа и визуализации данных журналов, чтобы помочь разработчикам быстро находить и устранять проблемы. - Мониторинг: например, Прометей, Grafana、New Relic и Dynatrace обеспечивают мониторинг производительности системы и приложений, включая сбор, оповещение и визуальное отображение процессора, памяти, сети, использования диска, времени отклика, частоты ошибок и других показателей, помогая эксплуатационному и техническому персоналу оперативно обнаруживать и устранять узкие места или аномалии производительности. . - Отслеживание ошибок: такие как Sentry, Bugsnag и Rollbar, которые используются для сбора, анализа и управления исключениями и ошибками во время выполнения приложения. Они предоставляют подробные трассировки стека, контекстную информацию, анализ атрибуции и другие функции, которые помогают быстро найти и исправить. проблемы с кодом. - Хаос-инжиниринг: например. Chaos Monkey、Chaos Toolkit заранее выявляет сбои в производственной среде (например, случайное прекращение обслуживания, моделируемые задержки в сети, нехватку ресурсов и т. д.) для проверки производительности системы и возможностей восстановления в аномальных условиях, чтобы повысить устойчивость системы и возможности реагирования на сбои. 8. Бессерверные вычисления (Serverless): - AWS Lambda、Google Cloud Functions、Azure Такие службы, как функции, позволяют разработчикам писать и запускать фрагменты кода (функции), не заботясь о работе и обслуживании базового сервера. Они выполняются и оплачиваются только по требованию при запуске функции. Бессерверная архитектура дополнительно снижает сложность эксплуатации и обслуживания, улучшает использование ресурсов и особенно подходит для обработки кратковременных рабочих нагрузок с высоким уровнем параллелизма, управляемых событиями. 9. Облачное хранилище и база данных: - Хранилище объектов: например Amazon S3、Google Cloud Storage、Azure Blob Хранилище обеспечивает массивные, недорогие и высокодоступные услуги хранения неструктурированных данных. Оно часто используется для хранения изображений, видео, журналов, резервных копий и других данных. - Служба базы данных: например Amazon RDS、Google Cloud SQL、Azure Database for Службы управляемых баз данных, такие как MySQL, обеспечивают полностью управляемые возможности для реляционных баз данных (таких как MySQL, PostgreSQL, Oracle и т. д.), включая автоматическое резервное копирование, восстановление, расширение, высокую доступность и другие функции. Кроме того, существуют собственные облачные базы данных, такие как CockroachDB (распределенная база данных SQL), TiDB (распределенная база данных HTAP), Cassandra (распределенная база данных NoSQL) и т. д. предназначены для работы в облачных средах и обладают характеристиками горизонтального расширения, высокой доступности и строгой согласованности. 10. Собственная облачная безопасность: - Управление идентификацией и доступом (IAM): например. OAuth、JWT、OpenID Connect Такие стандарты и протоколы используются для реализации аутентификации пользователей, авторизации и единого входа (SSO), чтобы гарантировать, что только аутентифицированные и авторизованные пользователи или службы могут получить доступ к соответствующим ресурсам. - Безопасность на стороне сервера: например, mTLS (двусторонняя аутентификация SSL/TLS) обеспечивает безопасность связи между сервисами, API Шлюз обычно обеспечивает аутентификацию, авторизацию, ограничение скорости, преобразование запросов, реализацию политики безопасности и другие функции для защиты серверных служб от атак. - Инструменты сканирования безопасности и обеспечения соответствия: например. Trivy、Clair Сканирование уязвимостей образа контейнера для обеспечения безопасности во время выполнения. Открыть; Policy Agent (OPA) Это механизм общей политики, который может реализовывать политики в виде кода для обеспечения конфигурации ресурсов, запросов API, Kubernetes. Admission Контроль и т. д. соответствуют политикам безопасности и соответствия организации.
Стек облачных технологий поощряет внедрение таких практик, как гибкая разработка, DevOps, непрерывная интеграция и непрерывное развертывание (CI/CD), а также хаос-инжиниринг для достижения процесса доставки программного обеспечения с быстрой итерацией, быстрой обратной связью, быстрым восстановлением и непрерывным процессом. улучшение. С помощью облачных технологий предприятия могут создавать современные приложения, которые являются очень гибкими, простыми в обслуживании и быстро реагируют на изменения в бизнесе, полностью раскрывая потенциал облачных вычислений и повышая конкурентоспособность бизнеса.