How Mapify uses the Google Cloud Platform

App development

Monitoring and analytics

June 9, 2022

Mário Sobral

How Mapify uses the Google Cloud Platform

Expectations are really high for digital products. In today's world, all SaaS platforms are expected to have great performance, to be automatically scalable and extremely resilient with little to no downtime. All this while providing a secure environment for its users and their data. It is expected that such platforms can handle large volumes of data and process that data as fast as possible, which may come from anywhere in the world and immediately be delivered to anywhere in the world.

These expectations require scalable computational power, world-class network capabilities and a solid and secure infrastructure which can handle everything that is thrown at it. Mapify has found that in Google Cloud Platform.

Networking

Mapify is natively built on top of well-established standards and it is hosted on GCP. We leverage GCP's high availability infrastructure and features to provide users with a solid and reliable platform. By using a large cloud provider such as Google Cloud, Mapify benefits from its robust and highly available architecture based on 29 regions and 88 availability zones.

Image from https://cloud.google.com/about/locations#network

Processing Power

Mapify's application components are fully containerized using Docker containers and deployed to Kubernetes clusters using Google Kubernetes Engine, assuring automatic scalability and services resilience. Some processing and services are also hosted on Cloud Run and Cloud Functions, which also scale automatically but significantly reduce infrastructure management overhead.

Image from https://cloud.google.com/run

Data

Mapify's main data repositories are mostly based on Cloud SQL relational database services, providing high availability and automated backups. For some specific tasks, we use Redis in-memory data store for its speed and low latency, allowing for high throughput scenarios. Playing a part in our needs for data warehousing is the highly scalable and serverless BigQuery, which also provides the ability to create and run ML models using standard SQL queries.

Storage

Storage of static files such as scripts, images and icons is delegated to Google Cloud Storage, which allows us to focus processing power on dynamic data and business rules and not worry about serving and scaling static file distribution.

When file operations require higher performance and even quicker access, we resort to storing files in Filestore, which provides low latency storage operations and offers instantaneous backups and snapshots to help us protect your data easily.

Security

One of our priorities is security, so we extensively use IAM to create granular access control policies to resources based on attributes like device security status, IP address, resource type, and date/time. These least privilege policies help ensure that the appropriate security controls are in place for cloud resources.

Image from https://cloud.google.com/security

We define and configure all our cloud infrastructure resources and settings using Terraform's Google Cloud Platform Provider scripts, kept in a secure and audited source control repository. This allows us to keep track of any and all changes to the infrastructure and permissions, and to be able to quickly and reliably deploy a complete working environment for testing or disaster recovery procedures.

CI/CD

It's great to have a scalable and secure infrastructure, but we still need to deploy our code to run on it, so we use a CI/CD pipeline approach. We use Bitbucket for hosting our source code (but mirrored in Google Source  Repositories)  and JIRA to manage our backlog and tasks. Developers associate their code commits to the task or bug they are working on (usually even create a branch for the task).

Once they have finished working on a task, they create a pull request which needs to be peer-reviewed and approved by at least another team member before it can be merged into a staging environment. Merging a pull request will trigger a build and deployment pipeline configured in Cloud Build, which generates the containers images and hosts them on GCP's Container Registry, while deploying them to their configured target environment (such as GKE or Cloud Run for example).

This approach makes the latest changes readily available in the target environment running on Google Cloud, but also an easy way to revert back to a previous state if needed.

Google Cloud Platform has much more to offer! Our team is looking forward to exploring all the amazing services which will make our product better and our customers happier, while also making things easier for our development team. Sounds like a win-win situation 🤝

Does this sound exciting to you too? Don't forget you can request a Mapify trial, or schedule a talk with us to know more about how Mapify can help your business.