8.2 Classification of Solutions Using Not-at-All Cloud Compatible Products
Chapter 7 describes how to architect cloud Software as a Serive (SaaS) solutions using semi-cloud compatible software products. Chapter 9 provides a complete discussion on how to architect cloud SaaS products that are aimed to be absolutely cloud compatible. The information found in these two chapters will definitely also be useful to architect solutions using non-cloud compatible software products. As discussed in Chapters 1, 5 and 6, very often solution architects are forced to provide a good cloud compatible SaaS solutions using cloud non-compatible (cnc) software products.
To recap quickly, the main reasons are the following:
Therefore, architects have to live with the reality of providing cloud SaaS software solutions using utterly non-compatible cloud software products. This chapter shares experience of such situations. Solution architects can benefit of the discussions in this chapter. The technical architecting method shown and adapted in this chapter cannot be generalized and applied to all solutions that use absolutely non-cloud compatible software products.
A typical industry grade software solution may typically require more than 5–20 different software products: big or small. A few of them may provide main functionality for the solution. If some of the remaining software products are not main and happen to be non-cloud compatible, then architecting a solution is relatively easier and not discussed in this book.
If the main software products required for a solution are not fully cloud compatible, some of the techniques discussed in this chapter can be used.
Figure 8.1 summarizes the possibilities of using completely non-compatible cloud products in solutioning situation.
Note: Readers have to know the important caution that is in the form of limitations of the method discussed in this chapter.
Figure 8.1 Summary of classes of cases possible in cloud SaaS solution situations using completely non-compatible cloud software products
Figure 8.2 Summarizes various classes of solutions possible including transaction-less and transaction-intensive solutions
Figure 8.2 is a modification of Figure 8.1 by incorporating the above two classes, namely transaction-less’ and ‘transaction-intensive’ solutions. Most of the techniques discussed in this chapter will be useful for transaction-less solutions and not for transaction-intensive solutions.
While architecting a solution using completely non-compatible cloud products, some of the following general principles or tricks or tips can be used by architects. Some of these can even become guiding principles for specific projects too:
Figure 8.3 User accessing core function only through multi-tenanted customizable portal
Therefore, the solution consists of two major identifiable components: (1) Those modules that can handle cloud compatible features, and the same make the overall solution as much as possible nearer to completely cloud compatible. (2) Those core modules that provide core functionalities but are absolutely non-cloud compatible.
Figure 8.4 provides one high-level view of a typical solution architecture, thereby reflecting the above points.
Those non-core functional modules that are make the overall solution more cloud compatible may be mostly custom developed in all the projects. As these common modules that make the solution cloud compatible are very often required for each cloud SaaS solution, it is quite natural for solution architects to look for software products to fulfil these requirements. At the time of writing this book, the author was unaware of such software products. In future, if products do come up, then those will not only decrease the effort of custom developing these modules but also can be a well-tested, defect-free SBBs of the target solution.
Consequently, availability of such software in future and use of the same in solutions will ensure extension of (non-cloud compatible) products’ life without re-architecting to make it absolutely cloud compatible products too!
Figure 8.4 Conceptual view of solution architecture with absolutely cloud non-compatible product
Examining what kind of software products could be non-cloud compatible but still required (urgently – not waiting until it is re-architected to be cloud compatible) is a good proactive exercise for solution architecting team in any typical solution architecting companies that put in use thousands of software products. Typically, they have functionalities that are highly specialized, domain specific and highly custom developed ones.
Therefore, solution architects can even develop a specific architecture for using these cnc software products. Such regularized architecture would have identified solutions for all required cloud compatible features.
Identity and access management could be one component in a cloud SaaS solution, data access modules including multi-tenanted relational DB software could be another, and a portal could be a third one, and these are some examples of modules that will be required for most of cloud SaaS solutions with high cloud compatible characteristics. If workflow is available in the platform itself rather than from a separate product such as in .Net, achieving or providing cloud compatibility characteristics for workflow module may be easy or difficult depending on the provisions available in the platform; it may trivially become easy if the platform itself provides multi-tenancy. (The author is not implying anything on the current capability of .Net; for specific information on .Net capability, please check the respective product manual.) It becomes difficult if the workflow is a separate product within the overall solution. This should be treated like any other product and subjected to analysis of cloud compatibility measures. If it turned out to be a completely non-cloud compatible product, then the treatment is very similar to what has been discussed in this chapter. Similar argument holds good for other components such as business rules engine too.
All the above-discussed SBBs need to be cloud compatible and absorb many of the cloud compatibility requirements of the solution. Even the cloud compatibility characteristics requirement that comes from cnc products need to be absorbed and included in these products. These SBBs can surround the cnc products and apparently even ‘hide’ them from getting exposed to users (or other interfacing systems) directly. Figure 8.4 gives a pictorial view of a typical solution architecture that implements the above discussions.
This will become more clear as the reader goes through the case study presented in this chapter. The common practice at this stage of solution architecting is to expose all the required functionalities from the core software product as service. Sometimes, this is also referred to as ‘service API’. Most of the readers may know API as an abbreviation for application programming interface. Traditionally, product vendors used to provide only APIs that are programming language dependent; and if the API is not available for any particular programming language of choice for the developer, then that will hinder the use of product functionalities in the solution. Service APIs are language independent and provide a loose coupling for integration. Nowadays, product vendors themselves provide these service APIs, which will decrease the workload for solution developers.
These services need to be exposed in the functional layer of a ideal service-oriented architecture (SOA) (or cloud computing reference architecture). See Chapters 9 and 10 for a detailed discussion on this.
The exposed services should be visible only to ‘cloud services creators’ and not to ‘cloud services consumers (or customers)’. (see Chapter 10 for proper definition of service creators and service consumers from cloud computing reference architecture (CCRA) vocabulary.)
Other cloud compatible modules and software products (in the total solution) will consume these services and produce results to users.
With this background, we will understand the case study that uses only one core functional product that is perfectly cnc.
Set of small and medium banks decided to have a cloud-based solution to facilitate their prospective new customers to open new bank accounts with them.
While signing up for a new bank account, the potential customer may need to supply a lot of supporting documents such as a copy of his or her telephone bill as proof of their mail address, proof of identification such as driver’s license copy, a proof of being in the sate – mostly ration card or voter’s id. Like that, the list of documents to be provided is large and each scanned copy can occupy more than over 5 MB of storage space. (5 MB was the limit in popular cloud SaaS customer relationship management (CRM)).
Until they become customers, it is the banks’ responsibility to hold the proofs and keep them safe. It should be tamperproof for hacking or stealing such information about individuals. Once their application is approved by the bank, then these papers will be once and for all moved to folders within the boundary of the bank. Leaving them on the cloud is not advised as part of banks’ requirements.
In this use case, each bank is a customer for the cloud SaaS solution. Within a bank, there may be many users. Some of them will be internal users or bank employees, and there may be many external users who are potential customers who try to open new bank accounts.
A catalogue-based product selling company would like to keep a copy of multimedia-based catalogue of the product that every customer selects and orders. This ensures the complete description of the product a customer ordered. It also captures the customization details of the selected product. Even if the company drops that particular product or product line, the details remain in the DB forever. In case of later dispute on the part of customer such as if there is a difference between the ordered product and that delivered to the customer, then this will act as a reference.
The mash up (or multimedia) description of any typical product in the catalogue exceeds 5 MB.
Order entry, tracking sales to delivery is done by a cloud-based popular SaaS CRM system. Due to size limitations of the mash up that can be stored in the CRM, the product descriptions as found in the catalogue cannot be stored along with the purchase order.
Entire product catalogue is stored in a content management system (CMS). The product catalogue itself is a multimedia catalogue and will occupy a lot of storage space.
Individual product descriptions from the catalogue is taken, copied and stored in a separate place in CMS against the purchase order number and a unique identification number to the purchase order.
The URL of the storage location in CMS is embedded back into the purchase order, and the purchase order is saved in CRM as per CRM’s workflow.
Therefore, when the purchase order is retrieved from the CRM for any clarification, using their impeded URL in the purchase order, then one can retrieve the exact catalogue description of the product from CMS.
In both the use cases, the end-user or the users of the cloud SaaS solution do not interact with CMS directly.
CMS provides a functionality of storing (and retrieving) a large amount of unstructured data whose size is not a restriction. The data can be in any format such as MP3, MP4, etc. The data are very often referred to as unstructured data in contrast to those that can be stored in relational DB and retrieved through SQLs. The data will be typically comprise voice, video or images or a combination of text too.
In this case study, the CMS is a non-cloud compatible product. This is the one that provides main and core functionality to the solution as discussed in Section 8.4.4.
Refer Chapter 6 for a description of the product and analysis of the non-cloud compatibility of the same product.
CMS is at the backend, and it will not face users or customers.
Figure 8.5 Both CMS solution and CRM reside and share the same IaaS and PaaS platform
Figure 8.6 CMS solution is offered from a public IaaS cloud, which is different and away from CRM cloud
Use case 1
3.137.223.190