Multichain Ventures hosted blockchain-based solutions for merchants powered by the Waves Blockchain.
About
Multichain Ventures was a blockchain company that worked on developing an integrated ecosystem for merchant software products powered by blockchain technology.
Its main product was The Tokes Platform, a blockchain-powered point-of-sale (PoS) system. While initially only transacting in its own crypto token ($TOKES), it was eventually expanded to transact in other coins like $BTC and $LTC (Litecoin) and meant to work in conjunction with its mobile wallet. In addition to products surrounding the PoS, it also provided infrastructure and payment solutions for merchants.
Project Objective:
Due to the need to host multiple applications with scalable potential (point-of-sales system, explorer, APIs, blockchain nodes), we were tasked with helping with building infrastructure architecture capable of:
- Easily managing not only the production versions of our applications but also support staging and development environments with their own configurations
- Automatically configure associated networking for the application
- Capable of backing entire cluster resources
- Migrate our hosting from AWS to GCP due to incentives provided by the latter
Conceptualization:
- Review of existing CI/CD pipeline
- Study of K8s (Kubernetes) and its standards
- Research existing tools for cluster management and migration
Technologies Used:
- GCP
- Docker
- K8s (Kubernetes)
- Rancher
- GitHub Actions
- Velero
Features:
- Easy application deployments and re-deployments
- Automated image building
- Flexible environment configuration
- Scalable
- Automatic networking
- K8s cluster backups
Functions:
- GitHub Actions scripts
- Image building scripts
Project Challenges:
- We knew from the very beginning that Kubernetes was the proper technology to deploy our applications and make them scalable. It is, however, a very complex tool with a steep learning curve and it needed deployments and redeployments to be performed by non-infrastructure engineers when required which was not an easy thing to achieve using pure K8s.
- While Rancher contains backup options, we found them at the time too manual and deemed it necessary to make periodic backups of our clusters to guarantee restoration in case of a catastrophic failure.
Solutions we developed:
- To allow for easy management, we deployed a Rancher server in our Google Cloud Platform infrastructure. Rancher is an open-source platform designed for the easy deployment and management of Kubernetes clusters. Through Rancher, we were able to deploy configuration namespaces that allowed us to deploy the same images but with different environments and resources, and allow less infra-knowledgeable engineers to deploy applications in a timely manner through an intuitive user interface. Its out-of-the-box networking features, domains, and subdomains could be tied to the deployments with the same level of simplicity.
- The Rancher cluster was tied to the GitHub account of the organization so only their engineers would have access to it.
- A CI/CD pipeline was set up to produce Docker images configurable entirely by environmental variables and pushed to Docker Hub. These images then were used for rancher deployments. While the deployment process was made to be manual, to control when we wanted production and staging apps updated, we conceptualized automation of the process for dev branches.
- As a more reliable backup solution, we used Velero as our backup and disaster recovery solution for the project. Through it, we were able to schedule periodic backups of our entire K8s infrastructure. We proved so by conducting migration exercises moving clusters between different GCP projects and verifying all apps in them were usable after the fact.