Friday, June 8, 2012

Infrastructure for e-commerce web applications



Assets management system
In my previous job, I met a very good professional software developer who was considered to be the most experienced on the field of assets management. In the past he participated in a team developing an award winning assets management system. It was then when I realized the importance of this kind of systems. I realized that the image uploading web sites are actually assets management systems. Assets in their case are pictures.
Thinking deeper and cleaner, somebody could realize that a blogging web site is also an assets management system. A blog post is considered to be the asset in this case. It’s called a content management system because the asset is a more complex structure than monolithic binary data of images, and because there are features of presentation of assets (blog posts), filtering according to their properties and designing pages that include lists of assets.
Video management web sites are also asset management systems. In this case the assets are video files which, are assigned searchable properties, offer online editing, offer recommendation engines that lead the visitors to other videos of the same provider etc. Services vary, of course, by provider.
Thinking more widely, even an online store is an assets management system. Every product that is available for sale is an asset, and the web site is offering several features of searching and recommending assets (products) with the target of selling as much as possible.
Databases for assets persistence
Viewing everything that is served on the net as an asset, then databases can be seen as assets management systems from an application’s point of view.
Relational databases hold data tables that contain entries that describe entities. In most cases a set of joined tables describe a more complete entity. This entity may be considered an asset for an application. Object relational mapping (ORM) frameworks help developers handle multiple joins transparently, and consider a complex entity as a high level object that can be served by the application as an asset.
Architecturally simpler is the concept of the NoSQL movement. Object databases can store both structured and unstructured data, together with their properties and with the ability to change the structure of the object at any time of the application lifetime.
Provided services/functionality
  1. Store an asset 
  2. Retrieve an asset
User management system.
Users are entities that participate more actively in an application. They can be considered as assets to applications like social media and to applications that maintain a profile for each user. The most commonly used purposes of users are the access rights management that may be related to licensing, persistence of preferences and personalization of content.
Provided services/functionality
  1. User registration 
  2. Check login
Campaigns e-mail management system
Newsletters sending is a very popular way of advertisement. In a newsletter, a possible customer can be updated about the latest products and offers of a known company, without even visiting their site. This is the magic power of e-mail. Checking your email, feeds from your subscriptions arrive, without even visiting any other web-site. Of course the e-mail is linked with particular pages of the site, and the clicks on the newsletter are tracked. Customers relationship management system will be very happy to know that a customer is interested in a particular offer/product.
Another very important feature of a well designed and responsible system is the notifications engine and the most popular way of notifications is e-mail. The customer should be notified about his orders, and additionally he could set notifications on custom events provided on the web-site (e.g. notification when a product is available again, notification about changes of a product's price, notification when a new product is entered.)
Maybe the above functionality is more appropriately included in the features of the customers relationship management system, or the user management system. E.g. whether a user allows the application to send him e-mails maybe better included in the user management system. When a customer is interested in a particular product and he needs notifications on that product, then the customer relationship management system is more appropriate to include this information. The e-mail management system should probably remain agnostic of the business logic, and execute simple commands like sending a given e-mail to a given list of recipients.
Warning, I have seen some newsletters including the list of recipients in the 'To' field of the e-mail. Please include the list of recipients in the 'Bc' field of the e-mail, or send the e-mail in a loop including a single recipient at a time. Sending the newsletter in a loop using single 'To' recipients may cause a problem on your mail server with too many connections.
Provided services/functionality
  1. Subscribe to the newsletter 
  2. Unsubscribe from the newsletters
  3. Send this content to this list of recipients
Payments system.
Of course the target of an e-Commerce application is the completion of an order and the payment from the customer. Payments are procedures that are offered by financial banking credit systems, and an e-Commerce application needs an interconnection with such a system. Payments are usually time consuming and asynchronous processes and these systems usually offer monitoring features of the progress.
Provided services/functionality
  1. Submit payment with credit card for specific amount and user
  2. Submit payment with bank wire-transfer for specific amount and user
  3. Submit payment with online payment provider (paypal)
  4. Get status of payment for an order
Shopping cart system.
Shopping cart is actually a list of selected products by a user that can be updated as he uses an e-commerce application. The cart can be only one for every user, and sometimes some applications may offer multiple carts as main or draft or temporary.
Provided services/functionality
  1. Set assets management system 
  2. Add product to the basket 
  3. Delete product from the basket 
  4. Change amount number of items for product 
  5. Get the data of the basket 
  6. Clear basket
Customers relationship management.
This is the system that holds the orders of the customers. It may also hold pre-orders, and calculate possible discounts. This is generally a history of transactions.
Provided services/functionality 
  1. Create order 
  2. Get list of orders with criteria 
  3. Get discount for this shopping basket
Advertisements serving system.
Advertisements may be another additional way of profit for an e-commerce application. Suppliers may need an extra boost of promotion of their brand name or a specific product. Users may be interested for personalized advertisement messages, according to their previous purchases, the contents of their shopping cart (or carts), and of course according to their demographic data.
Provided services/functionality
  1. Store an advertisement and its properties 
  2. Retrieve a specific advertisement 
  3. Retrieve a specific advertisement with parameterisation 
  4. Retrieve an advertisement according to keywords and other criteria