Skip to content
View d-bryan's full-sized avatar

Block or report d-bryan

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
d-bryan/README.md

Dylan Bryan

Backend and systems engineer. I write the services and I own the platform underneath them.

Three and a half years at Technica Corporation, a US federal and defense R&D contractor, building event driven systems, backend services, and the Kubernetes and Linux infrastructure they ran on. Most of that work was in air-gapped environments, where you cannot pull a fix off the internet and the discipline has to be in place beforehand.

Based in southern France, relocating to Barcelona. Open to backend, platform, and systems roles across the EU.


What I have built

Air-gapped Kubernetes platform. Highly available RKE2 on bare metal RHEL for a fully air-gapped environment. HAProxy and Keepalived for load balancing and control plane failover. An on premises Harbor registry served OCI images and Helm charts so deployments worked with no route to the internet. Kafka based event detection fed automated remediation in real time. I evaluated Kubernetes distributions against security posture before selecting RKE2.

Event driven detection and remediation. ETL pipelines in Apache NiFi consuming syslog, Zabbix metrics, and Zeek network events, turning raw telemetry into automated action. The Zeek pipeline detected unauthorized RDP connections and triggered firewall changes on the monitored ports. Custom Java processors pulled Neo4j graph data into dataflows, opened and maintained Jira tickets per system vulnerability, and generated compliance documentation from CVE data.

Authorized Service Interruption system. A Flask and SQLAlchemy backend over MariaDB with a REST API that walked a Neo4j graph depth first to find every dependent item under a node. Paired with a Go service consuming the Zabbix event topic, which held each event long enough to check the maintenance window database, dropped anything suppressed, and forwarded the rest to Kafka.

Rebuilding from bare metal. A breach in early 2024 destroyed all data across our lab. I rebuilt the environment over roughly three months: ESXi hypervisors and vCenter, Juniper SRX firewalls and EX and QFX switches, an isolation system for inspecting infected drives, and the full application stack on top. I corrected the vendor's reference configuration along the way, including a duplicated Keepalived virtual router ID that broke failover, then wrote the installation guide the team used afterward.


Stack

Kubernetes Java Python Kafka TypeScript

Languages. Java, Python, TypeScript and Node.js. Go and Bash where the ecosystem fits.

Backend. Flask, Django REST Framework, Spring Boot, FastAPI, Express. REST API design, microservices.

Data and messaging. Apache Kafka, Apache NiFi, PostgreSQL, Neo4j, MongoDB, MariaDB, Redis.

Platform. Kubernetes and RKE2, Docker, Podman, Buildah, Helm, Harbor, HAProxy, Keepalived, Nginx, bare metal RHEL, VMware ESXi, Proxmox, GitLab CI/CD.

Frontend. React, TypeScript, Vite, Material UI.

Learning next. Rust, Terraform, OpenTelemetry, eBPF, Apache Flink, ClickHouse, gRPC.


How I work

I fix causes rather than symptoms. When a vendor's reference deployment kept failing over badly, the real problems were a duplicated virtual router ID and a misconfigured connection pooler, not the services people kept restarting.

I make things reproducible. Custom Dockerfiles for local testing, Helm charts for deployment, versioned dataflows, and an on premises registry so the same artifacts exist inside the network as outside it. If I do something manually twice, I script it. One provisioning script I wrote detected the Linux distribution, installed packages, and configured NTP, syslog, DNS, DHCP, and SNMP from a single command.

I write documentation as part of the work rather than after it, and I default to boring, well documented technology over new technology, because someone else maintains what I build.

I also mentor junior engineers and have run the technical portion of senior engineering interviews.


Credentials

BS Computer Science, University of Maryland Global Campus.

JNCIA-SEC, Juniper Networks, valid through September 2028.

Contact

contact@dylanbryan.net LinkedIn

Pinned Loading

  1. moore-than-detailing moore-than-detailing Public

    Moore Than Detailing Website

    JavaScript

  2. census-bureau-client census-bureau-client Public

    visualization for the data

    JavaScript

  3. cmsc-405-project-three cmsc-405-project-three Public

    In this project you will create a unique 3D animated scene composed of Three.js graphic components. The scene should include animation, lighting and multiple objects.

    JavaScript

  4. cmsc-430-project-four cmsc-430-project-four Public

    Final project learning about how compilers work

    C

  5. sdev-300-lab-eight sdev-300-lab-eight Public

    final design to web applcation

    Python

  6. cmsc-350-project-four cmsc-350-project-four Public

    final project data structures

    Java