CI/CD for outsourced software development
This time I’m back in the trenches after the high-flying in show business in the last post.
I’m still using film business as an example as I’m not allowed to talk about projects I’m doing as a employed consultant for different clients.
Introduction
As you may recall, the tool-chain for collaboration in film production is not scalable as we have a number of process bottlenecks.
One way of solving those issues would be to develop custom integrations and custom apps for our users.
As we all know, custom development takes time, is expensive and costly to maintain. So if we develop an CI/CD pipeline and a software architecture for microservices, would custom development be more feasible?
I have also been in the IT business so long that I know that you can’t give free hands to developers if your want things to work together. At least not for a very long time.
Solution concept
We made an example of a high-level design that used micro-services three years ago, and we could probably re-use parts of those thoughts.
Our strategy is that we will not run any application servers on-premise. Everything should be on cloud as we don’t have internal resources for support.
Our main Directory and some of the applications (Microsoft Office 365) are in Azure. The other shared applications are hosted on AWS by their respective suppliers.
We also use Postlab in Cloud as a repository for film edits, and this service is based on github.
Solution concept
So far, this is more of a green-field operation as we only use COTS solutions. For those with legacy code, it’s much more complex.
If we look at a full CI/CD cycle, we talk about Edit code, Build, Test and Deploy in production, and at the same time assure software quality.
We also need to have environments for development, test and production. In addition to this we need test data.
But we don’t want it to complicated or expensive, therefore open source solutions is a good alternative. It also makes it easier to be vendor agnostic.
As the software we develop will give us a competitive advantage, (why bother otherwise), we need to protect our source code. Something that have an impact on using open source.
We assume that if we use containers for both our source code and tools, will it be easier to maintain them and to replace them later on.
Having a UNIX-background, unless going serverless, I would suggest Virtual Linux servers, Eclipse, Docker, Github , SonarQube and Jenkins as a start for the tool-chain, but also we need to evaluate Microsoft options.
If needed, we could even do a PoC on a new Raspberry PI as a server and host our hello world examples on a private GitHub in the cloud.
Summary
By using a standard CI/CD flow for all new software development, our assumption is that we can reduce the cost of developing and maintaining bespoke solutions.
The other question is when manual processes will be to slow and/or to expensive compared to development of new functionality.