Languages ​​and DevOps: Web Development

Web development has changed a parcel ever since DevOps hit the scene. The languages ​​used have changed, where the languages ​​are used have changed, the likely primary hosting environment has changed – but DevOps has internalized these issues and kept plugging in.

We will approach this from two angles: the languages ​​you are likely to use and the DevOps offerings. It’s not a “Best Billion Web Development Languages ​​for 2021!” item; there are many and you are more than welcome to read them. It’s more about using these languages ​​in a DevOps environment, which has become the norm for web applications more than any other type of development.

We’ll start by observing that your web application will most likely have at least three parts: HTML, CSS, and JavaScript. It’s nothing new for those of you who do it daily, but we’re just setting the bar here. Other languages ​​can be used to generate or populate all of the above, but, in the end, these three languages ​​are sent to the browser and will therefore be part of the equation.

Backends add incredible complexity to this equation. I made Ruby backends that did most of their work in C++ and Java; I created pure Java backends that generate the three required components; I’ve made Node backends that had very little actual HTML/JavaScript source code, but generated a ton of both – it’s all there. And hosting environments for backends have changed. When DevOps started, most hosts were virtual machines (VMs) or hardware, whereas now we mostly run cloud instances or containers. These backends must also be configured and managed, along with any dependencies required by your application. When you think about it, we really created quite a messy environment.

But DevOps rose to that challenge.

I have long been a fan of Atlassian and find it to be a great tool for managing the agile side of DevOps. Add Ansible, for the operations side, and you’ve got a good thing going. I recently researched GitLab, and GitOps – via GitLab – offers a compelling alternative to Atlassian’s offerings; especially since Atlassian made some rather unpopular changes just as I was finishing my look at GitLab.

The key is that Git contains all the code. By adding the scripts to run these increasingly complex backends and securing the entire infrastructure, you get an “app in a (virtual) box”. Whichever DevOps toolchain you use, pairing it up is easy, as it already works well with Git and related tools.

Developers tend to care more about the development side of the equation (imagine that!), so let’s talk about what’s going on there.

PHP hangs on tight, with a mass of applications and (perhaps more importantly) libraries to keep it going. PHP is one of the original “generating an HTML page” languages ​​and is slowly being moved on. It’s not a bad choice for your web projects, but it’s not the only – or at this point, the most popular – choice.

Java is still quite popular, and while it offers good support for web development, it’s… heavy? Is that the word? It is Something for this type of development, and has ceded ground to other languages ​​when it comes to pure-play web development. Skills are transferable to other targets, so it’s a good language for wide use. Like other serious players in this space, there are web-centric libraries and frameworks that keep Java buzzing. I’m a Spring fan, but the options are quite wide.

JavaScript wins this race today. It is used on both client and server, there is a tonne of available developers and DevOps people who can be productive in JavaScript from day one, and it’s increasingly being used in other contexts – meaning the skills could be transferred to other projects. Like any language, there are trade-offs, but the portability aspect makes trade-offs of things that many are willing to work to overcome. Libraries and frameworks abound to make JS development faster and more dynamic. Personally, I like Node for server-side development and Angular for clients who need more than just HTML/CSS offerings (probably because it’s the one I’ve used the most).

Python is definitely a contender in this space, as it is in most others today. With Django (or whatever framework you choose), it works well for web development, and its popularity has given it a host of supporting libraries to get things done. Developers are easy to find and skills are widely applicable, as Python is used in most areas of development and operations at this stage.

Windows aficionados still use C#, and it has good hooks in Microsoft DevOps tools, so any Microsoft store should include it in the ratings. I did C# on Azure for Web Apps, and for me it was…different, but not broken. In a Microsoft store, C# will be familiar, and by this point most developers are familiar with web clients, so merging the two is just a tiny learning curve, but not a major one.

Ruby seems to have given way to Python. You’re unlikely to find a steady stream of ruby ​​developers to fill these positions, but it’s a very intuitive language in which you can train Java developers, and even Python, if needed. Ruby is well supported for web development; indeed, it seems more natural to use Ruby for web work than command line tools (at least to me, YMMV). There are web frameworks to make Ruby more intuitive in web development, and jRuby offers deep integration with Java to use existing Java classes.

All in all, JavaScript should be the perfect candidate for a new project today, but any of these tools will fit the bill. They are all well supported and DevOps tools start with integration to most of these languages. Do what’s best for your environment and keep it moving.

James S. Joseph