SteelEye

SteelEye develops a monitoring and reporting platform dedicated to assist financial organisations in enforcing trade regulations internally and report their activities to the market regulators.

Tech Stack

SteelEye is a young company that tries to make the best of the latest technology and frameworks. The stack I worked with consisted of:

  • Python 3
  • FastAPI
  • Pydantic
  • Elasticsearch
  • PostgreSQL
  • Celery
  • AWS SQS
  • Docker
  • Kubernetes
  • Sentry
  • AWS

My role

My role with SteelEye consisted in developing and maintaining the back-end APIs and services that query and supply the information to the company's ReactJS front-end. SteelEye handles very large amounts of customer's trading and communication data into their Elasticsearch back-end, and this makes the queries run by the API endpoints challenging.

Performance

During the start of my role at SteelEye, the company was using a monolithic API that ran synchronously atop gunicorn despite making use of FastAPI. It was running in a Docker-based environment, with a number of gunicorn worker for each container. This setup was at the origin of a multitude of scaling issues and led to high development and running costs.

An effort to split the API into micro-services was started, and I addressed the performance issues of the existing and new micro-services by migrating their code from synchronous Python to asynchronous; where the best advantage of FastAPI and uvicorn could be garnered. These efforts resulted in lower running costs and simpler development, while increasing the product's reliability.

Mentoring

SteelEye went through an impressive growth as I was working in that position and that translated into expanding the development team. As a senior developer I was given the opportunity to mentor two graduate developers and guide them through the development best practices and processes of the company.

This was vary valuable in revealing the issues in SteelEye's development setup and process, which led me to suggest then implement changes to the git workflow and the technical specification process used in the development team.