Présentation
Aujourd'hui (approximativement Translator 07-24-2018), l'équipe Go de Google a publié le nouveau projet Open Source
Go Cloud , une bibliothèque et des outils de développement dans le
cloud ouvert . Avec ce projet, nous visons à ce que les développeurs choisissent la langue Go pour créer des applications cross-cloud.
Cet article explique pourquoi nous avons lancé ce projet, des détails sur le fonctionnement de Go Cloud et comment s'impliquer et commencer à l'utiliser.
Pourquoi une programmation cross-cloud? Pourquoi maintenant?
Nous estimons qu'il y a
plus d'un million de développeurs utilisant Go dans le monde. Go sert de nombreux projets orientés cloud les plus critiques, notamment Kubernetes, Istio et Docker. Des entreprises telles que Lyft, Capital One, Netflix et
bien d'autres dépendent de Go pour la production. Au fil des ans, nous avons constaté que les développeurs aiment utiliser Go pour le développement du cloud en raison de son efficacité, de sa productivité, de sa compétitivité intégrée et de sa faible latence.
Dans le cadre de notre travail pour soutenir le développement rapide de Go, nous avons interviewé des équipes qui travaillent avec Go et comprennent comment elles utilisent le langage et comment améliorer l'écosystème Go à l'avenir. L'un des principaux sujets évoqués par de nombreuses organisations interrogées est la nécessité d'un développement inter-cloud. Ces équipes (interviewés) souhaitent pouvoir déployer leurs applications dans
des environnements
cloud multi-cloud et
hybrides , et répartir la charge entre les fournisseurs de cloud sans modification significative du code de l'application.
Pour ce faire, certaines équipes tentent de délier leurs applications d'une API spécifique au fournisseur afin d'écrire du code plus simple et plus portable (cross-cloud). Cependant, les exigences à court terme pour la fourniture de fonctionnalités signifient que les équipes doivent sacrifier les exigences à long terme pour l'informatique inter-cloud. Par conséquent, la plupart des applications Go exécutées dans le cloud sont étroitement liées au fournisseur de cloud initialement sélectionné.
Les équipes peuvent également utiliser Go Cloud, un ensemble d'API cloud ouvertes et partagées, pour programmer des applications cloud plus simples et plus portables. Go Cloud fournit également les bases d'un écosystème de bibliothèques cloud portables. Go Cloud permet aux équipes de se concentrer sur les fonctionnalités lors du développement d'applications tout en conservant une flexibilité à long terme pour le déploiement d'applications dans des architectures multi-cloud et cloud hybride. Les applications Go Cloud peuvent également être migrées vers le fournisseur de cloud qui convient le mieux aux besoins de l'application.
Qu'est-ce que Go Cloud?
Nous avons identifié les services communs utilisés par les applications cloud et créé une API commune pour travailler entre les fournisseurs de cloud. Aujourd'hui, Go Cloud peut fonctionner avec le stockage d'objets blob, la base de données MySQL, les paramètres d'exécution (configuration) et un serveur HTTP configuré avec la journalisation des demandes, la surveillance et la vérification de l'intégrité. Go Cloud fonctionne avec Google Cloud Platform (GCP) et Amazon Web Services (AWS). Nous continuerons de travailler avec des partenaires de l'industrie du cloud et de la communauté Go pour ajouter un support pour d'autres fournisseurs de cloud dans un avenir proche.
Go Cloud vise à développer une API commune indépendante du fournisseur pour la plupart des services utilisés, par exemple, un déploiement simple et facile des applications Go sur un autre cloud. Go Cloud peut également être utilisé comme base pour développer d'autres bibliothèques Open Source pour travailler entre les fournisseurs de cloud. Les commentaires de tous types de développeurs et à tous les niveaux de développement affecteront la priorité de la mise en œuvre / ajout de telle ou telle fonctionnalité dans les futures versions de l'API Go Cloud.
Comment ça marche?
Go Cloud est basé sur un ensemble d'API communes pour la programmation inter-cloud. Regardons un exemple d'utilisation du stockage d'objets blob. Vous pouvez utiliser le type générique
* blob.Storage pour copier un fichier d'un lecteur local vers le cloud. Commençons par ouvrir le stockage S3 à l'aide du
package s3blob fourni:
À partir du moment où
* blob.Bucket apparaît dans l'application, vous avez la possibilité de créer
* blob.Writer , qui à son tour implémente l'interface
io.Writer . À partir de ce moment, l'application (programme) peut utiliser
* blob.Writer pour écrire des données dans le stockage cloud, en vérifiant que
Fermer ne renvoie pas d'erreur.
ctx := context.Background() b, err := setupBucket(ctx) if err != nil { log.Fatalf("Failed to open bucket: %v", err) } data, err := ioutil.ReadFile("gopher.png") if err != nil { log.Fatalf("Failed to read file: %v", err) } w, err := b.NewWriter(ctx, "gopher.png", nil) if err != nil { log.Fatalf("Failed to obtain writer: %v", err) } _, err = w.Write(data) if err != nil { log.Fatalf("Failed to write to bucket: %v", err) } if err := w.Close(); err != nil { log.Fatalf("Failed to close: %v", err) }
Notez que la logique de travail avec le stockage (compartiment) ne fait pas référence aux spécificités d'AWS S3. Go Cloud fait du remplacement du stockage cloud essentiellement un remplacement de la fonction utilisée pour ouvrir
* blob.Bucket . Une application peut facilement passer à l'utilisation de Google Cloud Storage en instanciant
* blob.Bucket à l' aide de
gcsblob.OpenBucket sans modifier le code qui copie le fichier:
Jusqu'à présent, cependant, différentes étapes sont nécessaires pour accéder au stockage pour différents fournisseurs de cloud, le type final utilisé par l'application reste le même
* blob.Bucket . Ainsi, le code d'application reste isolé du code spécifique au cloud. Pour augmenter la compatibilité avec les bibliothèques Go existantes, Go Cloud utilise les interfaces existantes fournies dans la bibliothèque Go standard, telles que
io.Writer ,
io.Reader et
* sql.DB.Le code requis pour accéder aux services cloud (la fonction
setupBucket () de l'exemple ci-dessus) suit le modèle suivant: des abstractions supérieures sont construites en utilisant des abstractions plus basiques (inférieures). Bien que vous puissiez écrire un tel code avec des stylets, Go Cloud automatise cela avec
Wire , un outil qui génère pour vous du code propre au cloud.
La documentation de Wire explique comment l'installer et l'utiliser, tandis que les
exemples montrent Wire en action.
Comment s'impliquer dans le projet et en savoir plus?
Pour commencer, nous vous recommandons le
guide suivant, puis nous vous recommandons d'essayer de créer l'application à l'aide de Go Cloud vous-même. Si vous utilisez déjà AWS ou GCP, vous pouvez essayer de migrer des parties d'applications existantes pour utiliser Go Cloud. Si vous utilisez d'autres fournisseurs de cloud ou un service sur site, vous pouvez étendre Go Cloud pour le prendre en charge en implémentant des interfaces de pilote (par exemple
driver.Bucket ).
Nous apprécierons toutes sortes d'expériences avec Go Cloud.
Le développement de
Go Cloud est
propulsé par GitHub. Nous serons heureux de toute contribution au projet, y compris la piscine de récupération. Créez un
problème pour nous faire savoir ce que vous pensez qu'il faudrait améliorer ou quelles API la bibliothèque devrait prendre en charge en premier lieu. Pour rester à l'affût des mises à jour et des nouvelles, rejoignez la
liste de diffusion du projet.
Le projet exige que les contributeurs signent le même contrat de licence de contributeur tel qu'adopté par le projet Go. Lisez
le Guide du contributeur pour plus de détails.
Merci pour votre temps passé à connaître Go Cloud, nous sommes heureux de travailler avec vous pour faire de Go le choix des développeurs pour la construction d'applications cross-cloud (portables).