Posts written by Jonathan Hurley
In the good old days the measure of a programmer was efficiency - how much functionality could be packed into how much space. Languages like C keep code close to the machine and require close attention to, and strong understanding of, machine operation for performance and code execution.
Much like with the catapult, new methods have come along for launching higher-delivery projectiles at high speeds, but, when it comes to hurling a VW beetle the length of a football field, sometimes the old ways are still the best. The importance of efficiency in code has been maligned, and largely obfuscated, by modern delivery mechanisms; however, its effect remains critical to the performance of complex large-scale applications.
Before getting into the nuts and bolts of the load balancing architecture itself, it's important to understand the (typical) multiple tiers of an E-Commerce application framework:
- Firewall (edge)
- Physical local traffic manager (LTM)
- Web Server
- Application Server
- Database Server (cluster)
Keep in mind that, top to bottom, the environment will be asymmetrical from a load perspective. For example, a single web server will typically be capable of 2-3x the number of concurrent connections as a single application server; heavily dependent on cache density - higher density will shift more load up into the web tier. Caching will be a subject for a later discussion, but at a glance should account for 80+ percent of content served. With room for variance, the majority of successful architectures achieve this metric and those that struggle tend to miss. This is not to say, of course, that a lower density will necessarily have difficulties. In addition to relocating load away from application servers, a higher cache density opens an opportunity for external services, such as Akamai CDN, to absorb load ahead of ever reaching the environment.
The number of Thanksgiving evenings that have been ruined by the phrase "we didn't load test for this" is incalculable.
The real challenge of being prepared for a CyberMonday is caused by a misconception - load testing is designed to generate hits, views, or raw load. What this strategy misunderstands is that 1000 concurrent connections is not the same as 1000 concurrent page views. Instead, it is an amalgamation of multifaceted behaviors that drive load in specific, often non-overlapping, directions. Properly load testing for an ecomm flood requires accurate metrics of normal traffic and a multiplier like the following data points:
- How many concurrent visitors are expected?
- What is the daily conversion rate?
- Are there hot-spots, such as new or sale items?
- Does order management (OMS) share servers with other functional components?
- How quickly can resources be added into the environment?
- And probably the most difficult question of all - what is acceptable loss?
For most businesses, "success" can be succinctly defined as "delivering a store and processing customer orders". From a business perspective, that's the exact scope - it's how an E-Comm business makes its money.
From Online to Offline
Although demonstrably enjoyable at holidays, surprises when it comes to product purchases are generally frowned upon. Imagine if, after swiping a credit card at the grocery, all of the bags disappeared and were probably, but not always, teleported to their destination with no indication of which it would be! In essence – Schrödinger’s groceries. To say the least, the novelty would wear thin quickly. This scenario (copyrighted, if technologically feasible at future date) is analogous to accepting an order in an e-comm application, but providing no feedback loop on its status afterward. Those bad old days are long gone, but, in their place, stands a new interaction model - real-time feedback.
What is MongoDB?
MongoDB is, among other things, a document-oriented NoSQL database. This means that it deviates from the traditional, relational model to present a flexible, horizontally scaling model for data management and organization.
How does MongoDB work with AEM?
MongoDB integrates with Adobe Experience Manager (AEM) by means of the crx3mongo runmode and JVM options: -Doak.mongo.uri and -Doak.mongo.db
Why would I MongoDB?
Primarily MongoDB provides an alternate HA configuration to the older CRX cluster configuration. In reality, the architecture is more similar to a shared catalog on NFS or to NetApp than true clustering. The authors and publishers using MongoDB are not necessarily aware of each other.
When it comes to the battle cry of E-Commerce, "we're losing $1m per minute" is the clear winner, but a strong second is certainly "we want a disaster recovery solution". There are numerous benefits to disaster recovery and business continuity planning, especially speaking as the recipient of those 4am emergency calls. Traditional DR, with routing changes, cutover plans, scaled-down performance, and questionable technical tasks, is a well-traveled path in the industry, and it is very much inline with the expectations of most organizations even today. In the rapid-fire world of E-Commerce, this approach offers several challenges and misses a few key opportunities to take advantage of warm-side management.