2017-07-19 2 views
0

J'ai quelques questions liées à MicroServices Architecture.MicroServices Architecture

  • Quelle devrait être la granularité des MicroServices? Nous avons des tables dans les bases de données relationnelles et NoSQL. Devrait-il y avoir un service par table? Je pense que les services par source de données auraient plus de sens, mais ce serait alors la SOA.

  • Si nous créons beaucoup de MicroServices, devrions-nous également fournir des bibliothèques client pour faciliter la consommation de services? Ou laissez simplement l'appelant utiliser n'importe quelle bibliothèque REST pour passer des appels. D'une façon ou d'une autre, cela semble beaucoup de travail.

  • Est-ce que trois doivent être un dépôt GIT pour chaque MicroService?

  • Est-il acceptable de déployer plusieurs MicroServices dans la même instance EC2? J'imagine que le déploiement de MicroServices sur AWS Lambda serait parfait, mais que l'ensemble de l'application serait juste un tas de fonctions Lambda. Sans parler du couplage serré avec AWS Lambdas. Est-ce que quelqu'un a implémenté MicroServices sur Lambdas? J'apprécierais tout commentaire à ce sujet.

Répondre

2

La mise en œuvre des Microservices est souvent différente d'un système à l'autre ou d'un développeur à un développeur. Toutefois, certaines des caractéristiques essentielles de microservices sont,

  • accent Petit (faire une chose et à faire une chose bien)
  • Librement Couplé (Fonctionne indépendamment les uns aux autres)
  • Langue neutre
  • Contexte borné (pas besoin de connaître la mise en œuvre d'autres microservices)

Nous pouvons utiliser AWS lambda pour atteindre les caractéristiques ci-dessus. Mais la maintenance et la gestion des points de terminaison Lambda peuvent être difficiles et souvent fastidieuses. Vous pouvez utiliser Serverless Framework pour gérer facilement les fonctions lambda. Vous pouvez définir une configuration de service au format YAML simple et l'infrastructure crée une pile CloudFromation et la déploie.

Avec le framework sans serveur, vous pouvez définir plusieurs services. Chaque service peut être un petit focus, un couplage lâche, un langage neutre et un contexte délimité. Par exemple: User CRUD, notifications par e-mail, tâches planifiées etc ... Lorsque vous déployez des services avec Serverless Framework, il crée différentes API Gateways liées aux lambdas respectifs. Vous pouvez utiliser les points de terminaison API Gateway pour interagir avec chaque service.

Comme vous l'avez mentionné, un lambda peut être lié à d'autres services AWS. Mais je pense, tant que cela ne dépend pas d'autres microservices et a des points d'intégration clairement définis à des services comme la table Dynamodb ou un seau S3, nous pouvons utiliser Lambda pour développer des microservices.