Question

On m'a confié la tâche de jeter les bases d'une SOA pour mon client. L’objectif est d’ouvrir divers processus de manière indépendante du client final et de rendre les données disponibles hors connexion, par exemple. pour les représentants visitant les clients.

J'ai une vaste expérience de J2EE (Websphere) et des services Web, mais j'aimerais des conseils sur la manière de développer une telle SOA.

Où sont les pièges? Qu'en est-il de la sécurité? À quel point les services doivent-ils être finement granulés? etc.

Des liens vers des tutoriels et des recommandations de livres seraient également utiles.

Merci!

Était-ce utile?

La solution

Pièges

  • Versioning / compatibilité ascendante: il est très difficile de modifier un contrat une fois que vous avez beaucoup de clients. J'ai vu de nombreux sites modifier les API en introduisant la version dans l'URL

Granularité

  • Chaque service doit être raisonnablement autonome (ne vous attendez pas à ce que les utilisateurs passent trois appels avant d’obtenir ce dont ils ont besoin)

Indépendance de la plate-forme

  • Essayez de donner plusieurs manières d'accéder à vos API (WS, JSON, REST ...)

Autres conseils

Les gens ne peuvent s'entendre sur ce que signifie réellement SOA.

http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html

(bien que le consensus ait peut-être augmenté depuis la rédaction de cet article)

Je suggère de questionner votre client pour savoir exactement ce qu'il veut dire, le cas échéant. Donnez-leur ensuite quelque chose qui fournit réellement une valeur commerciale , tout en cochant les cases SOA pouvant coïncider avec cet effort.

Appelez-moi un sceptique SOA. La plainte de Fowler semble toujours juste.

Je voudrais me concentrer sur le problème plus général: votre client a 2 applications ou plus qui doivent collaborer ensemble. Regardez les modèles d’intégration à l’ancienne école.

 Image EIP
(source: amazon.com )

Ce livre rouge IBM

Comme Alan l'a dit, je commencerais à lire le livre intitulé Enterprise Integration Patterns . Il existe plusieurs façons de les implémenter en utilisant un système de messagerie directement tel que JMS ou des projets open source tels que Apache. Chameau , par exemple, consultez le catalogue de modèles .

J'aimerais également comprendre comment créer de bons services RESTful avec JAX-RS avec Jersey , en tant que un moyen simple d’exposer facilement les ressources de vos systèmes à n’importe qui sur le Web, depuis n’importe quelle langue / plate-forme, sans tomber dans SOAP / WS- * deathstar:)

Procurez-vous un bus de service d'entreprise (ESB): Mulesource est un bon choix (Opensource, mature, mais à la pointe de la technologie). Une fois que vous le comprendrez, vous comprendrez la SOA.

  

L’objectif est d’ouvrir divers   processus dans un indépendant du client final   manière et aussi pour rendre les données disponibles   hors ligne, par exemple pour les représentants en visite   clients.

La deuxième moitié de ce sujet n'est pas vraiment un sujet SOA, mais plutôt un problème de réplication sur des périphériques mobiles. Je resterais loin, loin d'essayer de mettre en œuvre un mot à la mode et de me concentrer sur les problèmes que vous énoncez. Les services Web sont un bon moyen d'ouvrir le processus à des moyens indépendants du client.

Jusqu'à présent, le meilleur livre que j'ai trouvé est SOA Compass . disponible sur Amazon

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top