Application Design
-
An enterprise application is defined by its data and the core processes that operate on
those data. Application architecture (Model 1 versus Model 2, web versus rich client,
container-managed persistence, etc.), deployment operating system, and choice of development
languages are secondary.
Therefore, my design philosophy centers
primarily on flexible yet highly efficient database structural design, optimized supporting
structures for querying performance, enforcement of business rules as declared data
constraints, and implementation of core business logic as stored procedures for optimal
performance and accessibility from a variety of platforms and interfaces.
My preferred database platform is Oracle,
having been an Oracle DBA and developer since 1989.
Application Development
-
Of course, I provide PL/SQL development services for core data processes implemented
on the database.
I also provide application server development services using
Java and related technologies, including
Apache Tomcat, the
Spring and
Struts model-view-controller frameworks, and
JavaServer Pages (JSP) constructed using industry-standard JSTL.
I've done a considerable amount of AJAX development as well.
I've been providing Java related development services since 1999.
Prior to that, I used ASP for server-side application development,
and Visual Basic and Omnis 7 for client-side application development.
Performance Tuning
-
The demands imposed on developers by aggressive deployment schedules often leaves
little time for performance tuning. However, it has been my experience that performance
tuning, especially SQL statement optimization and indexing, can provide dramatic improvements.
It is far easier for a well-tuned application to overcome slow hardware than it is for fast hardware
to overcome a poorly-tuned application. Throwing money at the server is rarely
the best solution.
Other gains can be realized by caching relatively static data within the application server,
and reducing the complexity of written code and library dependencies. The whole purpose
of performance tuning is to use your understanding of the application and database servers
to visualize and comprehend the units of work being performed on behalf of you application,
and minimize the units of work. A unit of work might be a database fetch, object instantiation,
a loop within the code, etc. Ironically, some development libraries that simplify and reduce
the lines of code significantly increase the units of work performed.
Server Maintenance
-
By definition, critical systems should achieve at maximum availability and uptime
without compromising security. Throughout my career I have been personally responsible
for several mission-critical, 24x7x365 systems and can apply that knowledge and experience
to your systems as well.
I reject the commonly held notion that it is unavoidable and acceptable to periodically reboot
servers as a preventive maintenance measure. This thought seems to be almost exclusive
to Windows environments. I do not recommend the use of Windows for servers,
favoring Linux and OS X instead. Your business depends on it, so use a technology that was
built for, and can handle, the demand. Unix, Linux and BSD variants such as OS X
are far more stable, scalable, and manageable - especially from remote locations.
|