So we are trying to make progress in that direction - if managed cloud services were hardware, then we are building an operating system for developers to use that hardware with as little friction as possible.
458 karma · joined February 20, 2018
So we are trying to make progress in that direction - if managed cloud services were hardware, then we are building an operating system for developers to use that hardware with as little friction as possible.
The answer seems to be that people are starting with simple tools (beanstalk, heroku, GAE etc) but then quickly approaching their limits in terms of both features and cost - and move to "native" AWS / GCP / Azure. At this point they need to rebuild the infra from scratch, write all the IaC, etc. This is painful, slow and expensive. So it's either simplicity or extensibility, pick one.
We thought that someone must find a better way, it could just as well be us. The idea is to generate IaC in the background on top of a "real" cloud provider like AWS, making it seem to the user just as if they were using a PaaS. Until they want more - and at this point instead of moving to a different platform they can just extend TF however they like. No big one-off DevOps effort needed. Chances are that it can be done by the same person who built the backend, even if they never worked with AWS or Terraform before. Much smoother learning curve.
Also, many tech scaleups end up building "in-house herokus", often backed by Terraform. This was one of the motivations of us as founders, they had to do this more than once.
Then we launched a few follow-up products with more focused value propositions like UI (Lemon), or multi-cloud (Alicorn), or databases (Hippobase). We learned a lot from the early adopters (thank you!!). The biggest learning was that we were trying to solve too many problems at once, and that confused our users a great deal.
So we went back to the drawing board. We have radically simplified the UI, especially onboarding. We asked ourselves - what is the one thing our users care about most? And we started launching what we thought were features as separate products. Some of them flopped (remember Serverful?) - and so we killed the feature. Others succeeded, like one-click sample app setup (AWS Bootstrap) and most recently Terragen that automatically generates infrastructure-as-code.
And then we wondered: is there something in common with the products that were received warmly? Turns out, there is - speed. In hindsight it is obvious that speed matters a great deal. Because it is not uncommon to spend more time on setting up AWS infrastructure for your app than building the app itself.
Then we thought, what would the fastest developer experience with AWS infrastructure look like? Making each step as fast as possible seemed like a good start:
- the fastest way to get the code
- the fastest way to determine what infrastructure is needed
- the fastest way to provision that infrastructure on AWS
#1 can be solved by one-click Github repository connection, like in Vercel. It doesn’t get much faster than that
#3 can be solved by generating and running Terraform (this is what Terragen does)
#2 presents the biggest challenge. How do we know what kind of infrastructure is needed?
After a great deal of not making much progress we realised something: all the information is already in the code! Because if you show your app to a DevOps engineer they wouldn’t need to ask many questions, they would just see the code and instantly know whether it’s a front-end (then it would require an S3 bucket and a CDN) or a back-end or a lambda function. We can easily detect the language and the framework, Dockerfile, lambda handler, read package.json, things like that. Then we can feed it into the Terraform generator, then run terraform apply on our servers against user’s AWS account. This makes the entire flow completely seamless: connect your github repo → connect your AWS account → click “Deploy”. As simple as that.
And this is Flywheel. Give it a try!
We've come full circle with the present-day cloud providers like AWS. 15 years ago they started as simplification, but today they are boxes of 200+ specialised building blocks that are anything but trivial to put together. A human specialist has to be involved. But why? This complexity is completely artificial, its sole purpose is to keep their customers locked in. This must and will be solved with better tooling. That's what we are trying to make.
We haven't yet put much attention into pricing. As a matter of fact the paywall is broken atm (don't tell anyone about it!) so technically nothing stops you from having more than one service or resource or whatever :)
But we are often asked - why so many products that look so similar? After Digger we have also launched Lemon, Alicorn and most recently AWS Bootstrap to name a few. The answer is simple: we want every feature of Digger to be best-in-class. So we are making a product out of it and launch it and perfect it if people need it, or kill the feature if there is not enough demand.
Terraform generation is one of the most powerful features of the platform. Not only your AWS account is taken care of - you also get the underlying code that is fully customisable. So you are not limited by the UI and can literally build whatever you want as long as AWS supports it. It's easy with Terragen:
1. Connect your AWS account
2. Connect a GitHub repository for your infrastructure code
3. Terragen will push generated Terraform there
4. Then you can add more apps and services - and Terraform will get automatically updated!
5. And you can use the digger_overrides folder to add your own custom terraform
We believe that the only way to make a truly great platform is to listen to the users and ship things they need. Tell us what you think!
PS - we have also launched on ProductHunt today: https://www.producthunt.com/posts/terraform-generator-by-dig...
Then we noticed that our most excited users are moving from Heroku; after speaking with them we realised that it's a hard decision, almost a leap of faith - because moving is always hard.
So we've built a user experience tailored for Heroku migration - pick your backend, pick your frontend, database yes / no; then connect your AWS account and your infrastructure will get configured automatically. Then you can add your connect Github repositories to move your app seamlessly.
Tell us what you think!
On the one hand, there are nice simple tools like Heroku or Vercel. But you quickly outgrow them. On the other hand, there's AWS / Azure / GCP. Super powerful, you can build whatever you want; and free for startups thanks to generous free credits. But they are so complex (AWS particularly so) that it quickly becomes a time sink.
So we wanted to create a zero-ops experience on top of AWS. With AWS Bootstrap you can get the best of both worlds - quick setup + full power of AWS still accessible. Under the hood it uses Terraform that is fully customisable.
80% of infra projects use the same terraform to deploy. Cookies is an open source generator for terraform. It supports containers, webapps and functions. You can check it out on https://cookies.digger.dev