March 10, 2023
6
min read

How Meilisearch Uses Ephemeral Webterminal Environments to Improve Developer Productivity

A guide on how Meilisearch - a disrupting powerhouse in search - enhances their developer productivity using Uffizzi’s Ephemeral Webterminal Environments.

Introduction to Meilisearch and their foray into ephemeral environments for their developer workflows

Meilisearch is taking search to a new level for thousands of developers across the globe.  Meilisearch is an open-source search engine that provides fast and relevant search results to users. It was first released in 2019 and has since gained massive popularity (34k Github Stars) due to its simplicity and ease of use. 

Written in Rust, Meilisearch is designed to be developer-friendly and can be integrated into a variety of applications, such as e-commerce websites, knowledge bases, and chatbots. It uses advanced search algorithms to deliver fast and accurate results, even with large datasets.

To improve their development velocity the Meilisearch team recently adopted Uffizzi Ephemeral Webterminal Environments - for every Pull Request Uffizzi is providing the team with an ephemeral cloud based environment for the specific feature branch.  This capability drives lightning fast iterations and allows developers and maintainers to quickly review, provide feedback and validate proposed updates to the code base. 

In this blog post we'll explore how Meilisearch uses Uffizzi ephemeral environments to improve their developer productivity and showcase Meilisearch previews. We'll also discuss the impact that this integration has had on Meilisearch’s platform and the potential benefits of using Uffizzi ephemeral environments.

What is a Uffizzi ephemeral webterminal environment?

An ephemeral webterminal environment is an instance of a command line application deployed with all the dependent services. The application is accessed from a webterminal UI over https in a browser. 

Do check out Uffizzi’s blog on ephemeral webterminal environments to get a better idea of how this works generally for CLI tools.

How Meilisearch uses Uffizzi’s Ephemeral Webterminal Environments

Meilisearch uses Uffizzi’s ephemeral environments for creating temporary staging environments on every pull request which are updated on new commits to the pull request and then deleted when the pull request is closed or merged. 

Ephemeral Webterminal Environment for a Meilisearch Github Pull Request

Designing Meilisearch’s ephemeral webterminal environments 

Meilisearch pull request ephemeral environments were designed around testing and interacting with the meilisearch binary. When this meilisearch binary is run the application starts listening on a post where it accepts incoming requests. The following  is what the configuration for a Meilisearch ephemeral environment looks like : 

version: "3"


x-uffizzi:
  ingress:
      service: nginx
      port: 8081


services:
  meilisearch:
    image: "${MEILISEARCH_IMAGE}"
    restart: unless-stopped
    ports:
    - "7681:7681"
    - "7700:7700"
    deploy:
      resources:
        limits:
          memory: 500M


  nginx:
    image: nginx:alpine
    restart: unless-stopped
    ports:
    - "8081:8081"
    volumes:
    - ./.github/uffizzi/nginx:/etc/nginx


Networking - the Life of a request to a Meilisearch ephemeral environment

When the Uffizzi URL is shared with the user, the request is routed by nginx to either allow the user to gain access to the webterminal UI or to access meilisearch itself. The following diagrams and the steps below explains this lifecycle in detail.

  1. When the request comes in to the Uffizzi URL (formatted as https://app.uffizzi.com/<link_to_github_PR>) it will be intercepted by the nginx container as the ingress points to it as you can see it under the x-uffizzi directive on line 3 in the uffizzi configuration provided above.
  2. The configuration for the nginx container dictates that requests coming to nginx need to be redirected to the certain ports exposed by the other container.
  3. This other container is running TTYD and has the meilisearch binary built from the pull requests. TTYD itself is exposed on the 7681 port which is used to interact with the container environment from where the user can run the meilisearch binary. This allows the user to run meilisearch with whatever arguments they would like to and test it however they think right. Meilisearch itself is exposed on the 7007 port.
  4. Nginx allows us to map the root of the ingress to the TTYD port so that upon accessing the ephemeral environments, users are instantly dropped into the terminal and can run the meilisearch command and start previewing the changes in the PR.

Impact and Results

It is clear that this integration has the potential to improve the previewing experience for non-developer users and developer experience for developers, making MeiliSearch a more accessible and user-friendly search engine. The following are ways Uffizzi ephemeral environments are impacting Meilisearch : 

  • Faster Iteration: With Uffizzi ephemeral environments, MeiliSearch can rapidly iterate on pull requests and save significant time on pull request reviews.
  • Fewer Bugs Introduced:  With an environment for every pull request it’s easy to drive best practices in code review.  Review the code and review the intended functionality in one succinct step.  
  • Improved Development Velocity: In our case studies that range from users like Spotify to Fintech’s like Tilled teams are seeing 20-50% improvements in overall project velocity. For scheduled releases there’s more features packed in or teams are just releasing way more frequently.  Meilisearch’s integration is still in early stages but the early qualitative evidence is showing how valuable ephemeral webterminal environments are to the Meilisearch team and all of their contributors.  Their environments are viewed on average 2 to 3 times and sometimes as many as 9 times or more as they are iterating through difficult problems. 

Uffizzi supports several other innovative companies in the same way including NocoDB (33k GH stars), Forem by Dev.to (20k GH stars), Meilisearch (33k GH stars), and Lazygit (30k GH stars). If you’re interested in implementing ephemeral environments for your organization you can set-up a proof of concept for free at Uffizzi Cloud.

Uffizzi logo
Environments as a Service
Learn More
preview icon
Empower your devs with an environment for every pull request
time icon
Avoid release delays that cost millions in missed revenue
Velocity icon
Improve development velocity at scale by up to 50%
Lifecycle icon
Plan capacity in real time with lifecycle management built in
Learn More