My primary responsibility was as an Architect and Developer for a new multi-tenant and multi-facet Software as a Service (SaaS) system. Responsibilities included coordinating the design, release, and development in multiple languages for multiple platforms, creating, and managing support documentation. As a proponent of Service Oriented Architecture (SOA), was the main contributor to the adoption and development of services in the organization. Additional responsibilities included evaluating, documenting, supporting, and promoting new supporting technologies. Provided educational material, mentored, interviewed candidates, and conducted presentations on new technologies to the team. As both a team member and a team leader, participated in and ran Scrums, an Agile Software Development Methodology. Because of my diverse experience in different frameworks, platforms, technologies, and languages, was repeatedly called into separate projects to either provide support, insight, or guidance.
Our final SaaS system ultimately resulted in significant savings by reducing duplicate work effort, introducing a consistent, simplified design, and consolidating business intelligence. Increased resilience and brand perception by utilizing on-demand hardware in a cloud-based configuration. It also allowed members to opt in and out based on demand with fault tolerance. The solution addressed both the marketing needs and internal requirements.
The architectural design included both multi-tenant and multi-facet beans requiring the standardization of interfaces, data transfer objects, and exceptions all to support multiple disparate client technologies and sources of data. As part of the SaaS architecture, designed a Write-Once-Deploy-To-Multiple-Facet architecture, allowing one java class (a service) to satisfy multiple facets (SOAP, RMI, AJAX, and HTTP Invoker RMI over HTTP). Resulting in significant savings in Total Cost of Ownership.
Responsible for the authentication and permission design of the SaaS system including the development of a Token-based system integrated with Acegi, that allowed access to the system based on location, date, and identity. Leveraged the power of Aspect-Oriented Programming (AOP) in the permission layer, the first of its kind in the group, which performed introspection on in and outbound objects. The design resulted in alleviating developers from making costly permission mistakes by intercepting calls and in a non-obtrusive manner applying permissions. When deployed to production, the system prevented several events of embarrassing cross-contamination of data and was recognized by management.
Successfully introduced two products to the vernacular of the team, Direct Web Remoting (DWR, an AJAX framework) and Spring Http Invoker (a Java Remote Method Invocation replacement). DWR integrated into the Service framework and met the needs of the Front-End Development team for a JavaScript data service. While Spring Http Invoker resolved a bug with RMI that undermined the Big Pipe F5 an OSI layer 3-4 Multilayer Switch. Responsible for successfully planning, testing, and converting all the Services RMI Clients to Http Invoker without impacting the development or the release dates of the product or team.
As SaaS module owner held the highest level of quality for a module in the entire team by designing and implementing the department's first automated test suite. Used Test-Driven Development and Domain Driven Design to continually test and improve the product. Prevented multiple occurrences of potential bugs to production created by back-end changes or careless development.
Increased performance by utilizing caching and introduced the concept of declarative caching with inline Metadata to the team. Developed "Self-Healing" and System Health architecture for Cloud members, which allowed members in the cloud to opt-in or opt-out of our Cloud SaaS system dynamically without impacting existing connections (elastic design). Developed Open JPA persistence components, and drawing upon experience with Hibernate, directed the team in solving issues with some of the ORM designs, saving expensive mistakes. Developed components in Disturbed Worker Framework (DWARF), part of Apache HADOOP framework. This required understanding of Java synchronization, threads, and RMI. Called upon previous use of J-Profiler to prove out and avoid harmful performance issues. With DWARF we were able to reduce search time through terabytes of data significantly and increase the user experience.
Designed components in ExtJS JavaScript, which were re-used in multiple systems, resulting in saving costly development. Prototyped a Portal, which was later, adopted as the final solution.
Lead developer of a four-member team responsible for converting the existing Portal into a mobile version with Sencha Touch. Utilized existing resources by introducing Mobile Spring and simply "Re-Skinned" the existing system in such a manner that it was suitable for a mobile device. The end product was delivered on time and exceeded the expectations of our product owner.