|
At fnSys we
have extensive experience not only
developing systems from scratch, but also
taking the projects through to the
deployment and maintenance phases in some of
the most challenging technical environments.
Our experience with these systems has
led us to focus on three areas when bringing
a system to production-ready status: reliability,
scalability, and maintainability.
RELIABILITY
Success in
software projects is defined by uptime.
In the 1980s and 1990s most Telco customers
demanded "five nines" of reliability in
their systems (99.999% uptime, equivalent to 15 minutes
of unscheduled downtime per year).
While the cost associated with delivering
this level of reliability is prohibitive for
most companies, the lessons learned in those
demanding environments can be applied
judiciously (and cost effectively) to ensure
the stability of a platform or service
today.
SCALABILITY
With the advent
of the internet and Web 2.0, it is possible
for startups to be too successful.
They attract so many users that their
platform collapses under the strain.
If the original idea is good enough the door opens
for competitors that can deliver the service
reliably. One poor architectural decision wastes all
the hard work spent defining and developing
a groundbreaking product. Good system
designs need to allow for one hundred users, or
one thousand,
or one million. Understanding how the
initial system will grow seamlessly without
a complete re-write of the code or a forklift upgrade
of the hardware only comes from having experienced and triumphed
over these issues in the past.
MAINTAINABILITY
All the hard
work and planning that goes into making a
system reliable and scalable can be wasted
if system designers forget one simple fact:
human beings maintain and administer
computer systems. Factoring in the
human element to a system design, including
the fact that people always make mistakes,
is the final critical element to delivering
production systems. Developing strong
procedures that allow for the operational
realities of running the platform, including
third party software component upgrades (such as OS and database),
is often the difference between a reliable
platform and one synonymous with downtime.
EXPERIENCE
It is fine to
discuss reliability, scalability and
maintainability as the keys to delivering
production systems, but there is no
substitute for practical experience with
real systems. The fnSys
principals founded two successful software
start-ups that delivered on the above
philosophies.
Commerce.TV was a revolutionary interactive
television, advanced advertising and
T-commerce service provider. The
company built out an end to end system
comprised of a world class data center as
well as system deployments with three separate MSOs
(cable companies) serving well over
100,000 subscribers.
Open Development Corporation
was a software and
services company providing enhanced services
platforms to RBOC and wireless customers in
the mid to late 1990s. Open
Development's openMedia platform was
deployed in 25 sites with 10 separate Telco
customers, serving well over 10 million
subscribers with a 99.999% uptime
requirement.
The challenges
of these major
deployments taught us the importance of
planning for success up front with system
architecture.
|