Skip to content
HJhariom@prod:~$

availableHyderabad, India

Hariom
Joshi

Cloud & Backend Engineer

  • AWS
  • CloudFormation
  • ECS Fargate
  • Lambda
  • Docker
  • GitHub Actions
  • Python
  • Java 17
  • dsa.solved700+
  • codechef4★
  • prepsat.hackathonAIR 28 / 50,000+
  • aws.certifiedCloud Practitioner
  • claude.certifiedDeveloper
build loopmain

shipping for3 Years

About

$ cat engineer.yaml

I own the AWS estate behind a COBOL-mainframe-to-cloud modernisation programme for a Fortune 500 US investment management client. Roughly 80% of the resource footprint across dev, UAT and production is mine to define — CloudFormation stacks, ECS Fargate services, Aurora and Redshift, DMS migrations and the GitHub Actions pipelines that ship them — alongside the Java 17 and Python services replacing the batch workloads we migrate off the mainframe.

Current engagement

Cloud modernisation programme for a Fortune 500 US investment management client — migrating COBOL mainframe batch workloads to Java and Python on AWS. 20-engineer engagement.

How I work

Infrastructure goes into a template before it goes into an account. Anything built with a console click has to be rebuilt with a console click at 3am, so it gets written down, reviewed, and shipped through the same pipeline as the application code.

engineer.yamlread-only
apiVersion: engineer.dev/v1kind: CloudEngineermetadata:  name: hariom-joshi  location: "Hyderabad, India"  region: ap-south-1spec:  role: "Cloud & Backend Engineer"  cloud-infrastructure:    - AWS    - CloudFormation    - ECS Fargate  devops-tooling:    - GitHub Actions    - Docker    - Artifactory  data:    - Aurora    - Redshift    - PostgreSQL  languages-backend:    - Java 17    - Spring Boot    - Pythonstatus:  phase: Running  since: 2023-07-01  replicas: 1  # does not scale horizontally

Stack

$ terraform state list

Grouped the way the account is. Everything on this list is something I have run in production — provisioned, broken and fixed. There is no aspirational tier.

cloud-infrastructure14 resources
  • AWS
  • CloudFormation
  • ECS Fargate
  • Lambda
  • Step Functions
  • S3
  • IAM
  • CloudWatch
  • AWS DMS
  • KMS
  • VPC
  • Storage Gateway
  • Secrets Manager
  • Glue
devops-tooling07 resources
  • GitHub Actions
  • Docker
  • Artifactory
  • Bamboo
  • Splunk
  • Control-M
  • ServiceNow
data06 resources
  • Aurora
  • Redshift
  • PostgreSQL
  • MySQL
  • DB2
  • Spring Data JPA
languages-backend09 resources
  • Java 17
  • Spring Boot
  • Python
  • SQL
  • REST APIs
  • Microservices
  • Shell
  • Maven
  • JUnit

36 resources across 4 parts of the estate

Experience

$ git log --stat --prod

Where I have shipped, most recent first. The numbers lead, because they are what changed by my being there; the detail underneath is what backs them up.

DeloitteSoftware Engineer

Jan 2024 – Present · Hyderabad, India

Cloud modernisation programme for a Fortune 500 US investment management client — migrating COBOL mainframe batch workloads to Java and Python on AWS. 20-engineer engagement.

of the AWS estate owneddev · uat · prod
~80%
EC2 provisioning timedown from 15–20 min
<2m
records per peak runnightly batch jobs
500K
  • Own ~80% of the AWS resource estate across dev, UAT and production — EC2, ECS Fargate, Lambda, S3, Aurora, Redshift, KMS, Secrets Manager, Step Functions and EFS — including least-privilege IAM policies, secrets rotation, and the S3 lifecycle rules that brought spend down.
  • Cut EC2 provisioning from 15–20 minutes to under 2 minutes — around 90% — by profiling and removing non-essential userdata bootstrap commands, shortening every job-execution cycle in the environment.
  • Authored and maintain 15–20 CloudFormation stacks that provision the whole environment, and 30–40 GitHub Actions pipelines publishing build artifacts to JFrog Artifactory.
  • Built the Java 17 / Spring Boot services running on ECS Fargate and the Python services on Lambda behind batch jobs that process 200,000–500,000 customer records per peak run.
  • Delivered an AWS Storage Gateway file share end to end for controlled external access to S3 objects — ServiceNow change requests, Active Directory group provisioning, SailPoint role design and the network configuration behind it.
  • AWS
  • CloudFormation
  • ECS Fargate
  • Lambda
  • Aurora
  • Redshift
  • AWS DMS
  • GitHub Actions
  • Java 17
  • Spring Boot
  • Python
  • Docker
Crystaltech Services Pvt. Ltd.Web Developer Intern

Jan 2023 – Mar 2023 · Remote

Internal tooling for candidate assessment — a browser extension and the cloud APIs behind it.

  • Built a Chrome extension with React and Node.js that automated candidate monitoring, removing the manual proctoring effort it replaced.
  • Wrote the cloud interaction APIs behind it for real-time screen capture and secure storage.
  • React
  • Node.js
  • REST APIs

Projects

$ gh repo list --source

Things built outside the engagement, all of them public — the links go to the source, not to a screenshot.

hariom331/aws-idle-resource-managerbuilding

aws-idle-resource-manager

Non-production AWS gets left running after the work ends, and nobody sees it until the bill does. Fixed start/stop schedules either stop something in use or save nothing, so this measures instead: every 30 minutes a Lambda reads real CloudWatch usage for each managed EC2 instance, Aurora cluster and RDS instance, warns the owner twice, and stops whatever is still idle. Terraform end to end, shipped through GitHub Actions over OIDC — no static AWS keys anywhere.

build plan4 / 8 landed

Next: idle-guard moduleLambda, DynamoDB, EventBridge, SQS, SES, SSM

  • Terraform
  • Python
  • Lambda
  • EventBridge
  • DynamoDB
  • CloudWatch
  • SES
  • GitHub Actions
  • OIDC
design notes

design ruleEvery choice prefers missing an idle resource over stopping a busy one.

one forgotten m5.xlargeper month, left running
$145
to run the guardper month · 6 resources, est.
<$1
static AWS keysOIDC · short-lived creds
0

escalation · per resource

  1. WARNED_1T+0

    Idle on every signal. First warning to the owner.

  2. WARNED_2T+30m

    Still idle. Urgent warning.

  3. STOPPEDT+60m

    Still idle. Stopped once dry run is off — never terminated.

Any activity on a later tick deletes the state row and the countdown starts over. Bringing a stopped resource back is always a human action.

build plan4 / 8 landed
  1. Design documentflow, data model, IAM, rollout, runbookdone
  2. GitHub → AWS OIDCtrust verified from CIdone
  3. Least-privilege IAMCI role policies + Lambda boundarydone
  4. Bootstrap TerraformS3 state bucket, native lockingdone
  5. idle-guard moduleLambda, DynamoDB, EventBridge, SQS, SES, SSMnext
  6. Evaluator + handlersEC2 · RDS · Auroraqueued
  7. Plan / apply workflowsapply approval-gated on mainqueued
  8. Dry-run weekthresholds from real logs, then enforcequeued

design decisions

  • Missing metrics count as unknown, never as zero. A metric that isn't publishing comes back empty, and reading that as 0 is the likeliest way to stop a healthy database.
  • Signals combine with AND, not OR. A jump host sits at 2% CPU while in use; a runaway process sits at 90% doing nothing.
  • The Lambda's IAM policy names every managed ARN, so a logic bug can't reach anything else — and GitHub Actions only deploys, holding no permission to stop a thing.
  • EventBridge delivers at least once, so reserved concurrency of 1 and a conditional write on status_since turn a duplicate tick into a no-op.
hariom331/spender-guardian-repo.monopublic

spender-guardian

AWS cost-visibility tooling: pulls spend per account and surfaces what moved, so a bill that jumps is traceable to the resource behind it rather than to a monthly total.

  • Java
  • Docker
  • GitHub Actions
  • AWS
hariom331/infant-emotion-detectionpublic

infant-emotion-detection

Real-time emotion detection over audio and image input using a CNN, reaching 97% classification accuracy, with REST APIs triggering downstream actions on detected state.

  • Python
  • CNN
  • REST APIs

Contact

$ curl -X POST /engagements

I am mid-programme on a migration I own, so I read more than I reply to. If the estate on your side needs someone to answer for it, that is worth a message — and it will get one.

direct line

Primary

hariomjoshi331@gmail.com

Worth a message

  • An AWS estate that needs an owner rather than a ticket queue.
  • Migration or modernisation work with real constraints attached.
  • A team that ships infrastructure through review, not through the console.
Based
Hyderabad, India
Region
ap-south-1
new requestmailto
POST /engagements HTTP/1.1
Host: hariomjoshi.dev
Content-Type: text/plain
Expect: 200 within 24h

Opens your mail app with the message filled in.