Services : Intranet or Internet : Technical
[General Info]
Our web development work, whether for Internet or Intranet use, is focused on dynamic
sites. Dynamic sites create at least some of the content of the site in response to user
interaction. That could mean looking up information in a database and formatting it for
display, or modifying the look or content of a page based on the user's preferences, or
using content management software to allow the entire content of the site to be dynamically
remotely updated.
Our dynamic solutions follow a consistent pattern that separates the application
into multiple tiers. Usually a very thin browser client is the interface. A web server
communicates directly to the browser, sitting behind the web server is an application
server that handles the business logic for your site. Usually that application tier
uses a separate database server for persistent storage of information. Separating
the application into these tiers helps to achieve a number of important goals, like
enhanced functionality, scalability, performance, upgrade path, and security.
Of course our development methodology plays an important role in ensuring that
we don't build the wrong solution. We spend the right amount of time up front to
ensure everybody understands the problem, and that the solution we're proposing
fits, before we start building. Have a look at our
development practices for more on this.
Web projects range from the very simple, like please add a search page to my site,
to large and complicated. Each project has its own set of issues and solutions, here
are some of the top things we consider when looking at a project, and some of our
approaches.
Functionality : What do you need from your site? Integration
with your back end database? Personalization to match the preferences and interests of
your visitors? A robust online community to support your brand? E-Commerce transaction
processing to speed orders through your system? Our first priority is determining
what your site should and shouldn't do. We usually use 'Use Case' descriptions to
help figure out what your system should do, and how it should do it. Use cases
describe, in simple prose, how a typical user would interact with the site. A well
written use case helps ground the system in the real world, and exposes a surprising
number of issues before they become expensive problems.
Cost : Everyone wants to keep the cost of their dynamic site down, but how
they measure cost varies depending on the client. For some clients, deployment cost
is the important consideration, how much does it cost to get the site up in the
first place. For other clients it is maintenance cost they are concerned with, over
the lifetime of the site, including modifications, potentially heavy modifications,
how much will it cost. For other clients it is the cost of scaling that concerns
them, if their traffic volume soars how much does it cost to grow the site. There
are different strategies for addressing each of these concerns, with some overlap
thankfully. For low volume Intranet sites, using code generators and open source
tools or tools included with the operating system helps keep the deployment cost
low. For clients concerned about modification cost it usually makes sense to design
a more robust infrastructure to support changes.
Performance : Depending on the volume the site expects to get this may or
may not be an issue. For Intranet sites this is usually a pretty low priority, for
public Internet sites with a large audience or heavy transaction use it could be
critical. In our experience, performance on dynamic sites usually comes down to
how efficient the database access is. We use automated stress tools to get baseline
numbers, then experience and deduction to find the causes. Then hard work and
experience to fix them.
Scalability : This is closely related to performance, however where
performance looks at what you can handle on a given setup, scalability asks how
high you can go total, and what you have to do to get their. For example, if you
need to add a machine to scale up, what is the cost of that machine? Do you have
to change your site design to accommodate it? How much is the operating system,
the application server, and the database? What components will require more
horsepower as the site grows, how easy is it to add to? Addressing those questions
early helps ensure you don't get unpleasant answers down the line.
Security : Obviously on everyone's mind these days is how to keep your
dynamic site secure, and what's the cost of doing that? All of our design and
consulting work takes security very seriously; it is something that has to be
designed in from the beginning. Security audits after the fact help find the
problems, but it can be very expensive to fix them then. It's far better to
have a realistic understanding of what your security concerns are, and address
them as your site is built.
Upgrade path : Dynamic web sites, like most software, are rarely completed
on the first pass. There is usually more to add, improvements, new ideas, repairs
to be done. Ensuring that your solution has an upgrade path is important to us.
That means choosing the right technology platform for you, to make sure it has a
future. Designing the solution with additions and upgrades in mind, so you don't
have to rip it all out when the first change is suggested. And thinking through
some of your possible future requirements as we work through the project plan, so
you're not caught unaware.
Reliability : Once your site is running it's important that it keeps on
running consistently and for a long time. That may be a critical goal for a high
volume public web site, or it may just be good cost effective business practices
for an Intranet site. Reliability is achieved through a combination of best
practices. Like picking the right platform in the first place, designing a robust
solution, taking error handling into account early on, and testing to find failure.
Testing : None of our projects are complete with a good solid test suite
backing them up. The test suite ensures that the software we deliver does what we
think it does. And it helps you in the future to ensure that it keeps doing it.
Toolkit
Client Tier : Internet Explorer 5+, Firefox 1+, Opera, Safari
Web Server : Internet Information Server (IIS), Apache
Application Server : Java Servlet/JSP (Tomcat, Jetty, Geronimo, JBoss), .NET
Frameworks : Tapestry, Spring, Struts, Hibernate
Techniques : Behaviour Driven Development, UML (primarily use cases, class diagrams, deployment diagrams, and sequence diagrams), JavaDoc (a great tool for automatic documentation generation from Java code), JUnit (unit testing for Java), Ant (build and testing automation)
Database : Oracle, Microsoft SQL Server, IBM DB2, Postgres SQL, My SQL
|