DevOps and Cloud Native to enable Remote-only Software Development in times of COVID-19

Mathieu Devos
Polar Squad
Published in
8 min readMar 19, 2020

--

While stores are running low on supplies and people decide to hoard kilograms of rice, companies are realizing that this pandemic will cause quite a few hiccups. Especially in the IT departments, where suddenly Developers can no longer come in to work, and the system admins are quarantined because of their winter holidays.

Except… Some companies seem to be handling this situation a lot better than others. More specifically, IT companies which have embraced the ways of DevOps and moved towards a Cloud Native approach.

In this story, I look at how to run IT Software Development in a fully-remote world. Embracing DevOps methodology and increasing your resilience by rising on the Cloud Native ladder.

Who are we

Polar Squad is a DevOps Consultancy house originating from Helsinki, Finland. We currently have branch offices in Tampere, Finland, and Berlin, Germany. We are a 40+ headstrong firm that assists customers with their DevOps related issues, be it lift’n’shift, teaching a customer’s development team to embrace CI/CD pipelines, or doing complex K8s deployments.

In short:

The best* DevOps Company

*According to us

COVID-19

Time of writing: 19.03.2020 (important due to the rapidly changing situation).
So in Finland, Europe, where I’m writing this from, the situation on the virus has evolved as such:

  • It’s everywhere, some placer are behind the curve, some ahead
  • It’s nobody’s fault, it’s inevitable
  • Precautions help, sensibility helps, social distancing helps.
    Use your brains!
Personal Space is a big thing in Finland
  • Everybody is trying to figure out “Remote work only
  • Panic does not help, hoarding resources does not help, dressing up in trashbags does very little, except look silly

DevOps

So, your country / region / firm / yourself has done the sensible thing, and decided to move to working from home. Great! You’re doing your part in flattening the curve.

So you’re home, but you still need to work. How to approach this sensibly?

Enter: DevOps and Cloud Native Approaches

First, we’ll take a look at the DevOps approach before diving deeper into the Cloud Native approaches further down.

TEAMWORK
Since you no longer can rely on walking over to your neighbor’s desk, you’ll have to do all your communication with other communication tools right now. This should lead to more thoroughly thought-out statements and documentation.

Furthermore, if your team had the logic of just explaining everything in real life, you will now learn the value of adequately documenting your development.

GIT COMMIT
Badly written messages end up ruining everything, provide no information. Furthermore refusal to squash multiple changes into a single commit is like littering in real life. Failing at these, and you might end up with a git log like this:

Git log from hell

If you’re looking at neatly written git commit messages, I highly recommend this: https://chris.beams.io/posts/git-commit/ — It’s my go-to recommendation for git commits.

Alright, so first issue fixed: the team no longer has to explain every change in the codebase, git log will explain it for you!

On to the second step, depending on how this is executed, this might even automate jobs away (sorry manual testers — your time is up).

CI PIPELINE
Let’s test the code you just wrote from the comfort of your sofa.
If the first thing you do is spin up a container, run your new code and start manually testing things, you might be doing it wrong.

Let’s automate this whole thing. Make sure that there’s at least a Continuous Integration (CI) pipeline in place, this can be written by DevOps Engineers, SRE’s, Developers with a sense of DevOps, QA team, whoever!
The CI pipeline will take that code, spin up a container and run all the needed tests. These tests are a near-instant feedback system, they should run in a sensible time.

Furthermore, the CI pipeline should test for code conformity: is the linter happy? Is the git commit message formatted correctly? Is the author using the company’s email address? Etc. — you get the gist.

Ideally this kind of a pipeline runs in ~1 minute and provides the results back to the user(s). Most of the pipelines you’ll find on the web have great integration to your git repository tool of choice (Github, Gitlab, Bitbucket, …).

Now you don’t need to worry other people’s code, the CI pipeline will take care of this for you! Another job automated away, nobody to blame but yourself if your code does not pass the tests. Obviously you want to write proper tests, but that’s a topic for another pandemic.

CD PIPELINE
Your code made it through the CI pipeline, your teammates are happy and you got the needed approvals to merge your code.
Hit that Merge button (or rebase)!

Job done, Ops problem to get this in production somehow =].

Deploying code is not a Developer’s issue — right?

Well, this will cause quite some friction with your Ops team, why not embrace the DevOps methodology?
Continuing from our CI pipeline, create an amendment: Continuous Deployment (CD) pipeline.

This one will take care that the code you just merged into master makes it safely into production. It’ll wrap up your code, neatly bundle it, spawn a new container and deploy it.

Or if you’re working with GitOps — your operator (running in k8s) will observe the changes made to your git and apply them for you.

Looping back to development

So your code made it safely into production, and SysAdmins can take care of it from there.

If you want to go a few steps further and keep automatic, you can simplify your admins jobs by setting up adequate measurements & metric. After all, you know best what resources your code consumes.

This leads into fun pathways of Autoscaling, Serverless, NoOps, and much more fun buzzwords.

Once your system is operational and you have been observing it, you go ahead and plan the next steps. Future feature development, bugfixes, more automation, etc.

Finally, with the newly minted plans, you go back to development! Et voila! You just completed your first loop on the DevOps infinity-loop.

Cloud Native

So, the basics are done, you have introduced the ways of DevOps into your project, enabling your team to do remote work in a sensible way.

Not only will this enable you to keep working in these weird times, but it’ll help you in the long run as well. When the chaos settles down and we can go back to our daily standups.

But, what if we told you there’s more to be done. We often think that everything we do ourselves, we do best, while that may be true for some aspects of development, in the world of Software Development, you can’t beat the giants. Neither should you!

Instead, Cloud Native methodologies look to use the giants to stand on their shoulders and use them to augment your platform to the next level.

Cloud Native approach (Img src: https://pivotal.io/cloud-native)

Cloud Services
Are you sure you want to maintain the scaling of your database? Why not move the whole database to a managed service (AWS, GCP, or Azure) and let them worry about the sharding, scaling, backups, rollbacks, …

You’re a software developer, you just want to write the database queries, you don’t actually want to maintain a database yourself.

Running a local Jenkins machine under your desk at the office, which requires a weekly beating so it’ll do its job? Why not move that automation to cloud native approaches? Github Actions, Gitlab CI, Bitbucket pipelines, AWS CodeDeploy, GCP Cloud Build, etc.

Now you don’t need to risk infection just to visit the office to kick that Jenkins slave!

Measurements, logging, auditing
You got your code to run in production, in the cloud, awesome. However, how do you know when you need to scale up or down your services? Enter the famous quote:

You can’t manage what you can’t measure.

Tie these measurements and logs with the previous solutions, use some cloud managed log services, enable sensible alerts on them.
Your system admins will thank you later.
This time, the system lets them know when it’s failing, not an angry end-customer.

Want to track down a bug that happens only around midnight? Sure, stay up, we’re in lockdown anyway. Or… fetch the logs from that time and analyze them, much simpler, and can be done during sensible hours.

Identity and Access Management (IAM)
With all the above in place, your company might have multiple projects, throwing all of those together in a single cloud account could work in the short term, but your financial department will start to hate you, fast.

Sensible IAM enables only the right set of users access to the selected resources.

Furthermore, the separation into different cloud accounts means simpler management of bills for your financial department.

But most of all, this increases the security of the whole system. Now that you can’t physically check up on the people into your office anymore, access management to your online resources becomes exponentially more important.

Conclusion

The human toll of the virus will be a hefty one, that’s already long established.

The cost of doing software development during this pandemic can still be reduced and/or prevented.

Better even, embracing DevOps and Cloud Native will make your software & IT more resilient in the future.

In case your firm needs any help with any of the above mentioned, if you need help setting up CI/CD pipelines, shifting your workloads to the cloud, using cloud services, want to get hold of Kubernetes experts, or simply learn DevOps methodologies, we’re here to help.
Contact us: https://polarsquad.com/contact — we’ll get in touch with you as soon as possible.

Good luck out there. And remember, share the article, not the virus!

Mandatory DevOps success infinity-loop

About the author

My name is Mathieu Devos, I’m a DevOps consultant working for Polar Squad in Tampere, Finland.

Originally from Belgium, with a strong affection for hype-driven development and automating as much as possible. Read: I’m lazy and hate repetitive work.

I’ve been in the IT development business for ~4 years, I am currently doing my PhD in the Computer Networking department of Tampere University.

Some technologies & technologies that interest me: Cloud Native Architecture, Kubernetes, AWS, GCP, Event Driven Design, Event Sourcing, Golang, Flutter, …

--

--

Mathieu Devos
Polar Squad

DevOps Paladin at Polar Squad. Located in Tampere, Finland. Hype-driven Development preferred!