Platform Engineer
+ Back-End / + DevOps
About
Platform Engineer focused on building and operating cloud-native platforms across AWS and Azure environments.
I work daily with Kubernetes (EKS), Terraform, Helm and GitOps (Argo CD), delivering scalable, secure and reliable platform solutions across multiple environments. My experience includes infrastructure as code, platform automation, observability, platform security and developer enablement through self-service platform capabilities.
Coming from a full-stack development background, I understand developer needs and focus on reducing cognitive load by creating clear, reliable "golden paths" for building, deploying and operating applications.
I have hands-on experience with modern platform engineering technologies including Backstage, Vault, OpenTelemetry, Grafana, Kyverno, Istio and Crossplane. My work focuses on improving platform reliability, observability, security and developer experience.
I'm particularly interested in Internal Developer Platforms (IDP), cloud-native architectures and observability, working with metrics, logs and traces to improve visibility and operational efficiency across distributed systems.
Currently expanding my expertise in Go while building AI-powered developer tooling and internal platform capabilities.
Skills
Gazetteer API JavaScript / Leaflet.js / AWS Lambda / S3 + CloudFront / Terraform Serverless Migration on AWS
A legacy PHP/Apache container re-platformed onto fully serverless AWS. Same interactive map of global country data, but first byte dropped from ~12s to ~115ms and the monthly bill to nothing.
Platform Engineering
Serverless Re-platform — retired a Dockerised PHP/Apache service; static assets moved to S3, the API to Lambda.
Routing at the Edge — CloudFront serves the site from S3 and routes the API path prefix to a Lambda origin, so the backend was replaced without touching a line of frontend code.
Cold Start Eliminated — first byte down from ~12s on a free-tier container to ~115ms; Lambda initialises in ~154ms.
Zero Running Cost — sits inside the AWS always-free tier in place of an always-on container.
Private by Default — S3 bucket blocked from all public access and reachable only through CloudFront Origin Access Control.
Secrets Out of Source — upstream API keys lifted out of committed code into Lambda environment variables injected by Terraform.
Zero-Dependency Backend — 14 PHP proxy scripts consolidated into a single Node.js 20 handler with no npm dependencies: no build step, no supply chain, minimal cold start.
Resilience Work — three upstream providers had gone dead or paywalled; replaced with keyless equivalents behind a stable response contract.
Fully Provisioned as Code — S3, CloudFront, OAC, Lambda, ACM and Route 53 defined in Terraform, with TLS issued and DNS-validated automatically.
Tech Stack
AWS: Lambda (Node.js 20, Function URL), S3 (private, OAC), CloudFront, Route 53, ACM, CloudWatch Logs
IaC: Terraform (pinned provider versions, resource-per-file layout)
Frontend: JavaScript (jQuery), Leaflet.js, Bootstrap, AJAX
Integrations: GeoNames, Open-Meteo, BigDataCloud, OpenTripMap
TradePulse.AI Python / AWS Lambda / EventBridge / DynamoDB / Terraform Event-Driven Serverless Trading System
A Bitcoin trading system that wakes on a schedule, writes to one table and goes back to sleep. Four Lambdas, no servers, and enough alarming to notice when one of them quietly stops. It trades a virtual portfolio; the real-order path is deliberately gated off.
Platform Engineering
Container-to-Serverless Migration — retired App Runner and ECR; the entire runtime is now Lambda + DynamoDB + EventBridge inside the AWS free tier.
Event-Driven Execution — EventBridge Scheduler invokes the trading Lambda once per daily bar rather than holding a polling loop open, so compute is billed in seconds per day.
Idempotent by Bar — each run is keyed to the market bar it processes, so a retry, duplicate schedule fire or manual invoke cannot double-trade.
Silence Is Alarmed, Not Just Failure — a scheduled function that stops being scheduled produces no error to catch, so each of the three bots carries a no-invocation alarm alongside its error and dead-letter alarms: nine in total.
Blast Radius Drawn Per Bot — three schedules, three functions, three IAM roles, three dead-letter queues. They share a table and an SNS topic; everything else is separate, down to the deployment artefact.
Execution Heartbeat — the live strategy trades ~1.7 round-trips a year, so a shadow Lambda runs a full round-trip against a demo matching engine daily. The first real order is never the first test.
Public Read-Only Status — a separate status Lambda behind CloudFront serves the live ledger as HTML or JSON, cached 30s at the edge.
Auditable State — one on-demand DynamoDB table holds portfolio state plus an append-only decision ledger, partitioned per channel.
Backtest = Live Parity — the live bot imports the same signal and cost code the backtester runs, so validated behaviour cannot silently drift.
Tech Stack
AWS: Lambda (Function URLs), EventBridge Scheduler, DynamoDB (on-demand), CloudFront, SQS (DLQ), SNS, CloudWatch (logs, alarms), Route 53, ACM
IaC / CI: Terraform, GitHub Actions (OIDC → AWS), gitleaks secret scanning
Backend: Python 3.11, pandas/numpy, boto3; TensorFlow and LightGBM in the offline research pipeline
Validation: event-driven backtester with next-bar-open execution, fees and slippage, plus walk-forward out-of-sample testing
Brenda Nails Studio Astro / React / TypeScript / AWS / Webiny CMS Full Stack Serverless Project
A working salon site with no server behind it. Static pages on a CDN, a single function serving both the contact form and the content, and an owner who edits her own prices without touching code.
Platform Engineering
Rewrite at the Edge — a CloudFront Function turns directory URLs into index.html during the viewer request, before the cache lookup, so the bucket stays a plain file store.
Private Origin — S3 blocked from all public access and readable only by CloudFront through Origin Access Control.
One Function, Two Jobs — content and bookings share a single Lambda behind an HTTP API exposing exactly two routes.
Credentials Never Ship — the browser calls the API and the API calls the CMS, so the Webiny key stays server-side.
Permissions Named One by One — the function may send email and publish to a single topic ARN; it cannot read the bucket or touch DNS.
Two Notification Channels — SES sends a confirmation to the customer and details to the studio; SNS puts the same booking on the owner's phone.
Provisioned as Code — CloudFront, OAC, S3, API Gateway, Lambda, IAM, SNS and CloudWatch defined in Terraform, shipped by GitHub Actions with OIDC.
Tech Stack
AWS: CloudFront (+ CloudFront Functions), S3 (private, OAC), API Gateway (HTTP API), Lambda (Node.js 20), SES, SNS, CloudWatch, Route 53, ACM
IaC / CI: Terraform, GitHub Actions (OIDC → AWS)
Frontend: Astro, React, TypeScript, Tailwind CSS, GSAP
Content: Webiny headless CMS
Lotto EV Toolkit Python / NumPy / GitHub Actions / pytest Expected-Value Engine
A repository named a prediction system that proves, in its own backtest, that predicting a lottery is impossible. What it automates instead is the only thing a player controls: whether a ticket is worth buying. On an ordinary draw the answer is no.
Engineering
Publishes Its Own Negative Result — every method is scored out of sample against the no-skill baseline with Monte-Carlo p-values and bootstrap intervals. None beats random picks, and the dashboard says so on its face.
Corrects Itself in Public — an earlier headline claimed 96% of roll-down draws were profitable. Re-priced against each draw's own measured ticket sales it became 27 of 65, median EV −£0.14 — and the correction stayed in the README.
Exact Probabilities, Asserted — hypergeometric odds for every tier (jackpot 1 in 45,057,474) are pinned by tests rather than assumed, and fixed prizes are re-derived from official data on each run.
Stresses the Fragile Input — ticket sales dominate expected value on a roll-down, so the verdict is reported across the sales range; a draw that only clears on the central estimate is not treated as an opportunity.
Absence Is the Failure Mode — a collector that stops collecting raises no error, so a separate watchdog workflow checks that each draw actually arrived.
The Clock, Not the Calendar — sales close 19:30 UK time while the collector runs on UTC, so the target draw is resolved with an explicit timezone and both the evening run and morning retry agree.
Deterministic Recommendations — suggested lines are seeded from the draw date, so a retry proposes the same portfolio rather than a second, different one.
No Infrastructure for Its Own Sake — two draws a week needs no server, queue or database. A scheduled workflow fetches, recalculates and commits; git provides history, durability and audit for free.
Tech Stack
Core: Python 3.11, NumPy, pandas, exact hypergeometric EV model, greedy portfolio selection with diversity constraints
Automation: GitHub Actions (scheduled collection, retry and watchdog), launchd for the post-draw routine, SMTP alerts only on a positive-EV verdict
Validation: walk-forward backtest with significance testing, plus a settled real-money ROI ledger
Data: full UK Lotto history since 1994, per-draw sales, popularity weights calibrated on 1,126 draws
Download Curriculum Vitae Explore My Skills in PDF PDF
A Platform Engineer's CV: cloud-native platforms on AWS and Azure, Kubernetes and Terraform day to day, and a full-stack background that informs how the platforms are built to be used.
Postra TypeScript / Python / AWS Lambda / DynamoDB / SES / Terraform Two-Market Product Launch
An AI social media scheduling product being launched into the UK and Poland at once. The pre-launch fronts, the waitlist and inbound email on both domains all run serverless, and the engine is built on Postiz, the open-source scheduler, under its AGPL-3.0 licence.
Platform Engineering
Remote State, Locked — Terraform keeps state in S3 with a DynamoDB lock table, so two applies cannot run over each other and the state does not live on one machine.
Two Markets Separated at the Root — each domain has its own hosted zone, certificate, bucket and CloudFront distribution; they share the waitlist API and nothing else.
Waitlist Keyed on the Address — signing up twice updates the same item rather than writing a second, so a retried submission is a no-op.
On-Demand by Default — DynamoDB is billed per request, because a pre-launch list has no idle traffic and no predictable peak to provision for.
Explicit CORS — the API names five permitted origins across the two domains rather than allowing any.
Email Without a Mail Server — SES receipt rules match three addresses across both domains and write each message to S3, so the brand has working contact addresses with no mailbox to run or patch.
Right-Sized Compute — the waitlist function is Python 3.12 at 128 MB, the smallest Lambda available, because validating an address needs nothing more.
Status on Someone Else's Infrastructure — uptime is published from a separate Upptime repository driven by GitHub Actions, so the status page cannot go down with the thing it reports on.
Tech Stack
AWS: CloudFront, S3 (private, OAC), API Gateway (HTTP API), Lambda (Python 3.12), DynamoDB (on-demand), SES (inbound receipt rules), Route 53, ACM
IaC: Terraform with S3 remote state and DynamoDB state locking
Product: TypeScript, built on the open-source Postiz engine under AGPL-3.0, plus a separate mobile client
Observability: Upptime status page running on GitHub Actions
Summary
Platform Engineer with hands-on experience building and operating cloud-native platforms on AWS, with a strong focus on Kubernetes (EKS), Terraform and GitOps (Argo CD).
Experienced in improving platform reliability, simplifying deployments and enabling development teams through self-service infrastructure and standardised "golden paths". Proven ability to design and operate scalable multi-environment systems supporting fast and consistent delivery.
Strong focus on observability, working with metrics, logs and traces to improve system visibility, reduce debugging time and support distributed systems in production environments.
Background in full-stack development provides a solid understanding of developer needs, allowing me to reduce cognitive load and deliver platforms that are easier to use, operate and scale.
Languages
Polish (Native Language)
English (Fluent)
Education
03/2024-03/2025 | IT Carrier switch
Completed an intensive Full Stack Development Training Program, gaining hands-on experience in front-end and back-end development. Mastered JavaScript, React.js, Node.js, PostgreSQL, and AWS, while working on real-world projects to build a strong portfolio.
### **Certifications**
✔ **Full Stack Engineer**
✔ **JavaScript**
✔ **jQuery**
✔ **Python 3**
✔ **C#**
✔ **PHP**
✔ **Bootstrap**
✔ **AWS Cloud Practitioner** – In Progress
This training has equipped me with a strong analytical mindset, the ability to write clean and efficient code, and a passion for solving complex problems through software development.
2025 | AWS Certified Cloud Practitioner
Cloud computing certification
2006 – 2007 | ESOL, Filton College, Bristol
English Language Certification
2000 – 2005 | Koluszki College, Poland
IT Technical Focus
Experience & Tech Stack
AWS Cloud Infrastructure
Daily work with serverless (Lambda, API Gateway, S3, CloudFront) and containerized workloads (App Runner, ECR). Hands-on with DynamoDB, Secrets Manager, Parameter Store, CloudWatch, Route 53, ACM. Cost-optimized architectures balancing performance and reliability. Production experience across compute, storage, networking, and observability services.
Infrastructure as Code
All infrastructure provisioned with Terraform — zero manual console clicks. Modular, reusable code across multiple projects. S3 remote state with DynamoDB locking for team collaboration. Manage full AWS stacks (networking, compute, storage, IAM) declaratively. Version-controlled infrastructure changes with peer review and CI/CD automation.
Containerization & Image Management
Build optimized Docker images for production workloads — multi-stage builds, minimal attack surface, efficient layer caching. Push to ECR with automated tagging strategies. Container security scanning and vulnerability management. Local development environments matching production config. Experience with Docker Compose for multi-service orchestration.
Container Orchestration
Daily management of production Kubernetes clusters at Nourish Care. Deploy and maintain workloads using Deployments, StatefulSets, Services, Ingress. Configure resource limits, health checks, rolling updates, and autoscaling. Troubleshoot pods, debug networking issues, manage secrets and ConfigMaps. Strong understanding of K8s architecture and best practices.
Kubernetes Package Manager
Deploy and manage applications using Helm charts. Templated Kubernetes manifests with environment-specific values. Version-controlled releases with easy rollback capability. Install and configure third-party charts (monitoring, ingress controllers, databases). Maintain consistency across dev, staging, and production environments.
CI/CD Automation
Build enterprise-grade pipelines with GitHub Actions — automated testing, Docker builds, infrastructure deployments. OIDC authentication to AWS (no static credentials). Manual approval gates for production deploys. Parallel jobs, caching strategies, reusable workflows. Integrated security scanning and automated rollback on failure. Zero-downtime deployment patterns.
GitOps Continuous Delivery
Implement GitOps workflows with Argo CD for declarative Kubernetes deployments. Git as single source of truth — automatic sync from repository to cluster. Visual deployment status, drift detection, and self-healing capabilities. Manage multiple environments and clusters from one interface. Rollback to any previous state instantly.
Metrics & Time-Series Database
Deploy and manage Prometheus for metrics collection and alerting. Configure service discovery, scrape configs, and retention policies. Write PromQL queries for complex metric analysis. Set up alert rules and integrate with Alertmanager for intelligent routing. Export metrics from applications and infrastructure. Foundation of modern observability stack with Grafana visualization.
Monitoring & Observability
Build production dashboards with Grafana and Prometheus for real-time system monitoring. Track application metrics, infrastructure health, and business KPIs. Configure alerting rules and notification channels (Slack, PagerDuty, email). Query PromQL for custom metrics. Integrate CloudWatch, Loki for centralized logging. Quick incident identification and resolution.
Linux & System Administration
Deep Linux/Unix expertise across RHEL, Ubuntu, and Debian distributions. Proficient in Bash scripting for automation, system monitoring, and infrastructure management. Experience with systemd, cron jobs, log analysis, package management (apt, yum), SSH key management, and performance tuning. Strong foundation in networking, file systems, and security hardening.
Python & Automation
Production Python for infrastructure automation, tooling, and AWS integration. Build custom scripts with boto3 for AWS operations, automated deployment tools, and platform utilities. Create Kubernetes operators and controllers. Develop monitoring scripts, log parsers, and CI/CD automation. FastAPI for internal services and APIs. Clean, maintainable code following best practices.
Let's talk about your project and how I can help you.
© Kris Rzepka