Skip to main content

Building for scalability and rapid growth

Project Details:

  • Client: CleanBands
  • Industry: Food Service
  • Solutions: Continuous Delivery, Azure, Infrastructure as Code

CleanBands is a startup offering an industry-changing food service product that is designed to increase safety, cleanliness, and consumers’ confidence in their dining experience. The company aims to achieve these goals by providing restaurants with hygiene metrics visibility, based on data that is collected from wrist band devices worn by their employees.

The Challenge

Assuming the position of a pre-seed startup, The CleanBands team had to be strategic with their budget. They needed to be able to quickly provision the product, as well as ensuring scalability was factored into the design/build process. It was paramount to provide a secure product, without the risk of data leaking, in order to maintain the trust of its current and prospective customers and investors.

Three women sitting at table in restaurant being served beer flight sampler by server

Our Solution

Through the use of Infrastructure as Code (IaC) and Continuous Delivery (CD) pipelines, Torq was able to define all elements of the CleanBands hardware and dashboard platform in Azure, as a maintainable definition template. This template allowed new instances with fully independent databases and servers to be created for each customer, completely eliminating the risk of data access between customers. It also allowed cloud architecture to be updated and automatically propagated between separate instances.

This solution, although esoteric in nature, allowed CleanBands to rapidly scale without the need to spend considerable amounts of time optimizing a single database. As a result, the CD pipelines ensure that code deployments to all instances are seamless and error-free.

This is achieved by grouping isolated environments in Azure resource groups, which are then targeted for parallel deployments for each feature update. The following lines of code summarize how new environments are created:

jobs: 
  build-and-deploy: 
    runs-on: ubuntu-latest 

      - run: | 
          az group create -n ${{  github.event.inputs.resourceGroupName }} -l ${{  github.event.inputs.resourceGroupRegion }} 
          az deployment group create -g ${{  github.event.inputs.resourceGroupName }} --template-file ./PHCloudTemplate/azuredeploy.bicep

And the following describes how environments receive updates:

jobs: 
  cleanbands-webapp-build: 
    runs-on: ubuntu-latest 

    steps: 
      - name: Publish with dotnet (i.e. prepare the app for deployment) 
        run: dotnet publish --configuration Release -o ${{env.DOTNET_ROOT}}/myapp  

  cleanbands-production-deploy: 
    if: ${{ github.ref_name == 'master'}} 
    runs-on: ubuntu-latest 
    needs: cleanbands-webapp-build 
    strategy: 
      fail-fast: false 
      matrix: 
        master-groups: [location-1, location-2, location-3, …] 
    steps: 
      - name: "Checkout Github Action" 
        uses: actions/checkout@master 
      - uses: azure/login@v1 
        with: 
          creds: ${{ YOUR_AZURE_CREDENTIALS_HERE }} 
      - uses: actions/download-artifact@v3 
        with: 
          name: dotnet-build 
          path: ./myapp 
      - name: Deploy to Production 
        run: | 
          cd ./myapp 
          az webapp up -g ${{ matrix.master-groups }} -n cleanbands-${{matrix.master-groups}}-app --runtime "dotnet:6"

The Results

The CleanBands system is now fully operational over several instances. The entire system is hosted in identical and isolated Azure environments, which can be created indefinitely with the touch of a button. Changes to the cloud architecture are automatically applied to each isolated instance, keeping them identical in perpetuity.

This solution allows CleanBands to onboard a new client without imposing effects on performance to other clients. We've also accommodated a more deterministic way for them to bill their clients for resource usage, since billing can be broken down by the resource group and each client is defined by a resource group.

Finally, the modular nature of the solution allows CleanBands to offer their services in countries with strict data residency policies, by simply choosing to deploy their instance in a data center within said country.

Lightning Fast Deployments

Simple clientele onboarding

Scalable Infrastructure

Learn more about CleanBands

More Case Studies

Ready to get started?

Loading…
Loading the web debug toolbar…
Attempt #