email -> connect@openinit.com
The Center for HIV Information at UCSF manages several high volume websites with medical information for doctors and patients. They regularly implement a multitude of new features for a variety of clients, so the pace stays fast. As a side effect, the amount of code and software packages was becoming unmanageable.
Our first effort was to reduce the amount of repetitive tools, until there was one database and search system. The next step was to create shared libraries and a test framework from large amounts of “cut-and-paste” code. The effort allowed for rapid bug fixes that could be immediately tested and deployed by the production staff.
We also held trainings on a variety of front-end technologies, from XSLT to SQL to jQuery. This helped mediate the bottleneck of the limited engineering staff.
On the systems end, the Sun equipment was not configured to handle failures. We setup redundant disk configurations with ZFS, added Network Attached Storage to increase expansion, and created synchronized fail-over servers for catastrophic situations. We eventually moved the whole operation to Amazon’s EC2.
All of these efforts were included with ongoing software development, releasing four new sites.
The system greatly reduced required length for the maintenance window and potential down time. After a few releases, in house staff were able to create build packages and deploy them independently.
The second phase of the project was devoted to teaching the staff Java so they could manage future development. We taught a beginners Java class and a more advanced enterprise option to help build familiarity with the web components. After our training, the staff was able to handle the next release.
Circuit City kept us on for another two months to create an automated build process for other applications that drove their main web site.
We worked with two in-house developers: utilizing scrums, UML modeling, and code reviews to construct the system. We were also responsible for building and maintaining the development and QA environments, including several Linux blades and a DB2 database.
The project was successfully deployed to a AS400 Linux partition after a tuning effort when slow database queries were replaced with materialized views and a Lucene search index.
