This article explores how DevOps concept can help in the implementation of FlexPLM Retail solutions and ensure that the end customers get the solution faster and closer to their need.
Two major concepts in DevOps
Continuous integration is the practice of automatically integrating and testing a piece of software each time a code is created by a developer. Continuous delivery goes a step further to package the software, perform regression testing, and ensure that the software is ready for release.
FlexPLM is one of the leading Retail Product Lifecyle Management (PLM) enterprise application by PTC. It has been in the market since mid-2000’s and has some of larger implementations across the globe. You can access more information about FlexPLM from here.
DevOps lets the IT teams work in a way that enables a manufacturing assembly-line operation for software development. DevOps comprises of Continuous Integration (CI) and Continuous Delivery (CD). DevOps Lifecycle enables continuous product deployment through effective infrastructure automation, configuration management, deployment automation and infrastructure monitoring.
Jenkins is one of the most used tools for automation of the CI/CD pipeline. It has worked well and has probably the highest acceptability with customers.
With that, let us explore why DevOps for FlexPLM implementations
We will begin with the barriers the client faced in exploiting the full potential of its manufacturing capability. Many of these are familiar to manufacturing businesses:
- End user expect faster turnaround time for changes, manual Change Request process can may it difficult to match end user requirements.
- Development & operations teams can keep shooting each other in the foot, if not in sync.
- Process of making even minor changes like type manager changes and deployment is not completely error proof.
- Lower environments may not have latest server configurations, and this can cause issues to slip through.
- Patches and service packs deployments are not simple click through deployments.
- FlexPLM architecture does not permit blue green deployments, at least our attempts have failed so far. Downtime needs to be managed, considering the users’ geographical spread.
Our learnings from teams that are successfully running on DevOps principles.
- Start small and keep adding layers of automation, it will take some number of iterations to get it right.
- Invest in developing Agile mindset within the team. Plan, deliver, retrospect, adjust and repeat.
- Define your pipelines with long term goals in mind, and with gate events with clear thresholds. Everyone should see what is happening.
- Keep a single repository of code. With Branching and merging strategies aligned to your pipeline events.
- Invest in tools, and building utilities to automate certain tasks that are otherwise error prone e.g. Type Manager loads, test data load.
- Tools like Gradle to ensure consistent developer environment,
- Type data as a Config Item can be extremely painful to handle. We had to develop custom utility to compare configurations between two environments, generate a delta config load file (including for deletes and Enums) that is used for deployments
- Implement and integrate code analyzers with your SCM tool. Selecting right rules is critical, there can be a whole lot of false positives because of the old school API’s in FlexPLM
- Building Continuous testing is a must have.in your DevOps pipeline. Most common type of issues that can slip through are configuration issues. Setup automated tests as gate events. These include running unit, system, integration, and performance testing. Design your builds to self-test.
- Smoke testing, Functional testing, Integration testing and Regression testing are part of testing phase. Popular testing tools like Junit and Selenium are leveraged for the different testing phases
- Infrastructure as Code – automate your server provisioning and application properties setup for the FlexPLM server e.g. cluster node count, cache sizes etc.
- Continuous Delivery and Deployment need release orchestration and artifacts management., As the team works on shorter deployment cycles maintaining deployment artifacts manually is not possible. Use tools like Artifactory
- System Monitoring There are bunch of tools available as SaaS services, but important thing is to setup correct thresholds. PTC PSM tool built on DynaTrace gives features like real-time dashboards and heap dumps for crash analysis. Obviously, the paid version gives more features such as “PurePath” that can be helpful in detailed performance analysis. Splunk is a popular log management & analytics tool.
We are sure we’ve just scratched the surface here but hoping this would inspire some to take the first steps. Refer to the DevOps Periodic Table for the best in class tool options for each phase of DevOps.
Bon voyage on this new journey!
Lead Consultant, PLM
Senior Project Manager, PLM
General Manager, PLM