Chapter 14. Development and Operational Processes: Building Systems That Work in the Real World
A few years back, I was called in to help a midsized ecommerce company that was having what they delicately described as “scaling challenges.” That’s consultant-speak for “things are on fire and we don’t know how to put out the flames.”
When I arrived, the VP of engineering gave me the tour. “We’ve grown organically,” he said with visible pride, gesturing at a wall covered in architecture diagrams that looked like someone had played connect-the-dots during an earthquake.
Now, grown organically is one of those phrases that sounds really nice, like artisanal or farm-to-table. It conjures images of careful cultivation and natural evolution. In reality, what it usually means is “We had no idea what we were doing, and everyone was cowboying things.” This company was no exception.
Their Google Cloud environment was a testament to creative problem solving under pressure. One developer needed a database? He spun up Cloud SQL. Another needed message queuing? She deployed Pub/Sub. Need a cache? Someone found Memorystore and went key-value crazy. All great services, all deployed in completely different ways, with zero documentation and absolutely no consistency in naming, networking, or security.
The real fun started when I asked about their deployment process.
“Oh, that’s easy,” the lead developer said. “We just SSH into the production VM and update the code.”
“And if something breaks?”
“We SSH ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access