The moveDer Umzug
terraform planterraform plan
Expand any line for the real details behind it.Jede Zeile lässt sich für die Details aufklappen.
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 platform
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 studio
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 platform
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 agency
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 / CDN
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 sector
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) # This is the one field I cannot fill in myself. }
- 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. Team size does not matter much. A company that has done a Blue Card before matters more.
- 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. I handle the consulate appointment, the Anmeldung and the paperwork on my side.
- 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 dayDer Arbeitsalltag
deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: alex namespace: hamburg labels: app.kubernetes.io/name: alex app.kubernetes.io/component: platform-engineer app.kubernetes.io/version: "7.2.0" annotations: # There is no rolling update across an ocean. applyme.dev/notice-period: "4 weeks" applyme.dev/relocation: "one-way, with fiancee" spec: replicas: 1 # Recreate, not RollingUpdate. I cannot run in Phoenix and Hamburg at once. strategy: type: Recreate selector: matchLabels: app.kubernetes.io/name: alex template: metadata: labels: app.kubernetes.io/name: alex 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 operator: Equal value: "true" effect: NoSchedule # Yes, I will touch the Jenkins box nobody wants to touch. - key: legacy-ci operator: Exists effect: NoSchedule terminationGracePeriodSeconds: 2419200 containers: - name: platform-engineer image: ghcr.io/alexraskin/alex:7.2.0 imagePullPolicy: IfNotPresent command: ["/usr/bin/terraform", "apply", "-auto-approve"] envFrom: # Everything below is blocked until this Secret exists. - secretRef: name: blue-card env: - name: TZ value: Europe/Berlin - name: WORKING_LANGUAGE value: en - name: GERMAN_LEVEL value: basic - name: PAGER_ACCEPTED value: "true" ports: - name: standup containerPort: 900 protocol: TCP readinessProbe: httpGet: path: /healthz port: standup # 12 weeks. Consulate appointment, then Ausländerbehörde. initialDelaySeconds: 7257600 periodSeconds: 86400 timeoutSeconds: 30 failureThreshold: 3 livenessProbe: exec: command: ["/bin/sh", "-c", "test -s /var/run/coffee"] periodSeconds: 3600 failureThreshold: 2 resources: requests: cpu: 500m memory: 2Gi limits: # The limit is real. Sustained overtime gets OOMKilled. cpu: "2" memory: 8Gi securityContext: allowPrivilegeEscalation: false runAsNonRoot: true readOnlyRootFilesystem: true
Name: alex-7d4f9c8b6-x2blq Namespace: hamburg Priority: 0 Node: <none> Labels: app.kubernetes.io/name=alex pod-template-hash=7d4f9c8b6 Status: Pending IP: Controlled By: ReplicaSet/alex-7d4f9c8b6 Containers: platform-engineer: Image: ghcr.io/alexraskin/alex:7.2.0 Port: 900/TCP Host Port: 0/TCP State: Waiting Reason: Unschedulable Ready: False Restart Count: 0 Limits: cpu: 2 memory: 8Gi Requests: cpu: 500m memory: 2Gi Environment Variables from: blue-card Secret Optional: false Conditions: Type Status PodScheduled False Tolerations: legacy-ci:NoSchedule op=Exists oncall=true:NoSchedule Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 7m12s default-scheduler 0/412 nodes are available: 412 node(s) didn't match Pod's node affinity/selector. Warning FailedScheduling 3m4s (x63 over 237d) default-scheduler 0/412 nodes are available: 412 node(s) didn't match Pod's node affinity/selector. preemption: 0/412 nodes are available: 412 Preemption is not helpful for scheduling.
StatusStatus
/status
- 8,853km PHX → HAMkm PHX → HAM
- 236days searchingTage Suche
- 34applications sentBewerbungen
- 30flights this yearFlüge dieses Jahr
ContactKontakt
Apply requires: 1 German employment contractApply 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.Wenn Sie einstellen oder ein passendes Team kennen, erreicht mich das direkt. Personalberatungen sind willkommen. Bitte geben Sie an, ob die Stelle sponsern kann.
+ employment.hamburg # employer = (known after apply)