J'ai récemment commencé à travailler pour une entreprise qui souhaite diviser leur application SaaS monolithique en microservices conteneurisés. J'ai du mal à saisir une partie fondamentale du stockage persistant, cependant. Pourquoi y a-t-il tant de plates-formes concurrentes différentes? Portworx, Rexray, StorageOS, Flocker, Inifint, etc.
Mes questions
Pourquoi quelqu'un ne ferait-il pas simplement tourner un serveur NFS et y utiliserait une structure de dossiers hiérarchique comme backend de stockage? Quels gains obtenez-vous en utilisant l'un de ces outils?
Est-il dangereux d'utiliser quelque chose comme ça avec Docker? Quelles sont les causes courantes des pertes de données catastrophiques dans un environnement basé sur docker?
Quelle solution de stockage persistant recommanderiez-vous et pourquoi? Mon entreprise exploite une plateforme SaaS. Les charges utiles de données sont de petite taille (5kb-100kb). Le traitement des données est de petite à moyenne consommation de ressources. Le volume global est moyen, mais continue de croître. Nous espérons déplacer complètement notre application monolithique vers le cloud en tant que microservices conteneurisés séparés. Y compris notre entrepôt de données.
Quelque peu sans rapport, mais cela est lié. Quelles sont les forces de l'utilisation de Kubernetes comme orchestrateur par rapport à Rancher / Cattle? Kubernetes n'est-il pas trop conçu pour une plateforme de petite à moyenne taille? Y a-t-il des avantages à utiliser Kubernetes dans Rancher en dehors de l'installation en un clic?
Merci pour la perspicacité. Désolé pour la naïveté. Je salue toute la documentation et le matériel de lecture supplémentaire.
EDIT: Pour le contexte, nous utilisons Azure comme plateforme cloud sous-jacente.
la source
Réponses:
Je peux répondre au 2ème point:
Docker est le plus adapté dans une architecture basée sur un micro-service lorsque l'application s'exécute à l'intérieur des conteneurs mais que le stockage ou toute autre session en direct sont conservés dans la RAM partagée ou la base de données.
Fondamentalement, vous ne devez rien stocker à l'intérieur du conteneur Docker. Il y a plusieurs raisons à cela:
Envisagez la mise à niveau: un membre de votre équipe a créé une image plus récente de l'application et vous avez besoin que le conteneur fonctionne avec la dernière image. Le docker actuel et le moyen le plus populaire de le faire sont de réduire le conteneur existant et de faire tourner un nouveau conteneur avec les mêmes paramètres d'exécution que l'ancien conteneur mais avec la nouvelle image. C'est l'une des principales raisons pour lesquelles les conteneurs doivent toujours être sans état et ne contenir aucune donnée. Vous pouvez avoir toutes vos données montées à un endroit et des sessions conservées dans une base de données ou quelque chose comme memchached, etc.
L'un des grands cas d'utilisation de docker est de créer des clusters. Si vous commencez à conserver des données à l'intérieur de vos conteneurs, c'est une surcharge pour maintenir ces données en synchronisation entre les conteneurs d'application.
La communauté des dockers en général ne recommande pas de conserver des données dans un conteneur et donc personne n'a essayé de prendre ce risque en production et personne ne veut être le premier conteur de la façon dont ils ont gâché la production :)
la source