The problem

Running one financial software platform was harder than it needed to be. Domains and certificates sat with third-party IT partners, so simple changes waited on them. Security and logging needed work, the database wasn't ready for content in several languages, and releases involved too many manual steps.

What changed

All of this was done inside the company's own AWS account:

Area Change Why it helped
Domains and certificates Moved to Route 53 and AWS Certificate Manager The company controls both
Security and caching New CloudFront distribution with AWS WAF Better protection for the platform
Logging Server, PHP, Django and application logs sent to CloudWatch Developers can troubleshoot without waiting for DevOps
Database Converted to UTF-8, with new indexes including multi-column ones Multi-language content, faster queries and no duplicate rows
Releases CI/CD on Bitbucket deploys every commit to test servers New features reach testing sooner
Code quality Pre-commit hooks on the Django and React code Errors are caught before review
Developer setup Docker environments and an automatic installer New developers get started much quicker

The result

The company no longer depended on outside partners to change its own infrastructure. The platform was better protected, queries were faster, new features reached testing sooner and bringing on a new developer was much quicker.

Where to start

You don't have to do everything at once. A sensible order is:

  1. Ownership. Make sure domains, certificates and cloud accounts belong to your company.
  2. Protection. Put a firewall and caching in front of the platform.
  3. Visibility. Collect logs in one place, so problems can be investigated quickly.
  4. Releases. Automate deployments to test first, then look at live.
  5. Developer experience. Make it quick for someone new to get a working setup.

Each step makes the next one easier, and each one is useful even if you stop there.

This article draws on work by Syed Quadri, SMART5's director, while working at another organisation. It wasn't a SMART5 client project, so the organisation isn't named.