I build infrastructure myself, mistakes included.
Software Engineering student in Berlin with hands-on IT support experience, teaching myself cloud and DevOps engineering one real server at a time — every script written and debugged by hand.
I study Software Engineering at the University of Europe for Applied Sciences in Potsdam. Alongside my studies I support people with their devices — this year I set up and maintained Windows and macOS machines as a volunteer at a university in Uzbekistan — and I build cloud and DevOps projects with Linux, Docker, AWS, Terraform and CI/CD. I write every line myself, so I can explain any of it, not just run it.
Two services on EC2, each in an Auto Scaling Group that replaces failed instances automatically. I terminated a live instance and the ASG activity log shows the replacement being launched (screenshot in the repo).
main a saved plan is reviewed, approved and then exactly that plan is appliedRegistration and login with bcrypt password hashing, JWT access tokens and admin-only endpoints, deployed live with a managed PostgreSQL database. Configuration comes only from environment variables and the app refuses to start without a strong secret key.
Retry-After headerA provisioning script that takes a bare Ubuntu server to a configured, firewalled web server in one run — system updates, nginx, UFW rules, custom homepage. A companion script reports disk, memory, and service status on demand. ShellCheck checks every script in CI.
github.com/MultiCloudEng/linux-server-provisioningDockerfiles written from scratch to containerize a custom nginx server, now hardened: a non-root image, a custom config, a health-check endpoint, and Dockerfile linting plus a smoke test in CI. I went looking inside the running container's nginx config to find out why a file path mattered, instead of just memorizing it.
github.com/MultiCloudEng/docker-nginx-practiceA least-privilege IAM user, configured and then tested against itself: a script tries to stop an EC2 instance, gets a real UnauthorizedOperation, and handles it with try/except instead of crashing. Now a small CLI with pagination, --dry-run permission checks and confirmation before stopping.
Designed and deployed a multi-tier web app with an EC2-hosted app, an RDS-managed database, and Elastic Beanstalk for scaling — including a custom VPC with public/private subnets and security groups, an Elastic Load Balancer to distribute traffic, and Auto Scaling to handle load.