Streamezzo S.A. - All rights reserved
Copyright 2001-2010
How to define server platform for production
When switching from development platform to production, many asserts have to be taken into consideration in order to define and set up a platform that:
- supports the identified number of simultaneous end-users,
- resists to failovers,
- is available 24 hours a day,
- accesses 3rd party back-ends efficiently.
This tutorial details a generic platform compliant with such requirements.
Asserts to take into considerations
1) Support the identified number of simultaneous end-users
A typical server platform for production:
- supports the anticipated number of simultaneous (concurrent, from the platform perspective) users
- scales easily in case the number of users increases through time:
- deploying multiple Rich Media Server instances in cluster,
- using a load-balancer to distribute the load.
2) Resist to failovers
A typical server platform for production:
- ensures no data loss,
- includes a recovery mechanism.
3) Available 24 hours a day
A typical server platform for production:
- is available 24/7,
- ensures resistance for any element subject to potential breakdown.
4) Access to 3rd party back-ends efficiently
A typical server platform for production:
- interoperates efficiently with accessed 3rd party back-end
- ensures satisfying QoS with any access data sources (database, web service, CMS...),
- grants a good user experience (limited latencies when retrieving dynamic content from the server).
Architecture of a typical server platform

A typical server platform is composed of 3 tiers:
- Load-balancing
- Front-end
- Back-end
1) Load-balancing tier
Load-balancing tier is supposed to be made of:
- a hardware load-balancer
- a software load-balancers (such as Apache Web Server).
Hardware load-balancer
Forwards HTTP requests to software load-balancers.
Software load-balancers
- Forwards HTTP requests to Rich Media Server cluster nodes using a specific transfer protocol depending on the JEE application server. This protocol may provide advanced features for improving connections management and load-balancing heuristic.
- Software load-balancers are optional but they provide advanced features for handling heavy traffic.
JEE application servers vs. Web server
- JEE application servers SHOULD NOT receive HTTP requests directly, as their connectors may not be fully compliant with HTTP standard,
- Web servers are supposed to be fully compliant with HTTP standard and they are better in handling requests towards static resources.
2) Front-end tier
Highly available platforms should be composed of 2 Rich Media Server instances that:
- fulfill performance requirements in case one of them crashes,
- share the same database that also includes failover mechanism (see Database Tier section below).
Instructions for setting up multiple Rich Media Server instances in cluster are available in this document. All instances will then be administrated from a single console.
3) Database tier
It is possible to setup some databases such as MySQL that supports failover:
- READ accesses performed from Rich Media Server, are simple to manage,
- WRITE accesses performed from Rich Media Server instances, are more complex.
If the integrator does not feel able to manage a databse such as MySQL for high availability, then he should choose a more advanced database solution such as Oracle.
This gives the overall description for a relevant production server platform.
Every application has its specificities and needs to be properly sized and tuned to meet the final goal: offering a fine user experience to a large and increasing number of end-users.
Defining how the platform must be sized involves:
- number of elements detailed above (load-balancers, Rich Media Server cluster nodes, databases...),
- capacity of each element (memory, CPU...).
Defining how the platform must be sized relies on a benchmarking phase that:
- stresses the platform,
- measures its capacity and limits,
- allows identifying what shall be set up to support the anticipated traffic.
This is the purpose of the next tutorial (coming soon).