Announcement

Tuesday, January 17, 2017

DevOps Imperative for Enterprise Apps like PLM – Part 2

In Part 1, I talked about how implementing shorter deployment cycle is imperative for companies like AutoX (i.e.  companies like Ford, Toyota's and Airbus) and for PLM vendors (i.e. companies like Dassault Systèmes and Siemens PLM).  And implementing DevOps practices is the way to achieve these shorter cycles.

My colleague Sreekanth Jayanti shared this comparison that illustrates the benefits of 'shorter deployment cycles'


Now in this part, I intend to explain how to achieve the seemly impossible dream of major version upgrade PLM version in a Auto company in one month and minor version upgrades in a week.

Lets continue with the example of AutoX (an automotive company implementing PLM) and PLMX (the PLM vendor).  To achieve this Dream, AutoX have to change its way of working and PLMX have to change its licensing model, to some extent even business model. Lets start with what changes PLMX have to do.

Usually deploying/upgrading a new version of PLMX will require
  1. Creating new version setup
  2. Re-applying all customization to newer version (e.g. change web pages, ui customization, workflow changes, upgrade plugins etc) and Test
  3. Test all existing integrations work with newer version. If they don't then fix the bugs, remove deprecated APIs etc and make it work.
  4. Upgrade the database schema
  5. Migrate the data to newer schema.
  6. Upgrade documentation etc
To achieve all these steps in a 'short cycle', PLMX has to make many changes in its way of working and licensing model.

PLMX should License the tools developed for in-house cloud deployment and upgrade to customers

For many years, PLMX have acted as if difficulties of 'deployment' and 'upgrade' are not really its problem. It is the problem of 'AutoX' (i.e. problem of customer). This thinking is now changing (but slowly than expected). Major driver for this change is 'cloud deployment' of PLMX. Now PLMX is managing their own 'production cloud deployment' and now it is facing all the deployment and upgrade problems of AutoX. Obviously PLMX is better equipped to handle these challenges and it is developing tools to simplify these tasks. AutoX (i.e. customers of PLMX) requires exactly same kind of tools. Today PLMX is not licensing these tools to their customers yet. And that is the first change PLMX has to do.

PLMX should License automated regression test suite for public interface to customers

The major driver in achieving 'shorter' deployment cycles is 'automated tests'. There is NO way AutoX can achieve One month deployment if it relies on manual regression testing. Also AutoX will not able to write completely new automated tests for every upgrade cycle. It has to 'reuse' the tests already written. It will make AutoX life lot easier if PLMX includes its 'automated tests' as part of PLMX license. AutoX can then change these tests to as per the customization that AutoX has done. When a new release of PLMX is available, AutoX has to take new set of JARs, JSPs and Unit Tests from PLMX, re-apply the customization that AutoX has done to this set and then test new version with its own customization in its own test environment. 

Even better if PLMX shares automated regression test suite on a sharing platform like Github

I will dream some more and assume that PLMX has put its 'public test suite' on a sharing platform like Github. Now AutoX just 'clone' the unit tests from Github and change it to test its own customization. AutoX is now contributing its own tests (which illustrate some bugs) to this sharing platform. All customers of PLMX are now sharing automated unit tests and effectively making their 'production deployments' faster.

PLMX should develop tools for 'incremental' migration of data

PLMX is already providing some tools to manage the database schema changes. However applying these 'schema changes' to production databases is messy and time consuming. When AutoX is migrating its PLMX back-end database to new schema, invariable issues are detected and 100% data is not migrated in 'first attempt'. So incremental data migration tools are critical. 2nd attempt should just migrate the 'failed' data and should not start from scratch again.

PLMX should develop tools/recipes for cloud deployment using virtualization and containerization of its components

Today PLMX comes with an 'installer' where IT admin has to 'click' next and select various options to setup the newer version of PLMX. To some extent PLMX is now using virtual machine images for test setups. But there is no containerization yet. Chef/Puppet recipes are not available yet. Automatic provisioning and horizontal scaling of PLMX deployment is still not easily possible.

PLMX should start using scalable, distributed data stores like Hadoop, Apache Cassandra

PLMX back-end is still traditional RDBMS (e.g. Oracle database or Microsoft SQL Server). Both Oracle and Microsoft SQL server now support 'horizontal scaling/scale out/distributed database architectures'. Also open-source data stores like Hadoop, Cassandra are also providing high availability and performance. PLMX back-end should be scalable providing high availability without single point of failure.

Of course all these steps will help PLMX in its own 'cloud deployment' of PLMX application. It will take at least 3 to 5 years for PLMX to achieve all these steps. However, PLMX will need a 'marquee' customer to like AutoX to try out all these tools in a production scenario. And that is Part 3 of this series.

Sunday, January 08, 2017

DevOps Imperative for Enterprise Apps like PLM and ERP – Part 1

In dictionary, “Imperative” is defined as “of vital importance; crucial (adjective), an essential or urgent thing. (noun)

Today I find that DevOps is focus of ‘end user product companies’ (be it desktop product or a web application or mobile application).  There are almost no documented cases of using DevOps on Enterprise products like ERP, PLM products.  Enterprise product companies like SAP, Dassault Systèmes, Siemens PLM are using DevOps practices internally while develop the SAP, Enovia (PLM) or Team Center (PLM). However, Enterprises like BMW, Ford and others are not really getting the benefit of DevOps while deploying these enterprise applications.  Current situation is ‘Lose – Lose’ for both Application Vendor and Customer.  My prediction is First company who realizes it and makes its application ready for DevOps practices in Enterprise deployments, will make a ‘killing’ in the market.  This is “DevOps Imperative” that I am going to write about.

Let’s take an example of deploying a PLM software (like Enovia from Dassault Systèmes or Team Center from Siemens PLM) in a large Auto or Aero company like BMW, Ford, Airbus or Boeing. Let see what is the current status and then dream about what is possible. Then see how we can make that dream into a reality.

Current Status – Why it’s a Lose->Lose situation for Vendors and Customers:

Let’s assume Auto Company “AutoX” has PLM system “PLMX” at version 10 deployed in its plants.  Typically PLM vendors release one major new version every release. Hence Version 11 of PLMX is now available.

  1. For AutoX version upgrade is a major exercise. It may cost a millions of dollars and at least one year to upgrade the deployed version.
  2. So if AutoX wants to move to version 11.00, it will take one year and millions of dollars to upgrade. So by the time AutoX upgrades to version 11.00, Version 12.00 PLMX will be available. So AutoX is always playing catch up.  By the time AutoX finish upgrade to version 11 , its time to start for upgrade to Version 12.
  3. In the end AutoX decides to skip one version and upgrade directly to version 12.00. However, it means more difficult upgrade.
  4. Since new features available in Version 11 will not be available to AutoX, AutoX will end up creating customization for some of features available in Version 11.  When AutoX upgrades to Version 12, these customization have to be removed so that same requirements can be fulfilled by OOTB features. Many times AutoX will end up maintaining its customization and NOT using similar Out Of Box features.
  5. These customization will take time and money to develop and maintain. AutoX is essentially spending extra money for features which are available out of box.
  6. For Vendor, many customers like AutoX will not upgrade to Version 11. So Vendor will not immediately get feedback on usefulness of new features.
  7. Vendor has to support many old versions which are in production. It adds lot of cost to development efforts of the vendor.
Essentially it’s a ‘Lose Lose’ for everyone involved.

How do we convert this “Lose Lose” situation to “Win Win” ?

The upgrade is “Lose Lose” situation because of one key reason “time required to finish the upgrade”.
Now assume that you are the CIO of AutoX, close your eyes and imagine following:
  1. Vendor has released version 11 of PLMX
  2. AutoX has put the version 11 of PLMX on its DevOps ‘pre-production’ servers.
  3. Within 2-3 weeks, all the customizations and other integrated applications are migrated and tested on version 11 of PLMX
  4. In 4th week, with available DevOps migration tools (using containers, virtual machine images, private cloud setups etc etc) production schema is upgraded, production servers upgraded, and new versions of integrated applications installed etc
  5. In one month AutoX is now on version 11 of PLMX.
  6. If Vendor releases a hot fix or service pack, it is put in production within a Week.
With above assumption, the scenario will be different. What are benefits to AutoX and PLM vendor in such scenario?
  1. AutoX is able to benefit from new features immediately. AutoX will now have much better ROI for its purchase of PLMX.
  2. AutoX don’t have to develop and maintain so many in-house customization where similar functionality is available Out of Box.
  3. For AutoX now cost of upgrade will be negligible and it will become ‘routine’ exercise.
  4. Once majority of PLMX customers move to same kind setup, PLMX don’t have to spend time/money on supporting older version PLMX. It can its developers to new features and bringing more values to PLMX customers.
For many months now I am ‘dreaming about the above scenario’. Wherver I talk about this ‘dream’, the reaction I get from audience (most of them PLM veterans), “it’s impossible”.  Is it really impossible???
I urge you view/read about John Allspaw and Paul Hammond’s talk in Velocity Conference 2009 titled 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr.   (Slides) At that time “10+ deploys a day” was considered Impossible. However, this seminal talk broke through that mental barrier, and after that many previously “impossible feats” were achieved in many different companies.
Following table is show the data from book “Phoenix Project” by Gene Kim about on “number of deploys per day” at few popular and successful internet companies. This data is from year 2012.

CompanyDeploy FrequencyDeploy Lead timeReliabilityCustomer responsiveness
Amazon23000/dayMinutesHighHigh
Google5,500/dayMinutesHighHigh
Netflix500/dayMinutesHighHigh
Facebook1/dayHoursHighHigh
Twitter3/weekHoursHighHigh
Typical enterpriseEvery 9 months to 1 yearMonths or QuartersLow/mediumLow/Medium

Amazon is doing 20000+ deploys a day and when I talk about 1 month to deploy a ‘new version” of PLM and people still consider that impossible. Enterprise Applications world is way, way behind in terms of DevOps practices.  Did Amazon reached 20,000+ deploys a day in few months. Obviously not. It took them 5 years to move away from their original OBIDOS content delivery system to current architecture.

If AutoX wants to go to 1 month production deployment and if they start today, probably it will take them 3 to 5 years to reach there. Obviously it will require mindset change, investment to develop the necessary tools and practices and it will require cooperation from PLM vendor.

Is that investment worth it? I em-pathetically say “YES”. I will repeat my prediction again that first PLM vendor who supports that and first company who achieves it will make a ‘killing the market’. Studies have established that There is a ‘positive’ correlation between the deploy frequency and profitability of the company. So its a great opportunity for companies like Ford, BMW, Airbus, Boeing, etc and PLM vendors like Dassault Systèmes, Siemens PLM.

In Part 2 of this article, I will explain the steps that are required from AutoX and from PLMX vendor to achieve this ‘seemingly’ impossible dream?

Readers, do you still think it is an impossible dream? I will love to hear from you. Please leave a comment.

NOTE - All the opinions expressed in this article are my personal opinions

Sunday, December 11, 2016

Managing all your passwords from one place

In April this year, my friend Parimal Nagarnaik died after 2 year battle with cancer. At that time I realized how many things we do online now a days. All these websites have a username and password. Usually these usernames and passwords are stored in memory or in browser (e.g firefox/chrome) or some word document. It creates a mess for the family.

Last few days I am searching for a way to manage all the passwords at one place from multiple devices. Also a way to share the passwords with family in case any mishaps. I have found following somewhat practical way.



Keepass : Opensource application for securely storing passwords

First download http://keepass.info/download.html . Keepass is an open source application for managing your passwords. All the passwords are stored in keypass database in an encrypted format. Keepass uses AES/Twofish (two well known cryptographic algorithms with 256 bit key). The main database is encrypted with a key derived from a master password. You have to give the master password to decrypt the database of all other passwords.

How to share Keepass database across devices ?

Now enter all the passwords in Keeepass and save the password database in Google Drive. All your windows devices can share same keepass database. Any changes in one device will be propagated to another device by Google Drive.

Now install KeepassDroid  from Android playstore.                        

Install Google drive app on your phone from app store. Make the keypass database 'available offline'. And then open it directly from Google drive. Google drive will ask 'which app' to be used for opening the file. Select "Keepass Droid" app. Now same google drive keepass database is available to you on your android phone. Any changes/edits you do on phone will be synced to your desktop apps as well.                        

How to share the Keepass database with family members in case of mishap?

You can share the keepass file with your family using the google drive 'share' feature. This way family will have access to your passwords if required.

Gmail has 'inactive account manager' feature. "Inactive account manager" sends a message to google email accounts that you specific and give them access to your gmail. You can specify the message to be sent to these account. Include your 'keepass' master password in this message.

Keepass apps are ported to iOS/iPhone as well. Search for MyKeePass or SyncPass on iPhone appstore.                        

Keepass plugins are available for Firefox, Chrome, IE for managing all your internet password/logins directly from browser. You can get the links for various plugins from http://keepass.info/plugins.html