Skip to content
Josh E edited this page Apr 10, 2020 · 12 revisions

  1. What Is Service Level Config?
  2. What Is SLC for?
  3. What Problem Does SLC Solve?
  4. What Design Principles Underlie SLC?
  5. How Does SLC Accomplish Its Goals?

What Is Service Level Configs?

Service Level Configs is a framework that helps control the interactions between gameserver and community needs by adding automation and workflow logic. SLC does this by isolating points of access between the gameservers, a focus on providing verbose logging and automation to assist with troubleshooting and day to day processes.

What Is SLC For?

Service level configs is our initial stepping stone into automation and management of gameservers, the underlying purpose is to do the following:

  • Give protection from and control over circumstances that derive from user error.
  • Help prevent cascading failures in complex multi-server configurations.
  • Fail fast and rapidly recover.
  • Fallback and easy degrade when possible.
  • Enable near real-time configuration and control.

What Problem Does SLC Solve?

Gameservers are complex to automate as no two games are usually alike, there may be dozens of dependencies and specific configurations needed. any of these will inevitably fail at some point as they are updated or the server environment may change. If the configurations and scripts are not isolated from these potential failures, it risks being taken down with them. SLC resolves this problem by having a centralized repository to store both scripts and configurations used to manage servers.

What Design Principles Underlie SLC?

SLC works by:

  • Preventing "Tribal Knowledge" by easily accessible codebase and configurations.
  • Focus on Design to fail fast and easy to fix.
  • Providing configuration fallbacks wherever feasible to protect servers from failure.
  • Optimizing for ease of deployment and centralized tools for gameserver changes.
  • Centralized propgation of configurations.
  • Fault checking and easier to review and verify changes made at a glance.

How Does SLC Accomplish Its Goals?

SLC does this by:

  • Gameservers are tied to JSON configurations that have all configurations for the server in a readable and easily editable format for making changes.
  • Server Scripts are designed to work specifically for the gameserver in question allowing better individual control over specific gameserver instances or large scale updates across multiple gameserver instances.
  • Github Workflows to help validate Pull Requests and check submissions automatically for errors.
  • Eliminates blind changes by allowing you to "at a glance" see all changes and differences and verify configurations before deployment.
  • Accessibility and Open source to allow the community to have better transparency of server configurations and implementation without the need of elevated permissions or access to sensitive materials or services.
  • All components are able to be modular and can be made to fit any need.