Container Services

Docker Containers Container-based architecture, also known as "microservices," is an approach to designing and running applications as a distributed set of components or layers. Such applications are typically run within containers, made popular in the last few years by Docker.

Containers are portable, efficient, reusable, and contain code and any dependencies in a single package. Containerized services typically run a single process, rather than an entire stack within the same environment. This allows developers to replace, scale, or troubleshoot portions of their entire application at a time.

General Availability (GA) of Kubernetes - Research Computing now manages microservice orchestration with Kubernetes, the open-source tool from Google. New deployments are now launched directly within Kuberenetes.

» Read about Kubernetes and user deployments.

Microservices at UVA

Research Computing runs microservices in a clustered orchestration environment that automates the deployment and management of many containers easy and scalable. This cluster has >1000 cores and ~1TB of memory allocated to running containerized services. It also has over 300TB of cluster storage and can attach to project and value storage.

UVA's microservices platform is hosted in the standard security zone. It is suitable for processing public or internal use data. Sensitive or highly sensitive data are not permitted on this platform.

Microservices Architecture

Basic Principles

1 Microservice architecture is a design approach, or a way of building things. Microservices can be considered the opposite of "monolithic" designs.

A few guiding design principles:

  1. Separate components and services
  2. Availability and resilience
  3. Replaceable elements
  4. Easily distributable
  5. Reusable components
  6. Decentralized elements
  7. Easy deployment

Here’s a talk given by Martin Fowler explaining the idea:

2 The easiest and most common way to run microservices is inside of containers.

  • We teach workshops on containers and how to use them. Browse the course overview for Building Containers for the HPC System at your own pace.
  • Docker provides an excellent Getting Started tutorial.
  • Users may inject ENV environment variables and encrypted secrets into containers at runtime. This means sensitive information does not need to be written into your container.

Uses for Research

Microservices are typically used in computational research in one of two ways:

  1. Standalone microservices or small stacks - Such as interactive or data-driven web applications and APIs or scheduled task containers. Some examples:
    • Simple web container to serve Project files to the research community or as part of a publication.
    • Reference APIs can handle requests based either on static reference data or databases.
    • Shiny Server presents users with interactive plots to engage with your datasets.
    • A scheduled job to retrieve remote datasets, perform initial ETL processing, and stage them for analysis.
  2. Microservices in support of HPC jobs - Some workflows in HPC jobs require supplemental services in order to run such as relational databases, key-value stores or reference APIs.

Browse a list of recent UVA projects employing microservices.


Common Deployments

Service Accessibility Description
NGINX Web Server Public A fast web server that can run
  • Static HTML demo
  • Flask or Django apps demo
  • RESTful APIs demo
  • Expose Project storage demo
Apache Web Server Public An extremely popular web server that can run your static HTML, Flask or Django apps, RESTful APIs, or expose files stored in Project storage.
Shiny Server Public Runs R-based web applications and offers a dynamic, data-driven user interface. See a demo or try using LOLAweb
Recurring Tasks n/a Schedule or automate tasks or data staging using the language of your choice (bash, Python, R, C, Ruby).

Database Hosting

Research computing may be able to provide support for your database hosting needs. Please schedule a consultation request on our website. Follow the link here and fill out the form under “Consultation Request” on the right hand side of the page under “All Forms”.

Service Eligibility & Limitations


Pricing

Container services hosted by UVA Research Computing fall under this pricing structure:

Tier Containers Price
Light Tier 1 - 5 $5 / month
Medium Tier 6 - 15 $10 / month
Heavy Tier > 15 containers $48 / month
No charges will be incurred for stopped containers or any cluster storage.

Apptainer

Want to run your container within an HPC environment? It can be done, using Apptainer!

Apptainer is a container application targeted to multi-user, high-performance computing systems. It interoperates well with Slurm and with the Lmod modules system. It can be used to create and run its own containers, or it can import Docker containers.

Learn more about Apptainer.


Next Steps

Have a containerized application ready for launch? Or want a consultation to discuss your microservice implementation?