Ticketing application API

Country: Romania

The customer is a start-up that wants to develop a next generation mobile application for purchasing concert tickets based on musical preferences. The user would connect his social accounts (Facebook, Youtube, Spotify etc) and the application would fetch his musical preferences (bands, artists, events) and match them to a huge musical database in order to identify the user’s preferred musical genres. With that information we could suggest upcoming events in order to sell tickets and other services.

We were contracted for the implementation of the application back-end (REST services). The solution had to be cloud-native, easily scalable and extremely fast. We proposed a microservices architecture based on the Spring Cloud framework and Amazon Web Services . Each service is a Spring Boot application that exposes its own set of features via a JSON API and runs independently inside a Docker container. Docker containers are orchestrated with Docker Compose and installed on an AWS EC2 machine.

The customer wanted to focus all our efforts on delivering working and stable features and we decided together to use as many services from AWS as possible in order to reduce time spent on infrastructure work and invest it in software development. We selected the following AWS services: Route53, Cognito, Elasticache(Redis), RDS (Postgres), EC2, SNS, SES, Load Balancer.

The API was split into 6 independent services:

  • Edge server
  • Service discovery
  • User
  • Events
  • Resources
  • Administration

The team had the following structure:

  • 2 full-stack Java developers (5+ years of experience)
  • 1 senior Java back-end developer (10+ years of experience)
  • 1 software tester (10+ years of experience)
  • 1 Software Architect (15+ years of experience)

Time to completion: 8 months

Budget range: 100.000 € - 200.000 €

Technologies used:

  • Java 11
  • Spring boot
  • Spring Cloud
  • JPA
  • Spring Data Redis
  • AWS EC2
  • AWS Cognito
  • AWS RDS Postgres
  • AWS SNS
  • Docker

In the end the deployment diagram looked like this:

Ticketing application API Diagram