In several projects related to apply some devops flows or port the existing application to docker, a lot of developers (usually c#), consultants and some managers thinks that devops and docker are another techniques or technologies from some part of the multiverse.
They don’t conceive that hours of steps performed with UI desktop apps (Visual Studio for c#) could be replaced or how a wordpress could be deployed in another space different of godaddy, hostgator, bluehost, etc
So in this post I will try to explain how devops and docker are just a synonym of shell and linux.
Problems inherited by Microsoft Windows & C#
The major problem is that until very recently, technologies related to Microsoft (C#) only Visual Studio was the only choice to build the applications.
The deployment was the same case. A human had to open the IIS server and deploy the application , which a human compiled in the Visual Studio
So, unless you are a Unity, Windows form or C# developer, you should not use Microsoft Windows to develop software less for deployments.
If you like modern technologies, collaboration, be part of a community and in general: The Open source World …
You should use Linux or at least Mac, but don’t Windows to develop software.
Shell compatibility
This is the first challenge. If your language, technology or framework don’t provide or allow shell commands, your devops implementation has 0.0001% chance of success.
In all of these years, only with one language and one operative system I had problems related to devops automation…
I tried with msbuild without success.
In the rest of languages, shell commands exist from its birth and works very well. Platform for easy deployments like Heroku are a proof that only c# is complicated to automations with shell
g++ ./foo/bar.cpp -o ./foo/bar
javac Hello.java
java Hello.class
mvn clean package
node server.js
python app.py
Until the legacy php (wordpress, drupal) with its apache, work fine in the shell.
So, if your language has no shell commands, forgot the automation. Maybe a kind of bot running in a windows server , opening the Visual Studio could be a solution
Linux compatibility
Could you imagine infrastructures like whatssap, netflix, uber, etc with IIS servers & Windows server?
No more images or explanation here. It’s a dictatorship but a good one.
Linux is the only option for legacy, modern and future applications.
There is no magic
So, if your stack has shell commands to build and start. And also is compatible with Linux, you could automate the devops with :
- a simple bash script
- advanced platforms like Jenkins.
- any cloud service provided by google, amazon and azure, or third parties like Bamboo, Travis, Buddyworks, etc
Docker
If you understand that a devops automation is possible if shell and linux exist, you could port it to docker.
So before to think the word “Docker”, try to build and start your app with pure shell and linux. If you achieve that, move to docker will be almost like copy & paste of your bash script with silent modifications
Lecture and image References
- https://fractalenlightenment.com/34538/life/what-is-fear-really-trying-to-tell-us
- https://stackoverflow.com/questions/75422046/flutter-jenkins-flutter-not-found-issue/75428447#75428447
- https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/javier-perez1/2021/03/30/the-growing-ecosystem-of-open-source-software-for
- https://docs.revenera.com/installshield22helplib/helplibrary/MSBuild_CmdLine.htm
- https://news.softpedia.com/news/Google-Linux-Rocks-62279.shtml
Conclusion
Before to think in Devops, research if your stack has shell commands and is compatible with Linux. If yes, you will be happy. If not, there are a lot of other great jobs :)
Until the next,
JRichardsz