Developer tools and why can't we have nice things?
Developers build amazing things for businesses and consumers to use all the time. We work relentlessly to craft an unbelievably good User Experiences but when it comes to tools and products for developers to use... Then, well, those same rigorous standards no longer seem to apply... Clunky and over complicated becomes the new standard. It's a weird phenomenon...
I think it's partly because most of us don't have the time to spend building ourselves nice things and partly because that's just the way it's always been...
Or at least... That used to be the case.
We are witnessing the beginning of a movement. Developers are demanding (and receiving) better of the tools that they work with, they are becoming the key decision makers on tech in their respective businesses and their influence is continuing to grow.
For many, this isn't a new observation, they saw this coming from a mile away. Businesses like DigitalOcean, Keygen.sh, Stripe, SnipCart, Twilio all understood this from day one and with a focus on serving developers have grown tremendously.
They understand that maximising the productivity of developers integrating with their services is key. Smart developers are taking advantage of these new developer-first tools and services and reaping the productivity gains.
Just look at popular development frameworks like Rails and Laravel. Huge followings, major fans. Why? Because they value the time of their developers.
Smart developers are thirsty for tools that prioritise their productivity, so they can focus on building incredible apps faster than ever before. They know they deserve better. They are getting better and becoming more productive because of it. Join the movement or be left behind.
Somehow servers got left behind 😱
So if all this progress is being made on improving the tools that developers use, what's the excuse for servers or more specifically, hosting our web apps?
Most of us, whether we care to admit it or not, know what it's like stitching together a bunch of the DevOps stuff that we "must have because without it, our project isn't a real project..." to host our new web app, then slowly backing away from the house of cards so we can get back to our coding. Then something goes wrong with the server and before we know it, we're 5 tabs deep into how we can solve our problem in 10 different ways.
Only to do it all again on the next project.
What I don't get is: users can tap a button and install an app on their phone in a couple of seconds but if a developer wants to setup PHP and MySQL hosting then we can easily lose a few hours or more if you’re lucky enough to stumble upon something that requires searching... What if you want to do something a bit more complex, like autoscaling? Good luck. Get ready to get elbow keep in the UI/UX train wreck that is AWS.
Clarification: This post is about servers and how servers have been left behind while the rest of the developer facing market moves to simplify things. PaaS options such as Heroku, App Engine, Elastic Beanstalk are available and are great but since they offer no choice when it comes to server provider, they will not be covered in this post.
How servers should be 💡
What we realised was servers are
borked broken. That they can and should be so much simpler. That we should be spending less time on servers and more time developing things of value.
The reality is, when we value our time as developers correctly, losing a day or more on server problems that dozens of people have already battled just doesn't make sense.
I'd rather spend my time coding functionality that will actually be appriecated by users, not burning through hours or days setting up a server for MySQL and PHP hosting. After all, my Laravel project is no different than the other hundreds of thousands of other Laravel projects needing to find a home on the internet.
We knew that there had to be a better way... A way that understood the importance of simplicity, a way to save time and a way that put the developer first... Something that took all the entire development lifecycle and packaged it all seamlessly together to save us hours of fighting with over complicated tools and ad hoc scripts.
Freeing developers from server struggles 😍
Rather than just complain, we built Codemason and have focused on making deploying, managing and scaling apps as easy as we think it should be.
That means, no more wasting hours battling with servers, spending less time in the depths of Google trying to solve our server issues and the end of having to set up deployment pipelines and hosting for each project we work on.
Instead, we get to spend our time focusing on things that create value!
Setting up PHP hosting
Worrying about hosting apps gets in the way of actually building apps. With Codemason, it's easy to move your code from your local machine to any connected server. With a simple
git push, Codemason will build your code into an image that can be deployed anywhere!
Setting up a MySQL database
Setting up additional services like MySQL, PostgreSQL, MariaDB or Elasticsearch can easily take hours to setup if you're fortunate enough to stumble upon something that requires searching. With Codemason, simply choose the service you'd like to add to your app from the service catalog and click "Add to Application". Your chosen service will be up and running in minutes!
CI/CD and Build Pipelines
Setting up a CI/CD pipeline for your app is a pain. Doing it right is even more painful. It's a lot of cobbling different services together and hoping they play nicely. We have our own build process built into Codemason to cut out the tedious steps that get in the way of shipping code. Simply
git push and we’ll build it for you. Once it's built, Codemason automatically packages it up and pushes it to our private image registry, where it can be pulled onto any server and run.
Keeping it simple.
Simplicity is at the heart of everything we do. We believe in it. Developers already have enough problems to solve. Piecing together our own solution to deployment, CI/CD, ops, cloud, containers or whatever you want to call it is a waste of time when we could be focusing on our app.
There's already plenty of developer tools out there that just make things more complex, there's not a snowball's chance in hell we're going to be another on that list.
But what if you want to do something a bit more advanced, like clustering or autoscaling? By this point, whether you know it or not, you've usually booked yourself a one way ticket on the AWS express to eyebleed city. Before you know it you're waving goodbye to your developer colleagues and assuming your new role as defecto devops guy/gal... Usually...
Creating a server cluster
Creating a cluster of servers from different cloud providers to pool your resources and make your apps more resilient is an excellent idea but implementing it yourself is a terrible one. With Codemason, easily create a cluster of servers from multiple cloud providers by adding servers to an environment. We'll automatically take care of networking, orchestration and scheduling.
Autoscaling your apps
Making your apps autoscale will make sure you keep running at peak performance during unexpected traffic spikes and reduce running costs during quiet periods. Codemason Autoscale puts autoscaling just a click away for any app - no experts, no complicated setup - simply head to the Resources tab of your app and click “Enable Autoscale”. And for the first time ever, you can even autoscale on other cloud providers like DigitalOcean and Vultr!
How servers should be 🙌
There’s no sadder sight than a developer relegated to server duty...
Backups, scaling, security, monitoring, logging, containers etc. they're all important and they're all things you could do yourself if you had to but it's not your core business and they're certainly not your passion. It's not that we're lazy, we just have better things to do!
That's why we built Codemason!
Docker hosting should be easy, hosting laravel apps should be easy, clustering servers should be easy, autoscaling should be easy... And with Codemason, it is.
We want to get you back to what you love - building amazing products. To free yourself from begrudgingly being "the server guy" because you set things up initially.
We love working with developer led and oriented companies. It just works - they get us and we get them.
If you think Codemason might be a good fit, give us a try! It's free to get started and we'd love to hear what you're working on! you want to try us out, don't forget to use the coupon
BLOG-3-FREE to get 3 months free access!
It takes me even being fast like 2 hours to setup AWS, Codemason took 10 mins. My co-founder legit just started crying and said "its beautiful"
Tommi Sullivan, BonneSai
With Codemason, the configuration is minimal, and after you connect your own server, Codemason can have your app deployed in a matter of minutes without doing anything on the command line
Karl Hughes, Shiphp