Year: 2018 Duration: 1 Year
A project built in Java and Angular for leveraging the Co-billing and relationship between telecommunication services providers (Carriers).
This was the longest project that I went through in CSG International, so far the one that I most learned things, and the one who made me get the highest level that an employee can reach in the performance review of the company.
The project called Outbound Co-Billing and Inbound Co-Billing, where in telecommunications field companies charges their customers for using other carrier network, whom doesn’t have information about this user, so the user’s company has to charge its client and retrieve the money back to the carrier. In the practical field, this is a very detailed and complicated process.
Summarizing, the user upload files from the another carriers, such as csv, xml, xlsx, converting to their common pattern, generating the information for the billing system to charge their customers. The system was built using Spring Boot (Java) in the backend, AngularJS for the frontend and Oracle database.
In the backend part, using a MVC architecture, Spring Boot was being used to serve the static built files of the frontend, Spring Security with a security filter bean that intercepted all HTTP/HTTPS calls validating JWT tokens, Spring Batch for monitoring the background processes, EJBs for configuration beans of the application, JDBC Hikari connection pool for doing the PL/SQL queries and transactions in the database. For the batching processing of tons of information, a complex scheme of abstract classes, interfaces and implementation together with NavigableMaps for best time complexity and performance. The build was handled by Maven, and the war deployed in an Oracle Weblogic Web Server.
The frontend built in AngularJS, with security implementations and directives, leveraging authorisation depending the role of the user, restricting access and imposing rules in Angular Route. The security part stored the session token in the browser cache, and there was an HTTP/HTTPS interceptor the checked the presence of a valid token, before making an HTTP eager call using promises to the backend. Grunt and Gulp was used for building it. Also, i18n was introduced since the start of the project, with customized angular directives.
In the database also I had a lot of work to do, like structuring tables, creating procedures, cursors, triggers, sequences, monitoring the log. As the quantity of data was too high, some tables we had to create indexes and partitions.
We developed, also some CI/CD pipelines in Jenkins for the many environments that we had. Basically I started this project in the first sprints only in the frontend, but after that went through backend and database. The project started with 6 people, but almost of them moved from the project, and in the last delivery and go-live, I had to handle all by myself and went in the client Site in the Colombia, to work direct with the customer.
It was one of the best experiences that I had in my entire professional life, because with every new sprint of the project, I was earning more responsibilities, since that in the final steps I was fully responsible for the delivery of the project, which granted me many new learnings, not only in software development are, but communication, leadership and customer relationship.