The client is a tech company that specializes in a cloud-based platform that focuses on managing all android devices seamlessly and securely via APIs or console. The software platform allows the organizations to remotely scale, manage, secure, update mission-critical edge devices and custom apps using proven DevOps practices that are considered standard in web app development.
Project Objective: Cloud Platform Setup
Business Value : Niveus enabled the client to reduce operational effort for maintenance and also helped in increasing the build release velocity with a single platform across customers in GCP.
The client envisioned a centralized cloud platform that would cater to their globally distributed customers. With the centralized platform, the client receives custom build requests from the customers at regular intervals and caters to their build needs asynchronously. Niveus designed this centralized platform in such a way that the client can help their customers keep the infrastructure footprint lean and nimble.
We developed a cloud platform setup using Build OS architecture in GCP. We have:
- Migrated the existing Jenkins infrastructure to GCP along with the API platform hosted in a Kubernetes cluster
- Setup the GKE infrastructure for OTA Services
- Setup a VPN setup for “Gerrit Servers” for git-based Code Repository
- The Build requested by the user in the SCAPI application are routed to GCP Global Load Balancer
- Cloud Armor implemented as the web application Firewall for DDoS protection
- If the user requests for building a new custom OS, then the request is redirected to the Jenkins server hosted in the GCE.
- The custom OS built was stored in the Google Cloud Storage bucket and the associated metadata was stored in PostgreSQL configured in Cloud SQL
- On successful completion on developing the platform and storing the image in GCS, the metadata associated with the specific build has been pushed as a new transaction to the Cloud SQL
- If the incoming request corresponds to retrieving metadata associated with the previous builds, the same would be fetched from the PostgreSQL database and served to the user
- The images/build stored in GCS was also served based on the user request, which would be redirected by the GKE to GCS and served back to the user