Balancing Act API

Splitting the monolith of the original system into several components made maintenance on an ever-growing project more easily managed.

The Challenge

After maintaining the original version for some time and keeping additional features hidden in the background, it was evident that the product needed to split out into separate components to provide the best customer value. Consequently, one huge application became many smaller ones, including a Laravel-based frontend experience, a Vue 2 SPA for client management, a Laravel-based backend API to drive all of those interactions, as well as a Laravel-based reporting API and Laravel Nova system administration console. This allowed us to utilize the various skills of our team more effectively, while allowing us to try our hand at building a single-page application.

Learnings

  • Staying on this project for quite some time gave me excellent insight into the needs of the application and provided greater confidence into the logical split made into the individual components.
  • This refactoring included migrating data from the legacy system to the new application, with a completely streamlined database and new API. This was a tricky process that required significant planning, especially around how we handled hostnames and DNS. However, the team accomplished a live roll-out with 0% downtime.
  • Splitting the application into multiple components necessitated that all of those components be considered when adding new features. This actually required a significant cognitive load, but I developed several question lists to weigh development effort against.
  • I was primarily responsible for API development and had to maintain documentation alongside it. I used a Markdown-flavored Ruby-generated site called Slate. The difficult part was never in the tooling, but in being diligent to keep the documentation up-to-date!
  • This API has a comprehensive test suite to ensure API responses across endpoints. This has proven invaluable in maintaining functionality when adding new features or fixing bugs.

Technologies

  • Apache 2
  • Laravel Nova
  • Composer
  • Highcharts.js
  • Responsive Design
  • I18N
  • Webpack
  • MySQL 4/5.x
  • Amazon Web Services
  • php-fpm
  • HTML5
  • Git
  • Twitter Bootstrap
  • Vue.js
  • Laravel 5.7
  • jQuery
  • JavaScript (ES5, ES2015)
  • PHP 7.2
  • CSS3

Duration

About 10 months
(2017 to 2018)

Visit Site