High-level Overview

Core Development Tools

Version Control

Tool

Bitbucket (Git)

Usage

Build System

Tool

Maven

Usage
  • Standardized build configurations are defined in pom.xml.

  • Dependency management is handled via a Nexus internal artifact repository.

  • Jenkins CI/CD pipelines enforce build consistency.

Dependency and Build Frameworks

  • Standardized common Maven configurations are defined to enable streamlined specification of project build requirements.

  • Standardized Maven Tile definitions configure Maven plugins that facilitate common file initialization, build and testing tasks.

Containerization

Tool

Docker, Jib, Buildpacks

Usage
  • All applications are containerized for consistency across environments.

  • Base images follow VA security and orgnaizational standards.

  • Images are stored in environment-specific private registries.

Deployment & Configuration Management

Kubernetes Orchestration

Tool

Kubernetes

Usage
  • Applications are deployed as Kubernetes workloads.

  • Standardized Kustomize-based manifests define resource configurations.

Configuration Management

Tool

Kustomize

Usage
  • We use Kustomize to manage environment-specific and usage-oriented configurations.

  • Overlays ensure separation of concerns between development, testing, and production.

Build and Deployment Automation

Tool

Skaffold/Jenkins

Usage
  • Skaffold is used to manage image build and deployment workflows locally and in CI environments.

  • Standardized shared Jenkins pipelines enable GitOps-based continuous delivery.

Application Standards & Best Practices

Coding Conventions

  • Follow Java coding conventions.

  • Use Mobile Framework-based configurations of various plugins to enforce code quality automatically on each build.

Build and Deployment Frameworks

  • Include dependencies and use parent POMs defined in Mobile Framework when possible.

  • Include NGSS Maven Tiles to manage required configurations and supplemental project files.

  • Use the standard Skaffold + Kustomize framework to define image build and Kubernetes deployment configuration.

  • Include the Skaffold Test Library to write integration tests that more fully test orchestration with other services.

Summary

This document provides an overview of our development architecture, highlighting the tools and conventions we follow. For more detailed information, refer to our internal documentation at https://wiki.mobilehealth.va.gov/spaces/CKM/pages/227300892/NGSS+Development+SOP.