About the Client

The Institutes is a nonprofit organization that provides designation programs and continuing education for insurance professionals.

The Challenge

The Institutes’ information technology (IT) department had grown over the years to 20-30 developers split across six teams.  The team was struggling to scale their development practices and the technologies they used to this size.  Coordination across these teams was becoming more difficult and error-prone.  In particular, release management was an ad hoc process without sufficient technical or process support; the result was multiple failed deployments and customer-impacting system downtime.  The Institutes wanted to improve their development process to accommodate this scale of concurrent development,  reducing the risk of errors and increasing developer efficiency.

Our Approach

Our team solved these issues by:

 

  • Introducing Infrastructure Configuration Management (ICM):  Automating the configuration the Development, Test, and Production environments
  • Standardizing and Enforcing the Development Process:  Adopting a consistent department-wide, enforceable process; introducing Git.
  • Automating Deployments: Removing the chance of user error and adding transparency to all changes.
  • Stabilizing Environments: Isolating developer changes resulting in more developer control, less communication overhead, and predictability in the development and test environments.
  • Training:  Developing and leading hands-on training to transition developers from the old development method to the new.

 

The IT department now uses a mix of old and new technologies to manage their development operations:

 

  • Vagrant creates and configures virtual development environments.  This enables developers to work in consistent, independent development environments rather than production.
  • Salt is an infrastructure configuration management tool that enables developers to quickly build and replicate systems.
  • Python is a general-purpose programming language; Salt is built in Python.
  • VirtualBox is a hypervisor; it enables developers to create and run virtual machines.  A virtual machine emulates a real computer completely in software; this enables developers to have multiple virtual computers running on a single physical computer.
  • Git is a distributed version control system.  It enables multiple developers to work on the same set of files without accidentally damaging each others’ work.
  • Stash adds additional capabilities to Git, including Jira and Bamboo integration.
  • Jira is issue-tracking software; it enables the developers and their internal customers to track system issues, bugs, and enhancements, as well as progress that has been made on each item.
  • Bamboo is continuous integration software; continuous integration is the practice of having developers integrate their working copies of software back into the main repository on a frequent basis.  This enables developers to discover integration issues early.
  • Oracle is an enterprise-class relational database system.  Most of The Institutes’ most important systems for managing customer data are built in Oracle.
  • PL/SQL is Oracle’s specific implementation of the SQL language.  The Institutes relies heavily on PL/SQL to manage customer data.

 

The Release Management initiative has had several positive effects on the Institutes’ IT department:

 

  • The IT department delivers changes to both internal and external customers faster and more frequently.
  • No system downtime has resulted from any deployments since the new process has been adopted.
  • External project teams are now able to work in parallel with internal development teams.

This project addressed issues that appear to be far removed from our client’s customers.  Software configuration management? Virtual environments? Oracle and Python?

 

None of these things show up directly in front of a customer.  However,the challenges faced by the IT organization showed up in fewer new features, more bugs, and system downtime.  Your customers can’t buy from you if your systems aren’t up!

 

As unglamorous as this all may seem, improving the way in which the IT department manages, builds, and deploys its software has a significant and immediate impact on the end customer.