I am researching what are the best architectural practices for shared applications in enterprise cloud. As an example, the applications which deal with client identity, antivirus check for uploading files and etc. These applications can be used by multiple other application. We might start with a couple shared applications but as more and more added over the years, it would be good to start with the current best practices to try to avoid dealing with a bunch of apps which have duplicated functionality and require more and more time to administer. I could not find any resources which discuss enterprise shared applications best practices so it would be great if anyone could point me to the resources. If anyone came across this kind of a scenario, it would be good to know how it was implemented and what are the approach pros and cons. These are some of the questions which I am trying to answer:
- What is the hosting model for these applications in a cloud?
- What would be the best way to make sure that functionality is not duplicated across the applications?
- What are approaches for functionality discovery?
Thank you.
I searched using terms enterprise cloud, shared applications, architecture, shared business applications and etc. but nothing came out of it.
You are talking about Service Oriented Architecture or SOA. It's been around since the 2000's. Be careful not to conflate the goals of SOA with the implementations like REST or SOAP. SOA is purely focused on reuse of functionality. Discoverability (which is key to your other questions) is very much dependent on implementations, but there are lots of interesting patterns for service registries and such.