Backend developers are usually not the ones who talk a lot about their achievements. Nevertheless, their work is incredibly important. The backend part of development is invisible to the user base which defines the work of the whole platform. That is why we took the responsibility to show the stories of our hidden heroes who are so modest that they prefer to stay in the shadow and just do the work that should be done.
We will describe the secret projects our backend experts worked on. We usually can’t show all the details and the depth of complexity because of the legal regulations, but in this article, we will show a fragment of the work done by our backend developers.
1. CRM web application for a car manufacturer
The client needed the support of a backend team with the application for call centre agents. It was the front application that integrates with over a dozen microservices from the corporate ecosystem which act as a data source. The working process was conducted in scrum methodology in 2-weeks sprints. The main responsibilities during this 1-year duration project for the backend developer were:
-
Refine features requested by the client.
-
Assess if there are no obstacles which could block the implementation phase.
-
Split requirements into smaller tasks that could be taken to future sprints.
-
Present them to the development team during estimation sessions.
-
Investigate and fix defects discovered in test or production environments.
-
Implement new features according to the project's backlog and specifications.
-
Document existing pieces of the system.
-
Participate in planning, code reviews, estimation, demos etc.
-
Guide less experienced developers into the project.
In terms of technologies used, the project leveraged a stack that included:
-
Java: The primary programming language used for the backend development.
-
Spring Boot: A Java framework that facilitated the development of the application, providing features such as dependency injection and easy integration with other frameworks.
-
PostgreSQL: A relational database management system used for storing and managing data.
-
Hibernate: An Object-Relational Mapping (ORM) framework used for mapping Java objects to database tables and simplifying database interactions.
-
REST (Representational State Transfer): An architectural style for designing networked applications that communicate over HTTP.
-
Git: A version control system used for managing the source code and facilitating collaboration among the development team.
-
Maven: A build automation tool used for managing dependencies and building the project.
-
Jira: A project management tool used for tracking and managing tasks, issues, and project progress.
-
Bitbucket: A web-based platform for hosting and managing Git repositories, used for version control and code collaboration.
-
Kibana: A data visualization and exploration tool used for monitoring and analyzing the application's logs and performance metrics.
-
PlantUML (puml): A textual modelling language used for creating UML diagrams to visualize and communicate system design and architecture.
-
Flyway: A database migration tool used for managing and versioning database schema changes.
2. VOD - a system providing video on demand for an international client
An online platform combined with multiple µServices that allows users to buy specific content (videos, episodes, seasons, etc) and watch them from the CDNs storage using a custom player.
Also, the layer of admin management was prepared to be able to adjust contents, prepare billing reports and provide customer care. The team of 7 people had many µServices to create from scratch including:
-
playback µServices to provide URI for a stream for an end-user
-
session and terminal µServices to manage user's sessions and terminals which uses to watch the content (prohibition and limitations)
-
user rights µServices to manage the user's entitlements
-
geolocation µServices to allow watching content only from allowed countries
-
order µServices to manage the order lifecycle
-
billing µServices to prepare data needed for billing reports
-
customer care µServices to manage user's problems
Duration of the project: over 2 years and still ongoing
Tools: Java 17, Spring, Spring Boot, MongoDB, Docker, RabbitMQ, Gatling, Swagger, Lombok, Maven, Git, JUnit 5, Mockito, Postman, Kibana, Grafana, Jenkins, Nexus, IntelliJ, Gitlab, Jira, Draw.io
Responsibilities of the team of backend developers:
-
working in a team in developing µServices that are part of the VOD platform
-
defining together with external architects the architecture of the solution
-
learning about business processes and customer needs with an international client
-
participating in scrum events: PI planning, retrospective, refinements, and weekly synchronization with the QA team, etc
-
creating and managing µServices and integrating them with each other using REST/GraphQL/RabbitMQ
-
deploying µServices in many clusters and infrastructures
-
implementing unit, component, performance tests, and also integration tests in Postman scripts
-
preparing documentation of created solutions including all cases on the Confluence and Swagger
3. Application for electric cars
Internal platform for electric cars charging stations allowing user
The platform allows users to find charging station on map and start the charging process.
Duration of the project: 5 months (ongoing)
Position: Java developer
Tools: Java 17, Spring Boot, Hibernate, Liquibase, Postgres, GIT, Maven, JUnit, AWS
Responsibilities: Developing backend service, implementing new features and fixing bugs, writing API tests.
Application for electric car community
Duration: 4 months (ongoing)
Position: Java developer
Tools: Java 17, Spring Boot, Hibernate, Liquibase, Postgres, GIT, Maven, JUnit, Terraform, AWS
Responsibilities: Working in small agile team, implementing new features and integrating with external services, making changes to infrastructure.
4. Green Energy Controller application for managing electricity in the house.
Duration: 10 months (ongoing)
Role: Backend Developer
Tools: Java 18, Spring Boot, Hibernate, GIT, Maven, JUnit, Liquibase, TimescaleDB, AWS (EC2, Lambda, IoT Core), GitLab, GitLab CI/CD, Terraform, Promtail
Responsibilities:
-
Working in a small team, coordinating application details with other teams, developing new functionalities.
-
Communicating with devices located in AWS IoT Core using AWS IoT Core Device Shadow.
-
Creating hooks in AWS Lambda.
-
Communication with the frontend through REST and WebSockets.
5. Green Energy Controller
Project description: solution to manage consumption and production of the electric energy. Including features implemented from scratch like:
-
connecting with AWS IoT to manage physical controllers, read data from them (MQTT, Device shadow), switch some device on/off
-
REST API
-
AWS Lambda - stateless application, which purpose was to verify controller identity in it's setup process
-
setting up whole enviornment from scratch, including AWS EC2, AWS Lambda, Gitlab CI/CD, PostgreSQL with TimescaleDB, Terraform, Promtail, Loki
Duration: 10 months (still ongoing)
Role: backend developer
Tools: Java 18, Spring Boot, Maven, JUNIT, Mockito, Liquibase, AWS
Responsibilities: implementing features, bug fixing, working in a team, defining requirements, testing.
6. Project for the e-mobility startup. The charging system: OICP Adapter, OCPI-CPO Adapter
Time: 7 months
Position: Senior Java Developer
Tools: Java, Spring Boot 3, WebFlux (Reactive), REST
Responsibilities: integrating internal systems with Hubject (eRoaming network/hub) using OICP protocol and with other e-Mobility partners using OCPI protocol, both integrations done as Charge Point Operators (CPO) role, prepared to integrate OICP (Hubject) as e-Mobility Service Provider (eMSP) role.
This is a small fragment of the work done by our backend developers, invisible stars who are always behind the quality and effectiveness of every digital product.