Modern Technology Infrastructure for the Modern Legislature

At Propylon, customer focus is one of our key values as an organization. We are focused on delivering technology solutions that work for our clients – not the other way around.

For over two decades, we have operated at the intersection of those who need to create laws, regulations, and standards, and those who need to manage the impact of change to the regulatory framework.

Over the last few years, there have been more bills, larger documents, and more changes than ever before. We have experienced significant growth from private sector clients as well as state legislatures and governments globally looking to modernize their systems.

In meeting the demands of our growth trajectory, we are increasingly encountering scenarios where we need our platform to be more responsive to changes in its usage.

Virtualized infrastructure served our purposes well, allowing us to deliver solutions that meet the needs of our clients. But in order to deploy more effectively, we needed to move to a more modern approach that would meet new demands on our system.

The benefits of moving to a containerized infrastructure became increasingly apparent.

Over the last few years, there have been more bills, larger documents, and more changes than ever before.

Optimizing system performance

Ahead of any project with a client, we perform rigorous analysis to understand all the consumers of a system. Further, if a system is integrated with other systems, we need to ascertain how often that integration interaction takes place. This informs our initial estimation as to how big or small the machines will have to be in order to keep up with demand.

A limiting factor of virtualized infrastructure is that it only allows for a static definition of capacity to be determined in terms of traffic and system usage. It is difficult to allow for the typical peaks that occur as part of the day-to-day business of the clients we serve. As a result, systems are often sized in accordance with the peaks and then tweaked after they go into production. What this means is that outside peak usage, systems are often over-resourced and near idle, waiting to respond to the next traffic peak.

Our approach to solving this in the past involved the use of auto-scaling VM groups using VM snapshots. The challenge with this approach was the amount of time it took to create and provide additional VMs to meet the increase in demand. There was also a management overhead in ensuring that the snapshot is up-to-date and not starting an older version of the system alongside a more recent version.

A limiting factor of virtualized infrastructure is that it only allows for a static definition of capacity to be determined in terms of traffic and system usage. It is difficult to allow for the typical peaks that occur as part of the day-to-day business of the clients we serve.

Moving our applications to containers

Our approach to moving our applications to containers has been incremental. With a wealth of talent and specialized experience on our teams, we knew we would be well-placed to set ourselves up for success.

As the foundation of our platform, we leveraged a serverless architecture from a major cloud provider, meaning there are no physical servers or VMs to manage. This also allows us to benefit from the global scale of cloud compute services when it comes to ensuring that all the resources are ready and available as needed.

We use Docker as the containerization technology and Terraform to automate the creation of the infrastructure. It’s not used when the system is running but it equips us very well for disaster recovery. If there’s ever an issue, we can completely rebuild the environment from scratch in less than 15 minutes.

Benefits

Moving to a containerized infrastructure has numerous advantages.

1. Scalability

We can now very easily maintain a smooth experience for all users of the platform. Containers are lightweight and can start up in a few seconds instead of the minutes required to start up a VM. At critical points in time for our clients, we know we can quickly increase capacity for our service without running the risk of service degradation. On the other hand, we can scale it back down as needed with equal speed and efficiency.

2. Portability

With virtualized infrastructure, when a developer needs to run a production system to get a view of how the application behaves in real life, they would have to configure their laptop or PC in the same way as the server. Containers can bring a high level of portability to the table. They can be run without the need to configure any PCs or install any dependencies. This means developers have a much more realistic environment to work in. They’re not guessing or trying to get access to a cloud environment that’s separate to their own machine and copy code back and forth. It also makes debugging easier.

3. Security profile

As evidenced by our ISO 27001 certification as well as our Cyber Essentials and Cyber Essentials Plus accreditation, security is a crucial factor to what we do at Propylon. Because our containerized infrastructure operates in a serverless platform, we have further reduced our risk profile. There are no servers to patch; we don’t need to ensure that security updates are rolled out to machines, and we don’t have to control and manage access.

4. Cost

As well as removing the need to adjust a system or application after it’s been deployed in terms of capacity, containerized infrastructure utilizes fewer resources.

What’s next?

Moving our applications to containers has been a win-win for us here at Propylon. It allows us to create a nicer experience for our developers and ensure optimal system performance for our clients as we work in partnership to solve their challenges. We are now equipped with a modernized infrastructure as well as the learnings to assist our clients in transforming their own systems.