Friday, October 2, 2015

Most Awaited version of WCS- Websphere commerce v8 !!

After a much awaited and most speculative version of Websphere commerce is out with some predictions like replacing the business tools framework with Struts+BOD with Spring+BOD etc.

Below is first draft version of my understanding on our new rock star i.e Websphere Commerce v8.. more to come after Nov' 30 or I get hand of any concrete information.

WebSphere Commerce Enterprise v8 is an omni-channel, e-commerce platform that enables business-to-consumer (B2C) and business-to-business (B2B) sales to customers across all channels, which include web, mobile, social, store, and call center. WCS v8 delivers a new approach to e-commerce with an improved business user experience to help merchandisers and marketers deepen customer engagement and greatly enhance business results. Version 8.0 also includes a new customer service capability that enables organizations to provide a seamless experience across digital and call center channels.

The Enterprise edition allows brands to engage shoppers in a personalized and consistent way with merchandising tools, precision marketing, site search, customer experience management, catalog and content management, and social commerce capabilities. Organizations can go to market quickly and easily with an advanced starter store for B2C and B2B that is responsive to optimize content for various device types and formats, which include web, mobile, and tablet.


Below are major changes with high level understanding:


IBM Customer Service for WebSphere Commerce: Replacing Sales center with light weight Web application

Version 8.0 delivers enhancements to Customer Service for WebSphere Commerce that offer a better customer service and support experience. The customer service representative (CSR) can utilize the same buying experience that customers use to provide assistance with site activities, for example, assist customers to manage their cart content and assist with the checkout process. As a part of the buying experience, the CSR can look up customer accounts and orders, and help customers with their account management. Customer Service for WebSphere Commerce is a separately purchased solution for WebSphere Commerce V8.0 clients.

The pattern they are using seems to be one of the most familiar pattern which we have used for various client implementation i,e  webased esite based cal center approach with UI treatment for an intuitive fronted for CSRs.

Some high level points:

  • These new capabilities are built into the WebSphere Commerce V8.0 storefront and enable a CSR to perform key tasks on behalf of a guest, registered customers, and for both B2B and B2C business models
  • Light weight web based application which cost effective that delivers a UI interface for CSRs.
    •  A common experience for customers and CSRs that helps CSRs solve customer issues faster.  
  • Personalized content and promotions presented to CSRs to help drive increased sales.  
  • If using SOLR then a Powerful WebSphere Commerce site search to quickly find the right products for customers.
    • Work with customer accounts for both B2B and B2C business models. 
    • Find products through catalog navigation or through powerful facetted search that provides detailed product information. 
  • Work with customer orders so they can create new orders, view order history, and cancel orders. 
Note: Entitlement to IBM Call Center for Commerce V9.4 is required for use of IBM Customer Service for WebSphere Commerce.

IBM Management Center for WebSphere Commerce 

In Version 8.0, the Management Center is updated to use Dynamic HTML (DHTML) and the open source Spring Framework. This update makes it easier for developers to customize and embed custom tools in the Management Center. With DHTML, Management Center is no longer dependent on AdobeTM Flash technology, and developers who customize the Management Center can now view their changes without first compiling their code. Additionally, the Management Center user interface now has a new look.


Additional changes

In addition to the enhancements for business users, Version 8.0: 
• Leverages a software platform upgrade to the latest versions of the web application server, database, and integrated developer environment.
• Incorporates the capabilities of earlier WebSphere Commerce V7.0 feature packs.
• Provides more streamlined packaging options.
• Allows businesses to use the Gift Center capability in their physical stores, without the purchase of an additional license.

Going out :

  • IBM Sales Center for WebSphere Commerce V7.0 is not compatible with WebSphere Commerce V8.0. 
  • Madisons starter store is deprecated for WebSphere Commerce Version 7 Feature Pack 8. Madisons starter store provided all of the pages and features necessary for a functioning consumer direct online store.

Availability of national languages 

Release date: Nov 30 2015
Languages Supported:
Chinese Simplified, Chinese Traditional, English (US), French, German, Italian, Japanese, Korean, Polish, Portuguese,(Brazil), Romanian, Russian, Spanish
NOTE:Aurora Starter Store is also translated into Arabic, Hebrew, Turkish.

Reference and Thanks:

IBM document update for WCS v8: http://www-01.ibm.com/

Mobile enterprise application platform- A critical component of Omnichannel platform- Part 1

In past few years quite often my clients face this question 

  1. Should I move to omni channel platform or I am good with existing application?
  2. Do I need “Mobile enterprise application platform”?
  3. Should I go with Open source or paid version and what benefit I get from my paid version?
  4. What are my options in Opens source for iOS( Android most of us know its free)
  5. Last but least IBM Worklight vs Kony vs SAP vs PhoneGap
There is no doubt that mobile has been changing the life of people by changing the way people do their work. But it is also true that without mobile apps mobile(exception to retailers with Adaptive design) itself has no more use, it will be just like car without petrol. This is the age of apps and days are not away when it will be tough for retailers to survive without mobile apps. Demand of mobile applications is increasing day by day as number of mobile users are increasing. As per the latest report of 2015 the famous and bold predication made that by 2014, mobile internet users will overtake desktop internet (smartinsight.com) is now true. 

On top of that another complication develops is the customer behavior pattern is really forcing retailers to move to omnichannel platform. A very simple example will be variation in device preferences throughout the day , depicted in Fig.2 
Fig1: Mobile vs Desktop
Fig.2: Day Pattern for different channel





















Recently, I was going through one of the Gartner survey where they tested the available mobile platforms on the various protocols to understand which are best. They came with top 6 leading mobile apps development platform. Below is some high level information for all 6 but in my next post I will give more dept analysis on open source vs paid version. Also please find some interesting trend on there popularity after they hit the market–

1)   SAP- Mobile platform

Compared with other major independent software vendors (ISVs), SAP bet early on mobility. Its latest mobile offering,Sybase Unwired Platform (SUP), has matured rapidly since its initial release in 2010, providing a flexible application development environment with plug-ins for Eclipse and Visual Studio, along with a proprietary studio. While it has a steeper learning curve than many other solutions, it is an excellent choice for broad mobile initiatives, especially in conjunction with SAP's Afaria mobile device management (MDM) solution. SAP closed its acquisition of Syclo, another leading vendor of mobile application development platforms, in June of this year. 

`

2)   IBM Worklight

IBM® Worklight helps you extend your business to mobile devices. It is designed to provide an open, comprehensive platform to build, run and manage HTML5,CSS3,Dojo Mobile cross, hybrid and native mobile apps. IBM Worklight can help you reduce both app development and maintenance costs, improve time-to-market and enhance mobile app governance and security. 
Even the recent surveys shows that IBM Worklight is gradually picking the pace in the market and it is becoming favorite of developers as well as the enterprises. In the graph given below one can see the search trend of IBM Worklight. It is clearly visible that there will be a very tough competition for first position in near future.

3)   Adobe (Phone Gap)

Adobe Systems acquired Nitobi Software, maker of the PhoneGap framework, in the fourth quarter of 2011. PhoneGap is used to wrap HTML5, apps in native containers, making it a strong choice for media-rich enterprises with requirement for mobile clients, or organizations that want to wrap mobile Web applications developed with other platforms like Sencha, Dojo Mobile, jQuery Mobile and others. It's available for Windows, Linux and Mac OS platforms. More details are covered below

Search trends of Phone Gap also looks very promising. They are also being very constant since last couple of years. It will be difficult to say whether this technology will ever become number one preference of the enterprises or not?

4)   jQuery Mobile (Open source)

Part of the non-profit Software Freedom Conservancy's jQuery open source project, jQuery Mobile is a good fit for organizations that need an open source mobile Web framework that will allow them to leverage existing jQuery skills. The framework provides the ability to use HTML, JavaScript and CSS to build interactive mobile Web pages for an array of smartphones, and it can be used with PhoneGap to build hybrid mobile applications.


The search trend of jQuery mobile are as follow-

 

5)   Kony

When it first debuted in 2007, Kony focused on consumer-facing applications, but has since then added B2E capabilities, through organic growth. Kony's platform is a good fit for projects that require the use of native features on an array of mobile devices. The environment can be used to build apps once for tablets, smartphones, feature phones, mobile browsers and even desktop browsers, and then deploy to all of them.
It looks like Kony was a wave of the time which has faded as soon as it came in the news. These days developers are preferring other platforms over Kony. Some statement can be supported by the screen shot given below 

6. Antenna

Antenna Mobility Platform (AMP) is a good fit for organizations that need to build multiple applications for various types of mobile devices and deploy them as a cloud service. AMP is composed of a development studio together with a scalable cloud runtime service and set of clients that run on a wide array of mobile devices. Its AMPchroma mobile software-as-a-service (SaaS) offering, which was debuted in February 2012, adds more capabilities, like integration with MDM based on Antenna's acquisition of Volantis Systems.


Again the search trend of Antenna has been very constant and this technology is surviving from the last couple of years. The search trend graph of Antenna shows the following results-
Looking at each and every platform, it can be just said that each one of them has 
something very unique to offer to the app developers as well as mobile app development service providers. I would suggest my readers to discuss the desired platform and its advantages with the developer of your project before making the final call.

In my next blog post I will share information on Mobile platform Open source vs Paid version . Till then, enjoy my blogs and don’t forget to leave a comment!


Reference:
  1. Gartner
  2. IBM
  3. CNET
  4. Linked in Independent articles
  5. Google analysts
  6. Independent articles published by experts
  7. Wikipedia
  8. Omnie Solutions (http://omniesolutions.blogspot.com/)
  9. Smart Insight smartinsight.com

Sunday, February 8, 2015

WCS- Performance Tuning and Troubleshooting

This post includes tips and recommendations for tuning and troubleshooting performance on WebSphere Application Server based products. IBM WebSphere Application Server (WAS) is a market-leading Application Server for running Java applications. It is the flagship product within IBM's WebSphere product line and it is the base runtime product for several IBM products. These products range from Mobile servers (IBM Worklight Server), Integration servers (WebSphere Enterprise Service Bus), Operational Decision Management servers (WebSphere ILOG JRules), to Business Process Management servers (IBM BPM Advanced), among many others. Because these products share the same runtime, the tuning tips and recommendations in this post apply to all of them.
When to Tune for Performance?
Performance tuning needs to occur early in your project. There should be time allocated for load and stress testing. Load testing involves testing the normal application load in terms of expected concurrent request and type of requests. Stress testing involves testing beyond the expected load level (e.g. 125% to 150% of expected load) and also includes testing over extended periods of time (e.g. 4 to 8 hours). During the duration of these tests the goal is to monitor and measure how the application performance and server vitals behave. On a normal load test there should not be long sustained periods of high CPU usage. What constitutes an acceptable high usage is relative. A conservative CPU usage is typically under 50%, where as an aggressive CPU usage may be as high as 80%, but it boils down to the criticality of the application performance and the risk that can be incurred.
Java Virtual Machine (JVM) Tuning
During load tests and specifically for Java applications, it is extremely important to monitor for Java heap size usage. Every WebSphere Application Server instance runs in its own JVM. Default JVM settings are usually good enough for small volume applications. JVM settings will likely need to be tuned to support a combination of the following: large number of applications deployed, high volume of transactions to be handled concurrently and/or large size requests. There are two main areas to watch for when it comes to JVM heap size: how quickly the heap size grows and how long it takes to perform a garbage collection.
Tune JVM Minimum and Maximum heap size
As the number of deployed applications grows, the use of heap size will increase and may exceed the maximum heap size. This can lead to potential problems: garbage collections will occur more frequently and will take longer time; our out of memory errors can occur if there is not enough memory to allocate in the heap. The heap size growth is also impacted by the expected number of concurrent requests and by the number or size of objects allocated throughout processing. Before increasing maximum heap size, it is important to measure whether the increase is needed due to legitimate application growth, or caused by potential memory leaks. If it is due to legitimate growth, the maximum heap size should be incremented not to exceed 50% of overall physical memory on the server. This measure may vary depending on what other processes are running on the server (e.g. other JVMs) and how much memory the OS allocates for system processes. They main goal is to avoid paging to disk as much as possible. Paging memory to disk translates into larger garbage collection times and consequently slower application response times.
The default initial heap size for WAS is 50MB and default maximum size is 256MB. In most cases the initial heap size should be set lower than the maximum heap size, however in cases where optimal performance is a priority specifying the same value for the initial and maximum heap size is recommended. The JVM heap size settings can be changed from the administrative console:Servers > Server Types > WebSphere application servers > server_name > Java and process management > Process definition > Java Virtual machine.
Review Garbage collection policy
The IBM JVM in WAS supports four garbage collection policies. Starting with version 8.0, gencon is the default policy. From personal experience, gencon is the policy that yields the best throughput and overall smaller collection pause times. Of course, this may vary depending on the specifics needs of your application, but I normally recommend using gencon as a starting point.
Beyond JVM Tuning
JVM tuning is only one area of the tuning that needs to be done in WAS. Depending on the nature of the application, here are other settings that may need tuning.
Monitor and tune Thread pool sizes
Thread pool settings can be changed from the administration console at: Servers > Server Types > WebSphere application servers > server_name > Thread Pools. A thread pool maximum size can be increased to improve concurrent processing. Depending on the nature of the application, different thread pools are more relevant than others. For instance, Web Container thread pools are more relevant for web applications. The Default thread pool is another relevant thread pool that is used by most applications. The actual number of threads allocated to each thread pool should be monitored, to confirm that there is a legitimate need to increase its size.
Monitor and tune JDBC Connection pool sizes
If your application connects to a JDBC data source, connection pool sizes come into play. These can be changed from the administration console: Resources > JDBC > Data sources > data_source_name > Connection pool properties.
Monitoring Tools
Tivoli Performance Viewer
Ideally your organization should use a robust monitoring solution to monitor for server and JVM health indicators and proactively alert when certain thresholds are reached. If your organization does not provide such tools, developers can use the Tivoli Performance Viewer included in WAS. The Performance Viewer allows monitoring for CPU usage, Java heap size usage, thread pool sizes, JDBC connection pool sizes, among many other indicators. The Performance Viewer is accessible from the administration console at: Monitoring and tuning > Performance Viewer > Current activity > server_name. You can then expand the different sections of interest and check on the indicators to be monitored. In the screenshot below we are monitoring for Heap Size, Process CPU Usage, Web Container's thread pool size and WPSDB JDBC data source's pool size.

WAS Performance Management Tuning Toolkit
Description: http://cdn2.hubspot.net/hub/360402/file-557907061-png/blog-files/110813_1625_WebSphereAp1.png?t=1423174716937The Performance Viewer can be helpful to monitor for a small set of indicators within a single server (e.g. during development). However when you need to monitor several indicators across multiple servers on a cluster the Performance Viewer is difficult to navigate. A better tool for monitoring multiple servers at the same time is the "WAS Performance Management Tuning Toolkit".
This is a very useful tool that connects to the deployment manager of a cluster. Once connected you have access to all of the performance indicators available on the Performance Viewer. It is much easier to navigate and switch back and forth different servers and indicators.
Description: http://cdn2.hubspot.net/hub/360402/file-557907116-png/blog-files/110813_1625_WebSphereAp2.png?t=1423174716937
Troubleshooting Application Performance Problems
Here are a few tips and artifacts that can be used for troubleshooting application performance problems.
Enable verbose GC to identify frequency and time spent during garbage collection
The verbose output of the Garbage Collector can be used to analyze problems. To enable verbose GC output login to the Administrative console and navigate to: Servers > Server Types > WebSphere application servers > server_name > Java and process management and check "Verbose garbage collection". Verbose GC output will then be captured on the native_stderr.log file on the server logs. Verbose GC output can be analyzed with the "IBM Pattern Modeling and Analysis Tool for Java Garbage Collector".
This tool can provide useful information such as whether the Java Heap size was exhausted, number of garbage collections, pause time used for garbage collections. The tool also recommends configuration changes. The key items to look for are: garbage collections that are taking too long to run and whether they are happening too frequently. This analysis can also help measure the effect of different heap size configurations during load testing.
Capture Javacore files to look for unexpected blocked threads
Javacore files are analysis files that are generated either captured manually or automatically when system problems (e.g. out of memory, deadlocks, etc.) occur. These javacore files include environment information, loaded libraries, snapshot information about all running threads, garbage collection history and deadlocks detected.
Javacore files are created by default on the <WAS_install-root>/profiles/<profile> directory and they are named as follows: javacore.YYYYMMDD.HHMMSS.PID.txt
A javacore file can be captured in Linux using this command: kill -3 <pid of java process>
A useful tool to analyze these files is the "IBM Thread and Monitor Dump Analyzer for Java".
Typically you should capture multiple javacore files when symptoms of a problem are happening or about to happen (e.g. during a load test). This tool allows you to compare thread usage among the javacore files. This allows identifying blocked threads and identifying what was blocking these threads. In some cases, the blocked threads can be expected (e.g. waiting for a HTTP response), but in other cases the stack trace may reveal unexpected blocked threads.
Description: http://cdn2.hubspot.net/hub/360402/file-557907186-png/blog-files/110813_1625_WebSphereAp3.png?t=1423174716937
Analyze heap dumps to look for potential memory growth
Heap dumps are snapshots of the memory of a Java process. Heap dumps are generated by default in WAS after an OutOfMemoryError occurs. In WAS they are saved as .phd (Portable Heap Dump) files. A heap dump can be useful to identify potential memory leaks.
The IBM HeapAnalyzer can be used to analyze .phd files.
Keep in mind that phd files can be very large files depending on the heap size. You will likely need to increase the maximum heap size parameter when running the HeapAnalyzer. The heap size needs to be at least the size of the .phd file.
The HeapAnalyzer will show the allocation of heap for each object class and it will identify potential memory leaks. This tool does not show variable values, which makes it hard to isolate culprits when you have multiple applications deployed that use similar object types.

Description: http://cdn2.hubspot.net/hub/360402/file-557907276-png/blog-files/110813_1625_WebSphereAp4.png?t=1423174716937