Thursday, 29 December 2016

Open Systems for Business – Unlimited Performance

Once upon a time, computer systems was often a combination of specific Hardware and Software packaged and delivered from one vendor. The word Open was not associated with IT and all manufacturers tried to do it all themselves. Once upon a time IBM was one of those companies.

Today, the world has changed and so has IBM. The application landscape evolve in a pace not seen before and the majority of new code is based on Open Source. Almost every modern application also claim to run on any hardware from any manufacturer and infrastructure choice is secondary, so they say.

But is it really true? Infrastructure has no impact on application performance, availability, the user experience and the business value? If you need unlimited performance and always on access, infrastructure really do matter. It always has and it always will, even more so going forward.

Open Systems for Business, Unlimited Performance, IBM

Any server design start with the brain, the CPU. Everything else is designed based on the characteristics of that CPU architecture. The server needs memory and some connectivity to talk to the external world, like your data storage and applications residing on other servers. All servers have parts from multiple vendors and you have a choice of who to buy from. Typically these servers are x86 based and many consider them as industry standard or even Open since there are many suppliers out there.

But does the expression “industry standard” make x86 open? Today’s x86 servers all have one thing in common. The CPU and associated chipsets are developed and manufactured by Intel. The companies that are selling x86 servers do very little innovation themselves and they completely rely on Intel to drive the CPU design, memory pipelines and available I/O bandwidth. Ok, someone will say AMD also make x86 CPU’s and yes they do but almost exclusively for PC’s today, not for servers.

Intel is one company and based on that fact, I would argue that x86 today is not an open server design. X86 do not take advantage of open collaboration or joint development. Smart people talking to other smart people do increase innovation, speed up time to market and lower associated development costs. Spreading work to those best suited have higher possibility of adding value the more people you have in “your team”, in-house or extended. This is one of the reasons why Open Source is so successful, the organized work by a multitude of people, all adding their knowledge and working together to solve a specific problem. It’s fast and efficient and create innovation. Hardware is no different, just much more expensive to manufacture and harder to change if you get it wrong.

One of the emerging IT challenges is the explosion of unstructured data and the compute power needed to extract insight and drive new business value out of that data. The x86 strategy to increase compute capacity seems to be adding more and more commodity servers. The result is what people like to call server sprawl, more network, more software, more complexity, I/O bottlenecks and soaring costs.

OpenPOWER was created in 2014 to develop new infrastructure solutions that deliver unlimited performance at massive scale. Only by including all the experts responsible for all the individual components and technologies can you build a complete system solution, from compute, to memory, I/O and storage and ensure you innovate in the area that have the biggest system impact. It doesn’t matter if you have the fastest CPU if data moves slow to memory and even slower between servers. Your workload will not perform and insight won’t be instant.

Let’s give a few examples on how OpenPOWER drive faster innovation:
  1. The use of FPGA accelerators. A growing number of workloads can take advantage of accelerators. The bottleneck for acceleration is the PCI-E interconnect between CPU and the accelerator card. OpenCAPI is a new interconnect that increase bandwidth, minimize latency and remove that PCI-E bottleneck.
  2. The use of GPUs. NVlink is increasing the bandwidth between GPUs and the CPU providing superior throughput and system performance.
  3. Communicating with other systems. OpenCAPI enables the use of external Flash storage as main memory. You can run a 40TB in-memory database on a single server with that Flash storage attached over OpenCAPI.
  4. Open roadmaps. Providing insight and possibility to team up in areas of interest. Again speeding up innovation and enabling a whole ecosystem to take advantage of new technologies. An example is PCI Gen 4 that upcoming POWER9 will utilize and where members already are developing cards, firmware and solutions.
OpenPOWER is delivering truly Open servers and the benefits are unlimited performance achieved by Systems designed for massive throughput with no bottlenecks. OpenPOWER servers outperform any x86 server and deliver more work for less money.

Tuesday, 15 November 2016

Extend the Bluemix Command Line Interface Through Plugins

As much as I like nice graphical user interfaces (UIs) and working with the browser, for most tasks I prefer using the command line. I’ve done so—and still do. For working with DB2 and dashDB, I also use the Cloud Foundry (CF) Command Line Interface (CLI) to manage my Bluemix environments. The “cf” tool is quite handy—it allows me to perform what I need to accomplish.

A great feature is its support of plugins, which allow users to extend its functionality. There are IBM-provided plugins and several coming from the Cloud Foundry ecosystem. Below are some brief instructions on how to get started.

Once you’ve installed a recent version of the cf tool, invoking it without any parameters should display some help text on available commands and features. In the lower part of that text should be two sections related to plugins:

Quick overview of CF commands

Below is a quick reference of plug-in repository commands:

◈ add-plugin-repo adds a new plugin repository
◈ remove-plugin-repo removes a plugin repository
◈ list-plugin-repos lists all the added plugin repositories
◈ repo-plugins lists all available plugins in specified repository or in all added repositories

And a quick reference of general plug-in commands:

◈ plugins lists all available plugin commands
◈ install-plugin installs CLI plugin
◈ uninstall-plugin uninstalls the plugin defined in command argument

Adding new CF commands via plug-ins

The command add-plugin-repo allows to add new repositories from which plugins can be installed, list-plugin-repos lists those repositories already available in your environment. Try the following two commands to add the plugin repositories from Bluemix Public and from the Cloud Foundry community collection:

cf add-plugin-repo  BluemixPublic
cf add-plugin-repo CF-Community

When done, try the following command to list the repositories. It should return something like this:

henrik>> cf list-plugin-repos

Repo Name      Url 

With the command repo-plugins it’s possible to list all the available plugins ready to be installed. You can read more about them at the repository descriptions linked above. For switching quickly between my different Bluemix environments I installed the “targets” plugin from the Cloud Foundry community repository:

henrik>> cf install-plugin targets -r CF-Community

Attention: Plugins are binaries written by potentially untrusted authors. Install and use plugins at your own risk.

Do you want to install the plugin targets? (y or n)> y
Looking up 'targets' from repository 'CF-Community'
8230816 bytes downloaded...
Installing plugin /tmp/cf-targets-plugin...
Plugin cf-targets v1.1.0 successfully installed.

After I’m done, when calling just “cf” again, there’s a new section in the help text available:

   targets                                List available targets
   set-target                             Set current target
   save-target                            Save current target
   delete-target                          Delete a saved target

If you have more plugins installed, there will be more commands displayed. Using the “targets” plugin I can save the current environment, i.e., the Bluemix or Cloud Foundry instance I’m logged into, and quickly switch between the Bluemix Dallas (NG) and Bluemix London (EU-GB) platforms using the set-target command. The cf set-target eu command would replace several cf api and cf login commands, and a lot of typing, great for scripting and more efficient work.

Sunday, 28 August 2016

Diagnosing poorly performing Node.js applications

Someone call the developer

As a DevOps team, we feel the pain of outages or poorly performing applications in the form of late night or weekend pages.  Because of that, we are highly motivated to keep everything up and running smoothly.  We use New Relic to monitor every component of IBM Marketplace and recently noticed our external API component was starting to report low Apdex scores.  My squad was on the brink of getting paged repeatedly if we did not make improvements quickly.

IBM Techology, IBM Certifications, IBM Materials
Poor Apdex scores = incoming pages!

After taking a look at the Web transactions view in New Relic, we saw that most of the time was being spend in node.

IBM Techology, IBM Certifications, IBM Materials
Slow web transactions

Using Node.js profiling data to improve performance

Since we needed to profile node to see where the problem areas were, we decided to use node’s built-in V8 profiler.  We also used tools to decipher the log that V8 generates, such as Node Inspector and Webstorm’s V8 log viewer.  After starting the application with profiling enabled, we ran our integration test suite which has many tests for the API endpoints which were the slowest responding.  This gave us a good baseline of how our application was performing.
To use Webstorm’s V8 log viewer:
  • Start node with profiling enabled: node –prof app.js
  • Run the integration test suite, or simulate some load on your application, using a tool like Apache Benchmark.
  • Stop node. A profiling log will be generated in the application directory.
  • In Webstorm, go to Tools > V8 Profiling > Analyze V8 Profiling Log and point it to the log file that was generated.
  • Once loaded, Webstorm displays a view that shows where the application spent most of its time and allows you to drill into different parts of the code that were called to see how much time each step took.
After drilling down into the Node Inspector view, we could see where the application was spending most of its time.  Using that data, we hypothesized about where we could make changes to gain the greatest improvements.  Our process involved tweaking parts of the code we saw were performing poorly from the profiling reports, and running our integration test suite with profiling enabled again, so that we could compare the new results to the baseline.  This validated our changes with data, and gave us confidence in which fixes would work the best to improve performance.

Example improvement made using V8 profiling data

One method that was taking a high percentage of time compared to other calls was a _clone call inside of a caching component we use called node-cache.  We realized that every time we retrieved an object from our cache, node-cache was doing a clone of the object before returning it to the application.  Cloning is the safest approach to guarantee that cache data is not overwritten, but we verified that were only retrieving the cache once it was set, and not modifying it.  Then we were able to turn useClones off when node-cache initialized, saving us the hit on cloning every time an object was retrieved from the cache, which gave us a boost in performance.

IBM Techology, IBM Certifications, IBM Materials
Webstorm’s V8 profile log view


By using this approach iteratively and going after the low hanging fruit first, we were able to improve our application’s performance by 34% in the matter of a few days.  We still have some longer term improvements to make, but we were able to stabilize our monitoring metrics and get our application back to an acceptable performance level.

IBM Techology, IBM Certifications, IBM Materials
Back where we want to be!

Wednesday, 8 June 2016

Delivering continuous return on investment (ROI) with IBM Maximo

Disparate systems cause widespread organizational inefficiencies

The use of different systems and solutions caused widespread organizational inefficiencies across Johnson & Johnson. To maximize return on investment for both its physical and human assets, Johnson & Johnson needed to establish an enterprise asset management standard across Vision Care.

The complexities associated with multiple asset management systems from different vendors prevented the organization from driving improvements at a macro level for two reasons. First, the use of disparate systems and isolated practices made benchmarking virtually impossible; and secondly, many of the existing systems and solutions had a non-validated state that created compliance risks, obsolete software and hardware, in addition to inconsistent usage. In order for Vision Care to take advantage of standard processes, naming conventions and workflows, it needed a solution built on standards.

A single EAM solution

Johnson & Johnson’s Vision Care selected IBM Maximo to be the single enterprise asset management solution across all of its sites. Standardization is helping Vision Care reduce costs, while driving continuous improvements.

Using IBM Maximo as a single, unified asset management solution, Johnson & Johnson is able to address two of its main challenges – to maintain and upgrade systems in a consistent way, making validation easier and less expensive; and, to identify and share best practices across all their sites.

A foundation for the future

IBM Maximo provides the foundation for standards on which future process and operational improvements can be based – successfully positioning the organization for future innovation and business transformation across many different Johnson & Johnson sites.

The benefits of standardization

Cost Savings
  • Headcount reduction
  • Optimization of PMs
  • Reduction in Site PC License Costs
Turnaround time on improving job plans
  • Maximo vs. Local Quality System
Access to information out on the field
  • Spare parts consolidation
Asset Identification & Tracking
Accurate Asset costing (Repair vs Replace)
Audit Readiness

Scope and scalability

The eight-year project plan consisted of three-phases. The first, entitled Enterprise Computerized Maintenance Management System (ECMMS), focused on configuring Maximo 7.5 to align with the Johnson & Johnson asset management program. Each site roll out was considered a separate project – with an estimate of 6 to 9 months to complete the program per site.

Return on investment - ROI, IBM Maximo
Figure 1: Johnson & Johnson implementation project plan

Over the course of the six to nine month project, the program was divided into specific areas which included process and data assessment; internal and external compliance requirements; data alignments; assessment of cost savings opportunities; validation of data migration, user training and go live support.

Aligning best practices

The adoption of Maximo as the single asset management solution aligned Vision Care with the Johnson & Johnson asset management best practices program. Implementing a best practice strategy at Vision Care that aligned to the best practices program within Johnson & Johnson, resulted in Vision Care experiencing higher asset utilization rates – for both physical assets – equipment, and the organization’s human capital – its employees. In addition, both Vision Care and Johnson & Johnson experienced much needed improvements in sector and regional compliance requirement levels.

A future with analytics

Innovation has always been a critical aspect of Johnson & Johnson’s operating principles. Adopting a holistic analytics solution which can help the organization discover new ways to expand Johnson & Johnson’s market share is critical to the evaluation.

Critical learning

Based on the experiences gained from the last five years of rolling the program out, Johnson & Johnson realize now how critical using the right terminology is to the transformation project’s successful buy-in and adoption. Starting with value and return on investment (ROI) concepts can help to avoid delays for future evaluations and decisions.