Decisions 3
Mickael Alliel
DevOps Engineer at Rookout
Jenkins.. the most controversial topic of CI/CD.
After we made the decision to split our monolith to multiple micro-services over 3 languages and a heap of technology, we needed a way to support CI/CD for everything.
Jenkins allowed us to create generic and elastic pipelines very easily, supporting everything from Versioning, Docker builds, Tests, Preparing helm charts, Deploying to any environment - And for all of that, all that the developer has to do is add a few lines to his Jenkinsfile:
basicPipeline {
PROFILE = "MicroService"
COMPONENT = "backend"
}
Of course we also use Jenkins for all our CronJobs, regression tests and various helpful mundane tasks such as getting a Windows environment on GCP running with a pre-defined image in a matter a click and two minutes.
Also, did you ever wait way too long for other jobs to finish before your branch could be built and tested? Well using Jenkins on Kubernetes and pre-emtibles GCP nodes, we can technically support to run just as many concurrent builds as we need to. I won't say the work behind this gigantic ci/cd pipeline was trivial, but once we understood all the tricks - it's well worth it.
Mickael Alliel
DevOps Engineer at Rookout
At the start of Rookout, we used to have a giant Python monolith and it started being hard to maintain - we realized that using Kubernetes, it would be easy enough to have multiple micro-services each responsible for their own tasks.
After almost a year of micro-services, we are slowly slimming it down to a Golang backend with a NodeJS GraphQL facade for easier frontend development.
NodeJS has the most popular and better options for GraphQL, and it is for a reason.
Between having protobuf schemas between our services, a GraphQL schema to manage our queries, and a very durable backend in Golang, we are able to do anything we want and handle large scale very easily.
Mickael Alliel
DevOps Engineer at Rookout
In addition to being a lot cheaper, Google Cloud Pub/Sub allowed us to not worry about maintaining any more infrastructure that needed.
We moved from a self-hosted RabbitMQ over to CloudAMQP and decided that since we use GCP anyway, why not try their managed PubSub?
It is one of the better decisions that we made, and we can just focus about building more important stuff!