Posts Tagged ‘scalability’

Using Vendor Features to Scale

Tuesday, December 29th, 2009

If you’ve had the opportunity to participate in an engagement with us you know that we tend to utilize the Socratic method of asking questions. And, it’s not uncommon for us to hear a company explain how they plan to utilizing a particular vendor’s feature to scale. For databases this is often clustering. We believe relying on a vendor to scale violates several of our architectural and scalability principles. Let us explain a couple of our more significant concerns with this practice of relying on a vendor.

First and foremost you should want the fate of your company, your team, and your career in your own hands. Do not look for vendors to relieve you of this burden. As a CTO if the vendor you vetted and selected fails, causing downtime for your business, your are just as responsible as if you had written every line of code. And if it is significant or frequent enough you should expect to be relieved of your position. All code has bugs, even vendor provided code, and personally I would rather have the source code to fix it rather than have to rely on a vendor to find the problem and provide me with a patch. This statement should not be taken to imply that you should do everything yourself such as writing your own database. Use vendors for things that they can do better than you and that are not part of your core competency. See our post on build vs buy for the four question to answer when making this decision.

With scalability, as with many other things in life, simple is better. The more complex you make your system to provide scalability the more you are likely to suffer from availability issues. More complex systems are more difficult and more costly to maintain. Clustering technologies are much more complex than straightforward log shipping for creating read replicas.

One of our beliefs, and should be one of yours also, is that it is most cost effective to be vendor neutral. Locking yourself into a single vendor, whether hardware or software, gives them the upper hand in negotiations. If you don’t think the sales rep knows this, ask yourself why they are willing to throw in some of these features at such an initially steep discount. The reason is that they can make up for it next year when you have to renegotiate.

If these concerns resonate with you, check out our database scalability cube post for ideas on how to design a scaling strategy that you can own, is relatively simple, and is vendor agnostic.

An Offer You Can’t Refuse

Monday, December 14th, 2009

Are you a maven? What’s that you ask? The term maven comes from the Yiddish and Hebrew words that mean someone who has knowledge about something and seeks to pass it along. The term was popularized originally, according to Wikipedia, by a series of television commericals in the 1960’s for Vita Herring. It has resurfaced in popularity due to its use in the book Tipping Point by Malcolm Gladwell, published in 2000. However in the intervening years it has continued to appear in academic research such as Feick and Price’s 1987 article The Market Maven.

The reason we’re asking if you are a maven is that while most book publishers continue to hold onto outdated opinions of influencers we know that you, the technologist, the leader, the influencer, are the one who really matters. Whether you influence people through your blog, twitter account, or position in a company, we want to enlist your help.

Book Cover Final

We wrote The Art of Scalability because we want people to have this information. We spend a lot of time on the road with companies helping them learn how to scale their people, processes, and technology but we obviously can’t be everywhere. We are self-described scalability evangelists and zealots. We want tech teams everywhere to debate architectural principles and all leaders to consider scalability when designing organizations.

Your mission, should you choose to accept it… is to use your network to get the word out about The Art of Scalability, specifically about the concepts covered in the book. In order to help with this we’d like to make an offer. The first 10 people that email me, michael@akfpartners.com,  requesting a copy of the book and committing to spread the word about the book using whatever social network technology you are most comfortable with, we will send you a free copy. Yes, that’s right, a free copy, all for just helping us spread the word about the concepts in The Art of Scalability. If you have a blog, feel free to post a review of the topics; if you use Facebook, post a link along with your thoughts; if you lead a team, have a discussion on the concepts covered. If you already have already purchased a copy of the book, thank you, and feel free to accept this offer to receive one to pass along to someone else.

Check the comments on this post before you email me to see if we’ve reached our goal.

I don’t want to take credit for this idea and while it is said that immitation is a form of flattery I want to give credit. Seth Godin gave away copies of his new book Linchpin, for a $30 donation to the Acumen Fund. Hopefully you took Seth up on his offer and will take me up on this one.

Complacency Kills Scalability

Monday, October 12th, 2009

We recently read John Kotter’s “A Sense of Urgency”.  Professor Kotter, of the Harvard Business School, is often thought of as one of the premier authorities on change and has written books such as Leading Change and The Heart of Change.

The book is an easy read and we highly recommend it.  In it Kotter argues that all companies need to have a sense of urgency to succeed in today’s world of continuous change.  Without urgency, companies are doomed and unfortunately most companies do not act urgently.   Instead, they act with the equally insidious enemies of urgency: complacency and false urgency.

Complacency has its roots in past success and is very pervasive.   People feel confident and content that they know what they need to do. Change comes seldom, even while the business needs change rapidly.   False urgency is equally pervasive and is mistakenly taken for a true sense of urgency.   False Urgency springs from recent failures and problems, focusing on short-term results even in the light of long term declines.   Anxiousness, anger and frustration coupled with frenetic activity netting little benefit are all characteristics of False urgency.  False urgency is often mistaken for urgency.

Urgency is rare and critically important.  It springs from great leadership and the recognition that opportunities and hazards abound.  The focus is on winning and in purging the company of all unnecessary activities.   Whereas false urgency is deflating, urgency can be rejuvenating.

In our experience, there are few places where complacency is more to blame than in the failure to scale your product.  You are successful and growing.   Things are going well and you are profitable or well on your path.   The press says great things about you and investors are flocking to your door.   Complacency abounds.   Why would you do anything other than you were doing yesterday? Get ready for failure!

Then when you fail, you look to just fix the current issues.   False urgency sets in and people rush about creating spreadsheets, presentations and meetings occur hourly.  But where is the simultaneous focus on long term needs?   Who is focusing on making the crisis a future success?   How are you ensuring that the processes you need are in place to keep you from having future failures?   Whom do you have looking at all the other limitations within your architecture?   Without the right focus, you will return to complacency and start a cycle of scale related failures that will bring your company to its knees.

Your only answer is to set a real sense of urgency.   The strategy, as Kotter recommends it, is to win over the minds and the hearts of your team and company to the scalability initiatives.   Explain why scale is important in a way that speaks to their hearts; make it about the customer!

Tactically, Kotter recommends four steps:

1) Bring the outside in: Focus externally.  What are other companies doing to solve their scale problems?   Get expert help where you need it.

2) Behave with urgency.  We take this to mean “set the example”.  Discuss scale every day and ask scale related questions.

3) Find opportunity in crises.   As we discuss in our soon to be released, a crisis is a chance for you to make your company better!

4) Deal with No-Nos.  These are the people who say “we’ve tried that before” or “that won’t work here”.   See our article entitled “Seed, Feed and Weed to Succeed”.   You can’t afford to have folks diluting your culture and sowing the seeds of complacency.

The Art of Scalability Update

Thursday, October 1st, 2009

Our book is still on track for an early to mid January 2010 hard launch.  We have completed roughly 1/3d of the copy editing process, having gone through the final round of editing on 11 chapters so far.  The book is available for pre-order at Amazon, Barnes and Noble and Borders.  You can also pre-order the book from the publisher, Addison-Wesley as well as get early web-access or pdf access to the pre-copy edited book.

Fish and I are discussing different options for signing books that clients and readers of our blog and newsletter purchase.  If you are interested, simply comment/respond to this post and we’ll work on logistics.

The Art of Scalability

Scalability Best Practices

Tuesday, August 11th, 2009

Here are a baker’s dozen of items that we feel are Best Practices for Scalability:

  1. Asynchronous - Use asynchronous communication when possible. Synchronous calls tie the availability of the two services together. If one has a failure or is slow the other one is affected.
  2. Swim Lanes – Create fault isolated “swim lanes” of hardware by customer segmentation. This prevents problems with one customer from causing issues across all customers. This also helps with diagnosis of issues and code roll outs.
  3. Cache - Make use of cache at multiple layers including object caches in front of databases (such as memcached), page or item caches for content (such as squid) and edge caches (such as Akamai).
  4. Monitoring - Understand your application’s performance from a customer’s perspective. Monitor outside of your network and have tests that simulate a real user’s experience. Also monitor the internal working of the application in terms of query and transaction execution count and timing.
  5. Replication - Replicate databases for recovery as well as to off load reads to multiple instances.
  6. Sharding - Split the application and databases by service and / or by customer using a modulus. While this requires slightly more complicated logic in the application it allows for massive scaling.
  7. Use Few RDBMS Features – Use the OLTP database as a persistent storage device as much as possible. The more you rely on the features offered in most RDBMS for your transactions, the greater load you are putting on the hardest item in your system to scale. Remove all business logic from the database such as stored procedures and move it into the application. When significant scaling is required join in the application and not through the SQL.
  8. Slow Roll – Roll out new code versions slowly, to a small subset of your servers without bringing the entire site down. This requires that all code be backwards compatible because you will have two versions of code running in production during the roll out. This method allows you to find problems that your quality and L&P testing missed while having minimal impact on customers.
  9. Load & Performance TestingTest the performance of the application version before it goes into production. This will not catch all the issues, which is why you need the ability to rollback, but it is very worthwhile.
  10. Capacity Planning / Scalability Summits – Know how much capacity you have on all tiers and services in your system. Use Scalability Summits to plan for the increased capacity demands.
  11. Rollback – Always have the ability to rollback a code release.
  12. Root Cause Analysis - Ensure you have a learning culture that is evident by utilizing Root Cause Analysis to find and fix the real cause of issues.
  13. Quality From The Beginning – Quality can’t be tested into a product, it must be designed in from the beginning.