Coquo means “to make mature” in Latin. And it sounds like “cocoa” in my internal monologue.
We are going to take an existing production SaaS (Software as a Service / web) application and demonstrate common “dev ops” and performance techniques that make it easier to ship changes to production while scaling as it gets more popular.
Background
I am a consultant who helps successful businesses grow their software products.
I usually work with companies whose product is a software product, but don’t see themselves as software companies. Many of them are worth millions, but are at a disadvantage when it comes to improving performance or ease of shipping new features because their domain expertise isn’t software.
You could be a transactional dry-cleaning chemical holding company, but as software continues to eat the world, your business may depend on a software program to guarantee the quality of the chemicals that you receive. But that doesn’t mean you’re a software company.
Scenario
The “production” code that we spoke of is the excellently written minitwit Flask sample application, owned by the scrappy startup Foobar Inc (FBI).
For the sake of this scenario, we will put it into “production” as simply as possible and handle issues as they come up, while growing and making their software process easier to manage. They will contact me to handle their requests as they come up and improve their existing systems.
Each article in the series will:
- begin with a scenario that mirrors a client request I’ve had
- translate that request into business and technical goals
- implement changes that support those goals.
Goals (in no particular order):
- Make minitwit easily deployable.
- Make minitwit easily upgradeable.
- Make minitwit easily testable.
- Make minitwit scale to various challenges.
- Scale minitwit in AWS.
- Employ best practices (such as 12 Factor) while accomplishing the above.
Disclaimer:
Although minitwit is a Python app, I do not claim to be a Python expert. My predilections lean towards shell, SQL, etc. Techniques and approaches that I will demonstrate can be applied across technology stacks. I have used these and similar techniques to help companies that build their software with a variety of software stacks.
This project will help me grow my Python knowledge while applying what I know about growing software. I do love teaching and have – SQL, shell, security, etc.