Position: Data Architect (MySQL)
Company: DevShore
Category: Lead
Experience required: 5y
English level: upper

Our **Customer** is working with updating licenses and having courses for the finance departments in different working areas in Sweden, primeraly banks, securities companies, UCITS undertakings, insurance companies, insurance distributors, AIF managers, mortgage lending institutions, and the Swedish branches of foreign companies engaged in equivalent operations in Sweden.

**The team of 3:** 1 Backend Developer, 1 Frontend Developer, 1 DevOps

The old application is developed using a PHP framework called CodeIgniter v 1.7.0 using the MVC architecture. The MVC architecture is mirrored in the database where tables are named after views in the front more than after business logic and data stored.

They are now working on exchanging that application with a Java Spring-Boot driven rest-API as the backend and a React Typescript frontend.

**Environment:**
- The database is MySQL version 8.
- The old PHP app, together with the database and the java rest-api backend is running on virtual servers hosted by a third party.
- The new React frontend is hosted at AWS S3 and fronted by AWS Cloudfront and connects to the Java backend at our virtual servers. It's built and deployed using Bitbucket pipelines.
- The build pipeline for the java-backend is hosted at AWS. The application is built using AWS CodeBuild and deployed at our virtual servers using AWS Code Deploy. 
- Config settings are managed using AWS SSM and are created by AWS Terraform.

The current database was created for the MVC application built on CodeIgniter and so the tables are often 'architected' after the views in the MVC framework and also contain a lot of extra fields needed by CodeIgniter.
Since it has been hard to change the tables and the overall architecture of the database without breaking the application there have been a lot of tables created hosting additional data that logically should have been in one of the old tables.

The old MVC framework is heavily dependent on the architecture of the database and thus it's hard to adapt the database to the new backend without having to do a lot of work in the MVC application.

**The aim is to:**
- Analyze what they need to prepare to be able to upgrade the architecture of the database
- Architect a new version of the database that are reflecting the business needs and the data they need to store to aid the business.
- Build synchronization scripts between the old database and the new one to keep both synchronized for as long as they have the old application running. At least 2-3 years.