Two recent blogs from engineering managers at successful Web properties have highlighted the wisdom of selecting proven and mature technologies, whether for new startups or projects.
The first one is entitled "Learn to stop using shiny new things and love MySQL", by Marty Weiner, Engineering Manager at Pinterest. Marty starts off explaining "A good portion of the startups I meet and advise want to use the newest, hottest technology to build something that’s cool, but not technologically groundbreaking. I have yet to meet a startup building a time machine, teleporter or quantum social network that would actually require some amazing new tech. They have awesome new ideas with down-to-earth technical requirements, so I kept wondering why they choose this shiny (and risky) new stuff when all they need is a good ol’ trustworthy database. I think it’s because many assume that building the latest and greatest needs the latest and greatest!"
Marty outlines two of the most important lessons he learned building Pinterest:
- "Don’t be the biggest. If you’re the biggest user of a technology, your challenges will be greatly amplified.
- Keep it simple. No matter what technology you’re using, it will fail."
At some point the team re-architected the site both to simplify the architecture and ensure scalability. They built a set of questions to help guide their choice of technologies, the last one being "How mature is the technology?" Marty then spends more time expressing how important maturity is:
"The harder and more passionately people push on a technology, the faster they will run across bugs or performance problems, fix them and hopefully contribute fixes back for the whole community to use...
...As a technology hardens, collaboration occurs, understanding gets deeper and a wealth of knowledge is built out. As the technology itself gets more stable and beautiful, documentation and simplification occur and the frontiers and boundaries are tested and widened.
You don’t want to be on the wrong end of the maturity equation. There’ll be dragons there:
- Hiring will be more difficult: Try searching on Google for MySQL admin and Cassandra admin. Try walking out into a busy San Francisco walkway and yell out that you need a MySQL admin. You’ll find one. Hbase, unlikely.
- You’ll find minimal community: It’s 2 a.m. and you’re getting a weird error message “48fe1a is opaque” (an actual error message I got from Membase). What the f!*k does that mean? Crap, there are there no answers anywhere on Google. Conversely, I can’t remember the last time a MySQL question I had wasn’t already answered along with somebody calling the questioner a nOObXor.
- You’re more likely to fail, possibly catastrophically: We had an unexpected loss of data on nearly every technology we used at one time or another, except MySQL. Even on the worst days, when the hard drive crashed, we still managed to find a script somebody wrote to do magic voodoo to get our MySQL data out again and live another day. Other technologies left us dead in our tracks because nobody had encountered the same problems, or they hadn’t taken the effort to dive deep to recover their data or they hadn’t contributed the fix back to the community. Incidentally, I’m super thankful we never trusted the golden copy of our data to any other system except MySQL in those early days.
...If you’re on the frontier, you’ll hit new bugs and issues that the rest of the world has never seen. They'll be 10x harder to debug and will likely require a depth of knowledge that goes outside the comfort zone of your current engineers. You’ll have to dig in, push hard and learn fast. I send you my virtual hugs and admiration. I’ve been there. It will be tough. Blog what you find, collaborate and communicate.
If you’re starting or growing a company, and your scale is smaller than huge, consider maturity to be your most important factor aside from basic requirements. Ask yourself — does MySQL sufficiently meet my needs? If so, use it. If you’re wondering if MySQL will be fast enough, the answer is YES. Even better than fast, MySQL’s performance will be consistent."
Read Marty’s full blog here.
The second blog is by Dan McKinley, sharing some of the experience he acquired during over 6 years at Etsy and entitled "Choose Boring Technology". Dan advocates to "embrace boredom":
"The nice thing about boringness (so constrained) is that the capabilities of these things are well understood. But more importantly, their failure modes are well understood...
...I unapologetically think a bias in favor of boring technology is a good thing, but it's not the only factor that needs to be considered. Technology choices don't happen in isolation. They have a scope that touches your entire team, organization, and the system that emerges from the sum total of your choices.
...One of the most worthwhile exercises I recommend here is to consider how you would solve your immediate problem without adding anything new. First, posing this question should detect the situation where the "problem" is that someone really wants to use the technology. If that is the case, you should immediately abort."
Read the entire blog here.
2015 marks MySQL’s 20 years anniversary (as well as 10 years of Oracle’s stewardship for the InnoDB storage engine and 5 years for MySQL). The world’s most popular open source database is a proven, battle-tested and mature technology. Perhaps boring to some (which you should embrace!) but delivering tremendous benefits to help you scale, safely and cost-effectively. So quoting Marty, love MySQL!
Thanks to both Marty and Dan for their insightful blogs.