I was talking with Todd Hoff recently over at High Scalability about a trend I’ve seen of late.
ME: I really liked this post by Zoli Kahan from Clay.io. AWS, cloudflare, docker, haproxy, mysql, mongo, memcache, ansible. They use just about every technology being talked about these days.
Todd: Yah, that’s why I asked to republish it. I thought it was a good updated sampler stack.
ME: That said I defy you to find a team that actually *KNOWS* all those technologies.
Todd: Agreed. Systems are a lot of assembly these days, which doesn’t mean we know how to build the parts being assembled.
Join 28,000 others and follow Sean Hull on twitter @hullsean.
The article I was referring to was: How Clay.io Built their 10x Arch Using AWS, Docker, HAProx & Lots More
1. Dizzying array of technologies in use
I’ve been working with startups since the mid-nineties. In those days most application stacks consisted of a PHP application running on Apache, with Oracle on the backend. Both webserver & db ran on Sun Solaris. Hardware was reliable. Most attention was focused on fitting everything in memory, and monitoring the servers for swapping, and disk failure. Boy have those days changed.
I see dozens of startups each year, so I see a lot of very cutting edge environments. Here’s a peak at what I’m seeing these days:
Database: MySQL, Postgres & Oracle, to Mongodb, Cassandra & Couchbase
Caching: Memcache or Redis
Webservers: Apache, Nginx, Lighttpd
Load balancers: haproxy, Zen
Languages: PHP, Python & Ruby
Publishing: Drupal, WordPress, Joomla
Continuous Integration: Jenkins
Metrics: Cacti, collectd, NewRelic
Monitoring: Nagios, Ganglia, Munin, OpenNMS
Automation: Ancible, Chef, Puppet, Docker & Vagrant
DDOS & CDN: Cloudflare, Ultradns
Whew… That’s a long list!! And we’re not even considering the API’s that many applications are now building on.
Also: Are generalists better at scaling the web?
2. Shortcuts abound
Startups early on, don’t have enough working capital to hire a huge engineering team. So that means everyone is stretched. With a list of technologies that is ever growing, something’s gotta give.
These may cut corners by handing the web & technical operations work to a developer who has some skills. But I continue to ask… Does a four-letter word divide dev & ops?
Read: Which tech do startups use most?
3. More things to break & master
Ownership of a software stack, such as a database means mastery of…
o features in current versions
o bugs of current versions
o vulnerabilities of various versions
o best practices
o backup & reliability
For example a lot of shops where I dig into the database, I find low hanging fruit, such as misconfigured startup settings, table layout or index usage.
I see similar things when a networking expert pours over the haproxy configuration, or runs ping tests across the network. Most of these components are setup with fairly vanilla configurations, leaving loose ends and frayed threads.
Check out: Why I can’t raise the bar at every firm
4. Many startups carrying technical debt
I’ve seen a growing reliance on ORM’s which is worrying. Build your foundation on a crutch, and it gets very hard to eliminate down the line. Here are Ward Cunningham’s warnings on technical debt.
Related: Are SQL Databases Dead?
5. Long term support & viability
At one five year old firm, I was brought in to address scalability problems. I met with the team and was asked to provide a comprehensive review. The first thing I found was all the original engineers had long since left, so the code was new for everyone. As I dug my heels in, I found multiple versions of Apache along with Nginx on some other servers. Their stack was built on a patchwork of Python, Ruby & PHP. Then digging in further, we found a complicated web of dependencies for digital assets, mounted across servers & unmonitored.
Lack of standards is common in environments like these. Without an operational or architectural lead, developers are left to make decisions with what is directly in front of them. Though a decision of what language to use may appear simple at the outset, it carries long term consequences.
Will that language or technology be supported in five years? Will the community survive? Will your firm be able to hire people with that skill set? Will engineers still be excited about it?
See also: Is high availability overrated? Is five nines a myth?