×
Justin Gaffney

Justin Gaffney

Senior Software Engineer

Brisbane, Queensland, AU, 4000
English, C#, Rust, TypeScript, SQL

Background


Work Experience

Work Experience

  • Senior Software EngineerAlii

    Aug, 2025 - Present

    Modernising the main product from a monolithic architecture to a cloud-native, event-driven, microservice architecture

    • Simplifying application IaC, written in C# using Pulumi, and deployment to Azure by creating NuGet libraries which abstract away the complexity of configuring inter-related Azure resources (such as Entra ID, Azure Managed Identity, App Service Plans, Web Apps, Function Apps, Azure Private Link, etc.)

    • Extracting common functionality into platform services (e.g. notifications, auditing, mail) to support subsequent rearchitecture work, as well as new product development

    • Decoupling product features into independent microservices using domain-driven design

    • Standardising architectural patterns and application configuration into common libraries to simplify the development, maintenance, deployment, and monitoring of a large number of microservice applications

    • Standardising CI/CD (implemented in GitHub Actions) into common workflows. Handles rapid deployment of changes to multiple production environment, broadcasts deployment summarisation notifications, simplifies the CI/CD of existing repositories, and speeds up the development of new applications

  • Senior Software EngineerRPMGlobal

    Oct, 2023 - Jul, 20251 year 9 months

    Working in the platform team to develop cloud-native licensing and security systems, and internal infrastructure tools and services

    • Building RPMGlobal's Azure-based cloud platform, to support the company's growing suite of SaaS solutions

    • IAM web application, built using Blazor

    • Authentication and authorisation services

    • Audit logging services

    • Service discovery functionality

    • Application usage metric ingestion and aggregation services

    • RPMGlobal's next generation licensing system, integrating application usage metrics for consumption-based licensing

    • Common libraries to allow the product teams to easily and securely integrate with Azure services and RPMGlobal's cloud platform

    • Common IaC libraries, based on Pulumi and written in C#, to allow product teams to easily write their own IaC and keep it up to date with their evolving architecture

    • Built a health monitoring service for RPMGlobal's legacy licence servers, used by the company's desktop and on-premise client/server products, that monitors the health and uptime of the servers and automatically notifies the support team of any issues or status changes

    • Utilising many Azure services, including Azure AD B2C, managed identities, Azure Functions, Azure SQL, Azure Blob and Table Storage, Azure Service Bus, Azure Redis, and Azure SignalR Service

  • Software EngineerRPMGlobal

    Dec, 2015 - Oct, 20237 years 10 months

    Developed and maintained the financial budget modeling solution XERAS Enterprise

    • Migrated the product from an on-premise, single-tenant, stateful, desktop client/monolithic SOAP service architecture to a cloud-native, multi-tenant, stateless, web client/RESTful and event-driven microservice architecture, as part of RPMGlobal's roadmap towards subscription-based licensing and modern SaaS architectures for its suite of products

    • Many substantial performance improvements across the entire codebase, especially the calculation engine and the data access layer

    • Implemented many significant features, including; Plan vs Actuals, model import/export, multi-environment model logic/data synchronisation, improved algorithm for traversing a model's cell reference graph for efficient recalculation

    • Significant refactoring of the codebase during the development of a new major version, to reduce technical debt and improve maintainability and reliability

    • Eased the transition from .NET Framework to .NET Core by migrating all relevant C# projects to .NET Standard

    • Heavily contributed to implementing the complete redesign of the desktop application's user interface, with a focus on cross-platform compatibility to support the eventual migration to a Blazor web client

Skills

Skills

  • .NET

    ASP.NET Core

    Entity Framework

    Blazor

    SignalR

    WPF

    Maui (previously known as Xamarin)

  • Databases

    SQL Server

    PostgreSQL

    MySQL

    MariaDB

    Azure Cosmos DB

    MongoDB

    Cassandra

  • Web

    React

    Blazor

    TypeScript

    Webpack

    Jest

    Material-UI

    Bootstrap

    Tailwind CSS

    WebSockets

    RESTful APIs

    gRPC

    Node.js

    OpenAPI

    WebAssembly

    Next.js

    Gatsby

  • Azure

    Azure App Service

    Azure Container Apps

    Azure Functions

    Azure Blob Storage

    Azure Table Storage

    Azure Service Bus

    Azure Event Hub

    Azure SQL

    Azure Cosmos DB

    Azure SignalR Service

    Azure Key Vault

    Azure Cache for Redis

    Application Insights

    Managed Identities

    Azure AD B2C

  • DevOps

    Azure DevOps

    GitHub Actions

    Containers

    Proxmox

    Kubernetes

    OpenTelemetry

    Monitoring

    Infrastructure as Code

    Pulumi

Education

Education

  • Computer Science, Bachelor of Information Technology, Queensland University of Technology

    Jan, 2013 - Jan, 2016

Interests

Interests

  • Self-hosting

    GitOpsProxmoxDebianContainersKubernetesHome Assistant
References

References

  • Available upon request