Les définitions faisant le plus autorité proviennent actuellement principalement de Pivotal et de la Cloud Native Computing Foundation (CNCF).
1.1 Pivot
4 points clés : DevOps、持续交付、微服务、容器化。
Six caractéristiques : 模块化(Modularity) 、可观测性(Observability)、可部署性(Deployability)、 可测试性(Testability)、可处理性(Disposability)、可替换性(Replaceability)。
Le cloud natif est un ensemble d'idées, incluant à la fois la technologie (microservices, infrastructure agile) et la gestion (DevOps, livraison continue, loi de Conway, réorganisation, etc.). Le cloud natif est un ensemble de technologies cloud et de méthodes de gestion d'entreprise.
1.2 CNCF
La technologie cloud native aide les organisations à créer et à exécuter des applications évolutives de manière élastique dans de nouveaux environnements dynamiques tels que le cloud public, le cloud privé et le cloud hybride.
Les technologies représentatives du cloud natif incluent les conteneurs, le maillage de services, les microservices, l'infrastructure immuable et l'API déclarative. Ces techniques permettent de créer des systèmes faiblement couplés, tolérants aux pannes, faciles à gérer et à observer.
Associées à une automatisation fiable, les technologies cloud natives permettent aux ingénieurs d'apporter facilement des modifications majeures fréquentes et prévisibles aux systèmes.
2. Caractéristiques techniques
2.1 Architecture des microservices :
Le cloud natif préconise l'utilisation d'une architecture de microservices pour créer des applications, en divisant les applications en plusieurs petits services indépendants et déployables indépendamment, chacun étant axé sur la résolution de fonctions commerciales spécifiques. Cela améliore l’évolutivité, la flexibilité et la maintenabilité des applications.
2.2 Déploiement conteneurisé :
Les applications cloud natives sont généralement déployées à l'aide d'une technologie de conteneur telle que Docker, qui permet un déploiement multiplateforme, portable et cohérent en regroupant l'application et ses dépendances dans des images de conteneur. La conteneurisation offre également les avantages de l'isolation et de l'utilisation des ressources, permettant aux applications de s'exécuter plus efficacement.
2.3 Orchestration dynamique et gestion automatisée :
La nativement du cloud met l'accent sur l'utilisation d'outils et de plates-formes automatisés (tels que Kubernetes) pour orchestrer et gérer dynamiquement les applications, gérer automatiquement les opérations telles que le déploiement, la mise à l'échelle, les mises à niveau et la surveillance des conteneurs, améliorer la flexibilité et la fiabilité des applications et réduire la complexité opérationnelle. .
2.4 Mise à l'échelle élastique :
Le cloud natif permet aux applications d'évoluer de manière élastique en fonction des conditions de charge. Grâce à l'orchestration automatisée des conteneurs et à la découverte des services, les instances de conteneur peuvent être ajoutées ou supprimées de manière dynamique pour s'adapter aux différents changements de charge et améliorer les performances des applications et l'utilisation des ressources.
2.5 Livraison et déploiement continus :
La nativeisation du cloud préconise l'utilisation de méthodes d'intégration continue et de livraison continue (CI/CD) pour obtenir une livraison et un déploiement rapides des applications grâce à des processus de création, de test et de déploiement automatisés, les mises à jour des applications peuvent être poussées rapidement et de manière fiable vers l'environnement de production. le risque et le coût du temps de publication.
Trois piles technologiques
3.1 Conteneurisation
Moteur de conteneur : Docker, par exemple, est un moteur de conteneur d'applications open source qui regroupe les applications et leurs dépendances dans des images de conteneur standardisées. Les images de conteneurs peuvent s'exécuter dans n'importe quel environnement prenant en charge Docker, garantissant ainsi la cohérence des applications dans les environnements de développement, de test et de production.
Runtime du conteneur : tel que containersd ou runc, est responsable de la gestion du cycle de vie du conteneur, y compris la création, le démarrage, l'arrêt, la suppression et d'autres opérations du conteneur, ainsi que l'interaction avec les ressources de l'hôte.
Orchestration de conteneurs : Kubernetes (K8s), par exemple, est actuellement la plate-forme d'orchestration de conteneurs la plus populaire. Elle fournit un ensemble puissant d'API et d'ensembles d'outils pour le déploiement, la planification, l'expansion et la contraction automatisés des conteneurs, l'équilibrage de charge, les mises à niveau progressives et l'auto-réparation. ., découverte de services, gestion de configuration et autres opérations.
3.2 Architecture des microservices
Microservices : décomposez une grande application monolithique en un ensemble de petits services indépendants. Chaque service se concentre sur une seule fonction métier et interagit via des API. Les microservices collaborent entre eux via des mécanismes de communication légers (tels que l'API RESTful, gRPC, etc.), ce qui contribue à augmenter la vitesse de développement, à réduire le couplage et à améliorer l'évolutivité et la tolérance aux pannes du système.
3.3 Communication entre services
API RESTful : Basée sur le protocole HTTP et ses différentes méthodes (GET, POST, PUT, DELETE, etc.), l'interface est conçue dans un style architectural orienté ressources et est largement utilisée dans les interactions entre microservices.
gRPC : Un framework RPC (Remote Procedure Call) hautes performances et à usage général développé par Google, basé sur le protocole HTTP/2 et le protocole de sérialisation Protocol Buffers, et adapté aux scénarios avec des exigences de performances et d'efficacité élevées.
file d'attente des messages : Tels que RabbitMQ, Apache Kafka, Amazon SQS, etc., en tant que middleware de communication asynchrone, utilisé pour découpler les services, gérer les pics de charge et mettre en œuvre une architecture basée sur les événements.
3.4 Maillage de services
Technologie de maillage de services : Tels qu'Istio, Linkerd, Envoy, etc., sont situés entre les services. En tant que couche d'infrastructure transparente, ils sont responsables de la communication réseau, du routage, de la sécurité, de l'observabilité et d'autres fonctions entre les services. Un maillage de services résume la complexité de la communication entre les services, éliminant ainsi le besoin pour les développeurs d'implémenter ces fonctions dans le code de l'application.
3.5 Intégration continue et déploiement continu (CI/CD)
Outils CI/CD : Tels que Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps, etc., utilisés pour automatiser le processus de construction, de test, d'empaquetage, de publication et de déploiement du développement logiciel. Les pratiques CI/CD aident à raccourcir les cycles d'itération, à améliorer la qualité des logiciels et à réduire les erreurs causées par les interventions manuelles.
3.6 Infrastructure déclarative
Configuration déclarative : Utilisez des fichiers de configuration au format YAML ou JSON pour décrire l'état cible du déploiement d'applications, tels que les manifestes YAML de Kubernetes. Les développeurs n'ont qu'à définir l'état souhaité et le système gérera automatiquement comment atteindre cet état.
Outils de gestion de l'infrastructure en tant que code (IaC) : Tels que Terraform, CloudFormation, etc., utilisés pour la gestion de l'infrastructure sur les plates-formes cloud afin d'assurer le contrôle des versions, le déploiement automatisé et la gestion de la cohérence de l'infrastructure.
3.7 Chaîne d'outils DevOps
Agrégation de journaux : Tels que ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog, etc., utilisés pour collecter, analyser, stocker, rechercher, analyser et visualiser les données de journaux.
moniteur: Tels que Prometheus, Grafana, New Relic, Dynatrace, etc., assurent la surveillance des performances du système et des applications.
Trace d'erreur : Tels que Sentry, Bugsnag, Rollbar, etc., utilisés pour capturer, analyser et gérer les exceptions et les erreurs pendant l'exécution de l'application.
Ingénierie du chaos : Comme Chaos Monkey, Chaos Toolkit, etc., en introduisant de manière proactive des pannes dans l'environnement de production pour tester les performances du système et les capacités de récupération dans des conditions anormales.
3.8 Informatique sans serveur (sans serveur)
Service sans serveur : Comme AWS Lambda, Google Cloud Functions, Azure Functions, etc., qui permettent aux développeurs d'écrire et d'exécuter des extraits de code (fonctions) sans se soucier du fonctionnement et de la maintenance du serveur sous-jacent. Ils ne sont exécutés et facturés à la demande que lorsque la fonction est exécutée. est déclenché.
Quatre scénarios d'application
La technologie cloud native offre de larges perspectives d’application dans de nombreux domaines, notamment :
Applications Internet à grande échelle : créez des applications Internet à haute disponibilité, hautes performances et hautement évolutives.
Activités financières : fournir des méthodes de développement et de déploiement d'applications sûres, fiables et efficaces pour améliorer la fiabilité et la sécurité des applications commerciales financières.
Intelligence artificielle et Big Data : fournir des méthodes de développement et de déploiement d'applications efficaces, évolutives et élastiques pour les applications d'IA et de Big Data.
Internet des objets : traitez des données massives de capteurs, réalisez un déploiement rapide et une mise à l'échelle élastique, et améliorez la fiabilité et la maintenabilité des applications de l'Internet des objets.
Blockchain : fournir des méthodes de développement et de déploiement d'applications efficaces, évolutives et élastiques pour les applications blockchain.
Tout tourne autour du cloud natif, merci d'avoir lu !