The team conducted an in-depth analysis of the existing code base, documented its specifics in Confluence, and created a migration and implementation plan for them.
Everything we developed was designed from the ground up, having the existing architecture and feature specifics in mind to maintain compatibility. Our goal was to deliver solutions that operate entirely in a cloud environment, where the management of it and its inhabitants is done through well-defined, automated procedures. To manage the development process, we’ve used the KANBAN methodology.
The new solutions were engineered with Amazon Web Services, in particular, EC2, ECS, ECR, S3, Route 53, ELB, KMS, RDS, Lambda, Cloud Watch, and Cloud Formation. The products were developed in Java, based on the Spring Boot framework, focusing on components such as Spring Cloud, Spring Security, Spring WebMVC, Spring Batch, Micrometer, and JUnit. We used PostgreSQL and MySQL databases, while their schema version control was done via Flyway. Where applicable, we have provided REST API documentation in the OpenAPI specification generated automatically by Spring Fox.
To export data from Oracle NetSuite, we implemented an additional adapter layer of RESTlet components written in TypeScript that were migrated to Javascript before deployment in NetSuite. The chosen source code control system was git, along with the git-flow methodology. Once committed, the source automatically went through the unit and integration testing, verifying the solution's ability to run in a container.
The last step in the solution compilation process was a code quality analysis. Upon success, the end product, consisting of multiple Docker containers, was automatically deployed to a staging environment for further testing by engineers and then to Production. The environment was also managed with code and versioned in git - for this purpose, we used a combination of Ansible and Cloud Formation configurations.
Finally, after deployment, all service metrics and logs were monitored by dashboards created in Datadog and alert triggers were set up to notify a specific group of users in case of detected anomalies.