The move
terraform plan
Expand any line for the real details behind it.
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create - destroy Terraform will perform the following actions:
# employment.current will be destroyed - resource "employment" "current" {
- role = "Senior DevOps Engineer" -> null - tenure_years = 8 -> null ~ region = "us-west-2" -> "eu-central-1" # forces replacement ~ work_authorization = "us_citizen" -> "eu_blue_card" # forces replacement ~ timezone = "America/Phoenix" -> "Europe/Berlin" # forces replacement # Region is not an in-place update. The resource has to be # destroyed in us-west-2 and created in eu-central-1. }
- Work history
2023 — now — DevOps Engineer · IoT / proptech platformCut $70K a year: CircleCI → GitHub Actions, and Couchbase off EC2 to ECS.
Terraform-managed infrastructure across multiple AWS accounts for a platform supporting 1M+ connected IoT devices, with on-call via PagerDuty. Led the monolith CI/CD migration from CircleCI to GitHub Actions, cutting $20K a year and shortening feedback cycles. Blue-green and canary deploys with automated rollback. Moved a large Couchbase cluster off EC2 to containerised ECS, saving $50K a year. Provisioning and ops automation in Python and Bash. Deployed a large-scale AI application on AWS.
2022 — 2023 — DevOps Engineer · game studioOwned the game's testing platform end to end.
Owned the game's testing platform end to end. Supported developers writing and maintaining Python tests, built a front end for the platform that improved access and adoption, and worked release management to catch bugs before shipping.
2021 — 2022 — Platform Engineer · IoT / proptech platformWrote the Terraform module that moved infrastructure off Heroku to AWS.
Multiple AWS organization accounts, Terraform modules, Datadog monitoring, on-call via OpsGenie. Automated log transfer from production accounts to disaster-recovery accounts with Lambda for business-continuity requirements. Wrote the Terraform module that migrated infrastructure from Heroku to AWS App Runner. Built the backend infrastructure for the largest internal support tool.
2020 — 2021 — DevOps Engineer · digital agencyRan production Kubernetes on AWS for a $500K national client.
Senior role across AWS organization accounts and customer deploys. Designed and operated a production Kubernetes cluster on AWS for a national client generating $500K in revenue, including stateful workloads on persistent storage. CI/CD pipelines for large WordPress customers. Migrated logging and monitoring to Datadog and led the move to GitHub Actions.
2018 — 2020 — DevOps Engineer · video delivery / CDNReplicated an AWS data pipeline in Azure, saving $20K a month.
Datacenters across North America and Europe with daily Linux deploys via SaltStack. Rancher and Docker orchestration across three environments. Replicated an AWS data pipeline in Azure, saving $20K a month and adding multi-cloud resilience. Automated 24/7 support coverage with Slack bots and PagerDuty. Led a national carrier transit partnership, deploying 150 Gbps of fiber across six US datacenters and cutting $18K a month. Flink and Kafka on Docker in Azure.
2014 — 2018 — Network Engineer · public sectorLinux and Windows admin for a 6,000-user network; supervised three techs.
Linux and Windows administration for a 6,000-user network. Ticket escalation, supervised three technicians, hired and trained support staff. Replaced the core switch infrastructure and deployed network-wide monitoring. Promoted from Computer Technician in 2017.
- Stack I have actually run in production
- AWS, multi-account: Organizations, IAM, ECS/Fargate, Lambda, App Runner, EC2, RDS, S3, VPC design
- Terraform: module authoring across multiple accounts, drift review, plan-gated pipelines
- CI/CD: GitHub Actions, CircleCI, blue-green and canary releases with automated rollback
- Containers: Docker, ECS, Kubernetes, Rancher
- Observability + on-call: Datadog, PagerDuty, OpsGenie, release and incident management
- Data infrastructure: Couchbase, Kafka, Flink
- Automation: Python and Bash daily, SaltStack for config management, some Go
- AWS Certified Cloud Practitioner
# employment.hamburg will be created + resource "employment" "hamburg" {
+ role = "DevOps / Platform Engineer" + region = "eu-central-1" + location = "Hamburg, hybrid or on-site" + work_authorization = "eu_blue_card" + blue_card_route = "IT shortage occupation, no degree" + notice_period = "4 weeks" + working_language = "English at the start, German improving" + employer = (known after apply) }
- What I want to do
- Platform or DevOps work with real ownership: AWS accounts, Terraform, delivery pipelines, and the on-call that goes with them. A company that has done a Blue Card before matters more than team size.
- What a sponsor is signing up for
- An employment contract, salary above the IT shortage occupation threshold, and the Erklärung zum Beschäftigungsverhältnis. The consulate appointment, the Anmeldung and the rest of the paperwork are mine.
- Honest gaps
- No Ansible. Config management experience is SaltStack, run daily from 2018 to 2020.
- No GitLab CI. My depth is GitHub Actions and CircleCI.
- No ArgoCD or Flux in production. I have read the docs and run Argo locally, nothing more.
- Production Kubernetes was 2020 to 2021. Since then the work has been ECS and Fargate, so I would want a ramp-up week on current K8s tooling.
- No formal degree. Blue Card route is the IT shortage occupation path, qualified by professional experience.
- Basic German, improving. Working language would need to be English at the start.
Plan: 1 to add, 1 to destroy.
The day to day
deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: alex namespace: hamburg annotations: # There is no rolling update across an ocean. applyme.dev/notice-period: "4 weeks" spec: replicas: 1 # Recreate, not RollingUpdate. I cannot run in Phoenix and Hamburg at once. strategy: type: Recreate template: spec: # Hard requirement, not a preference. Remote-from-Arizona does not schedule. affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: topology.kubernetes.io/region operator: In values: [eu-central-1] tolerations: # Will take the pager. Has taken the pager for seven years. - key: oncall effect: NoSchedule # Yes, I will touch the Jenkins box nobody wants to touch. - key: legacy-ci effect: NoSchedule containers: - name: platform-engineer image: ghcr.io/alexraskin/alex:7.2.0 envFrom: # Everything below is blocked until this Secret exists. - secretRef: name: blue-card readinessProbe: # 12 weeks. Consulate appointment, then Ausländerbehörde. initialDelaySeconds: 7257600 resources: limits: # The limit is real. Sustained overtime gets OOMKilled. cpu: "2" memory: 8Gi
Status: Pending Events: Warning FailedScheduling 3m4s (x63 over 237d) default-scheduler 0/412 nodes are available: 412 node(s) didn't match Pod's node affinity/selector.
Status
/status
- 8,853km PHX → HAM
- 72days searching
- 53applications sent
- —answered
- —interviews
- 33flights this year
Read live from the database I track the search in. Updated whenever I log an application.
Live numbers are unavailable right now — these are the last figures recorded at build time.
Applications per week
Last twelve weeks, Monday to Sunday.
Where they ended up
Table view
Contact
Apply requires: 1 German employment contract
If you are hiring, or you know a team that is, this reaches me directly. Recruiters welcome. Please say whether the role can sponsor.
+ employment.hamburg # employer = (known after apply)