Microservices architecture, RESTful APIs and more
At SAP, working as an Associate Developer straight out of university, I was trained on creating microservices using Java Spring boot and Hibernate.
I worked on projects that involved creating RESTful APIs, integrating with SAP HANA and working on SAP Hybris e-commerce platform.
It was my first experience working in a professional environment and I learned a lot about software development best practices at SAP.
During my time at New Work, I worked on some microservices that were written in Scala using Akka for actor-based concurrency and Play Framework for RESTful APIs.
Most of the services were deployed on the on-premise kubernetes cluster while some were being migrated to AWS when I left. The backend databases for these services were mostly Elasticsearch (ex. Search related services) and Cassandra (ex. Recommendation services).
At New Work, during one of our hackweeks, I worked on a project that involved creating a recommendation backend service using Python and FastAPI.
It also had a frontend written using React that displayed the recommendations. The service proxied the requests to the recommendation services and aggregated the results before sending them to the frontend. Some recommendations were fetched from the backend Cassandra database.
At New Work, I built a service on top of the Qdrant vector database that added some additional functionality like caching, rate limiting and authentication.
The service was written in Rust using the Axum web framework and gRPC for communication with the Qdrant database. The service was deployed on AWS EKS. The service was used by the recommendation backend services to store and retrieve vectors.
At HelloFresh, I worked on a project that involved tracking custom events from our web and mobile clients via one of our backend services.
The clients called the service with the event data and the service would then write the event data to a database table and an outbox table in the same transaction.
An outbox worker would then poll this outbox table and emit the events to a Kafka topic. This pattern ensured that the events were not lost and were processed in the order they were received.
The backend was written in Python using FastAPI and SQLAlchemy and the Kafka schema was managed using a Protobuf schema registry.