Backend Software Engineer

YeabsiraDereje Alemayhu

I'm a Backend Software Engineer specializing in Spring Boot and NestJS. I build scalable, secure APIs and backend systems with a strong focus on clean architecture, performance, and maintainability.

Salzburg, Austria·Open to roles, including remote

Yeabsira Dereje Alemayhu
Now
Zagoal, remote
Study
MSc Computer Science
Degree
BSc 3.77 / 4.00

Services

How I design a system

I design the system as a set of decisions: who can call it, what the API promises, which changes must succeed together, where the data lives, and which work must not block the response.

Request path

Caller

Entry

API

Contract

Rules

Consistency

Data

Source of truth

Off the request path

Later

After the response

  1. 01/Entry

    Who is allowed in

    A user, another service, and a background job are different callers. Each one gets its own entry and its own authentication. After that line, nothing reaches the database by skipping the API.

  2. 02/Contract

    What the API promises

    The API describes the action the caller needs, not the tables behind it. Validation and permission finish before any rule runs. Callers stay stable when a column changes or a module is split, because they depend on the contract.

  3. 03/Consistency

    Which writes must succeed together

    The business rule lives in one layer, not in the controller and not in the query. I decide which changes commit in the same transaction, and which may finish after the response. A retry returns the first result instead of creating a second record.

  4. 04/Data

    Where the record lives

    The database is the source of truth, picked for how the data is read. Transactions stay in PostgreSQL or MySQL. A read that repeats goes to a cache. Schema changes are versioned, and indexes follow the queries the API actually runs.

  5. 05/Later

    What must not block the answer

    Notifications and calls to other systems leave the request. The record is saved first, and the message is taken from that saved state, so a crash cannot keep one and lose the other. The worker can see the same message twice and still finish once. If that other system slows down, the caller already has an answer, and the service stops accepting more work than it can finish.

01/Experience

Where I have worked

My current role is at Zagoal. Before that I worked at Inspur and Kegebrew.

Current

Lead Backend Software Engineer

Zagoal·Remote

Jan 2026 — Present

I lead the backend for a platform that books stays, activities, dining, entertainment, and transport.

  • Built NestJS services. REST handles the request. Kafka handles work that can run later.
  • Used the outbox pattern and idempotency so a booking is saved once, even when a request is retried.
  • Added circuit breakers, backoff, backpressure, priority queues, capacity limits, and gradual releases.
  • Added trace IDs, health checks, and metrics so we can see what a service is doing.
  • Ran the services with PostgreSQL, Redis, Bull Queue, Docker, and CI/CD on GCP. Neo4j is part of the data layer.
  • NestJS
  • TypeScript
  • TypeORM
  • PostgreSQL
  • Redis
  • Kafka
  • Bull Queue
  • Docker
  • GCP
  • Neo4j

Software Engineer

Inspur·Addis Ababa, Ethiopia

Nov 2024 — Aug 2026

I built and maintained Spring Boot services for an online shop and a port delivery system.

  • Shop services used MySQL, Liquibase, Redis, Docker, and Nginx.
  • Port delivery used PostgreSQL, Spring Cloud Config, and Kafka. I also improved the performance of those services.
  • A second shop system handled live orders and payments, with Redis, Liquibase, and Nginx.
  • Java
  • Spring Boot
  • Spring Cloud
  • PostgreSQL
  • MySQL
  • Kafka
  • Redis
  • Liquibase
  • Nginx
  • Docker

Software Developer

Kegebrew Technology Solution·Addis Ababa, Ethiopia

Jan 2024 — Nov 2024

I built Node.js backends for a housing site, a credit system, and a taxi admin panel.

  • Built the backend for an affordable housing platform and a consumer credit system.
  • Built a taxi booking admin panel that shows live booking data.
  • The screens used React, Next.js, Apollo Client, and Redux.
  • Node.js
  • React
  • Next.js
  • Apollo Client
  • Redux

02/Systems

Systems I have built

A closer look at the main systems from those jobs.

01

Booking platform

Zagoal

Lead Backend Software Engineer

The platform books stays, activities, dining, entertainment, and transport. Each of those is its own service.

Requests that need an immediate answer go through NestJS and REST. Work that can wait goes to Kafka. The booking and the event are saved in the same database transaction, using the outbox pattern. An idempotency key stops a retry from creating a second booking.

If a provider is slow, the service uses a circuit breaker, backoff, and a limit on how much work it accepts. Queues have priorities and capacity limits. Releases go out gradually. We follow requests with trace IDs, health checks, and metrics. The data layer is PostgreSQL, Redis, and Neo4j. Services run in Docker, and CI/CD is on GCP.

  • NestJS
  • TypeScript
  • TypeORM
  • PostgreSQL
  • Redis
  • Kafka
  • Bull Queue
  • Neo4j
  • Docker
  • GCP

02

Online shop and port delivery

Inspur

Software Engineer

Two related systems: an online shop, and logistics for a port delivery system.

The shop services are Spring Boot on MySQL. Schema changes go through Liquibase. Redis is the cache. Nginx and Docker sit in front of the app.

The port delivery services use PostgreSQL, Spring Cloud Config, and Kafka. I also worked on their performance. A second shop system handles live orders and payments, again with Redis, Liquibase, and Nginx.

  • Java
  • Spring Boot
  • Spring Cloud
  • PostgreSQL
  • MySQL
  • Kafka
  • Redis
  • Liquibase
  • Nginx
  • Docker

03

Housing, credit, and taxi admin

Kegebrew Technology Solution

Software Developer

Three products: a housing site, a consumer credit system, and an admin panel for taxi bookings.

I built the Node.js backends for all three. The taxi admin shows live booking data. The screens were React and Next.js, with Apollo Client and Redux.

  • Node.js
  • React
  • Next.js
  • Apollo Client
  • Redux

03/Skills

Tools I use

Spring Boot and NestJS are the ones I use most. The rest is what I use around them.

Languages and frameworks

  • Java
  • TypeScript
  • JavaScript
  • Python
  • Spring Boot
  • Node.js
  • NestJS
  • FastAPI

Data

  • PostgreSQL
  • MySQL
  • MongoDB
  • SQLite
  • TypeORM
  • Liquibase

Architecture

  • Microservices
  • REST APIs
  • Event-driven architecture
  • Distributed systems
  • Service orchestration
  • Caching
  • Asynchronous processing

Messaging and resilience

  • Apache Kafka
  • RabbitMQ
  • Redis
  • Bull Queue
  • Outbox pattern
  • Idempotency
  • Circuit breakers

Infrastructure

  • Docker
  • Docker Compose
  • Kubernetes
  • Nginx
  • CI/CD
  • GitHub Actions
  • GCP
  • AWS

Security and delivery

  • OAuth
  • JWT
  • TLS/SSL
  • MFA
  • Rate limiting
  • GraphQL
  • Git
  • GitHub
  • GitLab

04/Education

Education

I am studying for an MSc in Computer Science. My bachelor's degree finished with a 3.77 GPA.

MSc Computer Science

Oct 2026 — Present

Salzburg, Austria

Paris Lodron University of Salzburg

I started this degree in October 2026.

Bachelor of Science

Aug 2020 — Jul 2023

Addis Ababa, Ethiopia

Unity University

GPA 3.77 / 4.00, Very Great Distinction. For the final project our team built an accounting journal system and received an A+. I worked on the design and the implementation.

Certificates

Java SE and Spring Boot: REST, JPA, MVC, Security, Microservices, and MySQL

Certificate covering Java SE, Spring Boot, REST APIs, JPA, MVC, security, microservices, SQL, MySQL, and JDBC.

Google Cloud Fundamentals: Core Infrastructure

Coursera · October 20, 2026 · Grade 97.91%

Coursera certificate on the core infrastructure used to run applications on Google Cloud.

05/Contact

Get in touch

Email or phone both work. I live in Salzburg and I am open to remote work.

Send a message

Tell me a little about the role or the team.