Walhall is a platform for building applications with microservice architectures. You can reuse these microservices from a marketplace or create your own.

The key components of a Walhall application are:

  • BiFrost, the backend;
  • Midgard, the frontend; and
  • Logic modules, the application’s business logic, implemented as a backend service and/or a frontend client.

When you create an application, the source code is forked to your GitHub account. From there, you can develop your application locally just like any other software project. Walhall takes care of all server-side configuration and deployment.

Get started with Walhall

See the Get started with Walhall tutorial for information on how to register and create your first application.

Develop your application locally

When you create an application, Walhall forks the source code to your GitHub account and creates a Docker image for your application. To develop your application, you must clone the GitHub repositories forked by Walhall.

What’s forked to your GitHub account

This is what you get:

  • application root: The repo that contains the application’s source code. It injects the source code of your clients as dependencies. It implements the Midgard library to talk to your application’s backend. This repo will take the name of your application.
  • Services: The backend services of each logic module you selected. These provide the main features of your application. You can run these services locally with Docker compose. Naming convention: {module}-service-{framework}
  • Clients: The frontend clients of each logic module you selected. These control the user interface for interacting with each service. Naming convention: {module}-client-{framework}

Diagram: code forked from Walhall to your GitHub account

The application root is built by Midgard based on the framework you chose in the Walhall UI. The README will contain information about setting up the application and the code structure. Click here to read more about Midgard and how the application root is structured.

Application deployment

When you create a Walhall application, Walhall syncs the repositories that it forks to your account with its CI/CD pipeline. It also generates secrets and builds a Docker image for each one, and it builds these images in their own dedicated location in Humanitec’s Docker registry. However, Walhall does not deploy these images until you tell it to do so.

How to push changes

To push changes to the source code of your application or a forked client/service, all you have to do is push a tag in the relevant repo.

When you’re ready to deploy the application, log in to Walhall and go to your application. First, you’ll see the option to Deploy to development. Click this button, and when Walhall is done deploying your application, you’ll see two URLs appear:

  • Frontend URL: The URL of your running frontend application (generated from the code in your application root).
  • API URL: The URL of your application’s API, which you can use for making API requests.

The deployment process

This diagram shows a deployed Walhall application:

Diagram: A deployment of a Walhall application

When you click “deploy,” Walhall does the following:

  1. Creates an environment, a namespace, and environment secrets for your application.
  2. Creates instances of BiFrost, Midgard, and the application’s logic modules in this namespace.
  3. Creates config maps, application secrets, cluster IPs, deployments, and containers for BiFrost, Midgard, and the logic modules.

Manage config map

Before you deploy the application, you have the option to manage the config map. Log in to Walhall, go to your application, and click the Configuration tab on the left:

Screenshot: Walhall deployment configuration

Here you can configure the environment variables used in your application and logic module Docker images.