Ok, this is just my opinion, and if you are a junior developer you do not need to know how to put anything in production, but it is your responsibility to learn before you get promoted to anything else than Junior.
And I’m not talking just about Ruby developers here, any developer that is not a Junior anymore, need to know how to put their apps in production, because you’ll not always work in a big company that has people working just with infrastructure.
And Even if you are working on one of these big companies, you need to know how to put your app in production, and what resources it needs to tell the infrastructure people what your app needs.
But I work with Mobile
Nothing is perfect, and your world is worse than most, because your app will probably need a backend, and if you wrote the backend, you need to know how to deploy it.
If you are using a service (like Firebase) as a backend, you need to know how to configure it for development and for production, how to mock it for testing, …
You’ll need to know how to put your app in each appstore, what are each app store requirements, what makes an app not to be approved, how to deploy new versions to the appstore, and deppending on what language you write your mobile app, you might need to know more than one appstore, more than one way to compile your app for each platform, …
So you probably need to learn more than any web developer.
You work with Ruby?
Ok, you work with Ruby, I like Ruby (you probably guessed it from the other posts in this blog 🙂 )
But to put your app in production, you’ll need to study at least a little of these:
This list is not exhaustive nor exclusive, but it is a good start, and we do not have a perfect solution, so you’ll probably need to learn more than one to know what is the best solution for each situation, of course, knowing well at least one way to put your app in production is better than none 😀
You Work with Python?
Python is also really cool, and it also has more than one web app framework, you can learn one more more, but you still need to put the app in production, and I know less about it than I know about ruby deployment, so the list here is probably a lot less broad than the previous list:
You work with Java?
I have also worked a long time with Java, and it also has a load of deployment options, you also need to know how to compile and package your app, things that the previous two didn’t had to do, you need to know if you will be deploying a WAR, and EAR, …
And you need to know how to configure at least one Java app server, and how to interface it with Apache or Nginx (forgive me if the list is outdated, but I think this is still a good start point).
You work with .NET?
.NET development was not my strong point, but I also did a little, and you might start working with the VS embedded server, but you need to know how to deploy your app at lest to a real IIS. You have huge bonus if you know how to deploy it to another server using mono.
I know the list is smaller, but there are lots of details, and you have paid huge money for the apparent simplicity 😛
Of course there are many other languages, and you can start with Apache and Nginx that are almost ubiquitous in any non windows deployment.
Most languages have modules for one of these two servers, and they have loads of details in the configuration that can help of ruin your apps performance.
And never forget that not all problems are infrastructure problems, you might need to optimize your application to use less memory, to free memory that it has allocated, you might need to convince your interpreter or server to release that memory back to the OS when possible.
Putting apps in production is not an easy task, but you need to know at least the basics of it, and if you are not a Junior developer anymore, you need to know at least the basics of it, telling someone that you work with something for 10 years and do now know how to put your app in production looks really bad, at least in my eyes.
You have other options too, like using Docker, but using docker do not cover the entire process, it just encapsulates it for your client, you still need to configure your app to run perfectly inside the docker container, so your client can deploy that container to their cluster and be happy.
If you want to learn a little about Docker, I have some posts in the blog about using it with Ruby applications.
Of course, you can always call me crazy and tell me I’m too demanding, and not everyone needs to know about OPS, in that case we’ll agree to disagree 😛