This is what I said to myself few month ago, when I submitted a talk to Gr8Conf Europe 2014 (a developer-oriented conference on the Groovy & Grails ecosystem). Despite my rusty spoken english and terrible french accent, I wanted to share our experience at AgoraPulse.
Last year, we spent some time experimenting with DevOps and building a fully automated continuous delivery pipeline. Our objective was to find the ability to push our ideas, features and bug fixes to our customers quickly and reduce the feedback loop— the famous Build-Measure-Learn principle from Eric Ries’ Lean Startup.
We are a small technical team of 4 engineers delivering a product to more than 1 000 customers in 100 countries, so we really need to focus on building our applications instead of managing infrastructure and deployments.
That’s why we love PaaS (Platform as a Service) and SaaS (Software as a Service) models. They allow us to focus on our primary mission : delivering value to our customers.
In fact, I came to Gr8Conf twice seeking for answers and feedback in this area, without much success.
As Luke Daley rightly said on Twitter 2 weeks ago:
Having been an entrepreneur and humble “software builder” since 2000, it was a good opportunity for me to look back at our history of product craftsmanship.
From Waterfall development to Agile movement, up to Cloud, Lean and DevOps culture, tools and methodologies for building software have dramatically changed during the last 15 years!
This is especially true for small startups: Agile Engineering and DevOps are a must-have to build your “Minimum Viable Product”, validate your business model and find the holy grail aka “Product Market Fit”.
There’s just a tremendous amount of craftsmanship in between a great idea and a great product. And as you evolve that great idea, it changes and grows. It never comes out like it starts because you learn a lot more as you get into the subtleties of it.
– Steve Jobs (1995)
In the 90's, a frozen business plan (and functional specs) was initially defined and followed to the letter by business, developers, QAs and operations team with some nice visual Gantt charts and unachievable deadlines…
Do you remembers 2000's bubble startups hitting a wall at full speed with huge investment in sales, hardware and unvalidated business model?
With waterfall development, frozen business plan and silos between teams, getting an idea delivered to customers took months or even years.
Then, Agile movement brought together programmers, testers, and business representatives in order to iteratively build software. Things got much better.
But, the operations team in charge of production was still isolated in a single silo, with different tools and methodology.
Software could be pushed frequently to test/staging environments, but getting it push to production was still very painful!
The conflict between Ops and Devs resulted from divergent goals and incentives and generated blame gaming and finger pointing.
Business & Development teams strive for change, whereas operations teams strive for stability and reliability.
– Michael Hüttermann
Moreover, for small startups without a proper Ops team, upfront hardware investment was still pretty heavy, downtime probability was very stressful: database backups woes, hard drive or power failures in the middle of the night. A single point of failure could have dramatic consequences on your uptime.
In early 2000, I remember when we had to order our servers from IBM by phone and wait for 2 weeks to get them delivered…
Finally, DevOps extended the continuous development goals of the Agile movement to continuous integration and release.
The last Ops silo was removed, developers and operations folk work close and together now to benefit the overall business with the One-team approach.
Nowadays, with a fully automated delivery pipeline and proper monitoring, the Build-Measure-Learn feedback loop can be reduced to several days or even hours, if not real time.
There are hundreds of SaaS services (e.g. Segment) for business teams to implement them self business monitoring, KPI metrics, marketing automation, A/B testing, etc.
Developers can quickly build products with full-stack frameworks (e.g. Grails). They can push to deploy with single Git commits (e.g. Travis CI) and are directly in charge of their code in production (e.g. NewRelic)
Developers must own application-layer code wherever it lives, while ops must own the infrastructure wherever that is.
– Donnie Berkholz, analyst at RedMonk
Cloud Providers and their Platform as a Service offerings (e.g. AWS Elastic Beanstalk) are now very mature: a real heaven for startups and developers with no dedicated Ops team (some people refer this as NoOps…). We can stop/start dozen of virtual instances from a browser, upsize/downsize at will.
Startups with a team of 25 people can now handle millions of customers!
Being a developer AND an entrepreneur is incredible nowadays, we’ve got so much super power at our fingertips!
It’s just your keyboard, the cloud and potentially millions of users.
To demonstrate all of that during my Gr8Conf talk, I did quick live demo and built a continuous delivery pipeline in less than 40 minutes.
You can check my slides here:
It was really cool to meet nice folks from the Groovy & Grails community and put a face and a voice to Twitter accounts. I hope people enjoyed my talk, even if it was less code-oriented than the others.
It looks like at least one person enjoyed it!
I’m now back from Copenhagen. It’s time to deliver new features to our customers with AgoraPulse Twitter integration;).
If you’d like to share any idea about this subject don’t hesitate: drop me a line @benorama !
Note: we’re hiring! Are you kick-ass fullstack or front-end dev that want to work on Angular 2? You also master Java or Groovy? You must contact me to join our dream team in Paris!
Note: Lego Movie images on this article were found here. If there is any copyright issue, please let me know.
UPDATE (2015–09–11) — Code examples in this article/slides were based on Grails 2. I just published a new article on a build pipeline based on Grails 3: How to deploy a Grails 3 app to AWS Beanstalk and CloudFront CDN.
UPDATE (2016–01–05) — Last month, I gave another talk on similar subject at SkillsMatter GGX 2015: A startup journey on AWS: from bare metal monolith to serverless microservices.
If you liked this article, please hit the ❤ button to recommend it. This will make it easier for other Medium users to discover this.