The first assignment I was given for IBM was to create a Java proxy to interface between the
IBM/ISS Customer Portal and an IIS server running the
SightMax
chat server. I wrote a Java
Servlet which acted as the conduit between ISS customers and ISS support personnel via SightMax.
My next major assignment was a Java batch application which ran twice daily and collected
configuration and security policy information from ISS customer security devices, including
ISS RealSecure and Proventia A, G and M devices; Cisco ASA, FWSM, PIX and other devices;
Juniper, Fortigate, Websense and many other types of security devices. There were four basic
methods of information retrieval from all devices. The first, the simplest, was simply to
collect a precreated file from a device and store it locally. The second, was to execute a
command remotely which produced a set of files and displayed the list of those file names,
then, collect the listed files and store them remotely in special directories based upon their
file names and the device type. The third was to execute a set of commands remotely, return all the
output from those commands, then compare that output to a predefined set of regular expressions
and store only the output which matches. The fourth was to remotely execute a command on the device
and return and store all the output of that command.
During my time on the ISS team at IBM we decided to follow the Extreme Programming
()
paradigm, including Agile development, Test-Driven Development and monitoring the health
of our codebase with Continuous Integration. I set up continuous integration servers using
Hudson,
Bamboo and JetBrains
TeamCity. Ultimately, despite the fact that we developed using JetBrains
IntelliJ IDEA, we found that Bamboo worked best for us.
I designed and we used a set of scripts which I wrote in
Apache Ant
to build and deploy our various projects
to their various servers, in development, QA and production. I also put together the design for
our Linux servers to ensure when they were built, they had the software necessary to have the
application targeted to run on them in place before deployment.
|