Since the backend was fulfilling its most critical role well with merely limited customer-facing capabilities, we started to look for ways to enhance the product without sacrificing its good parts and re-implementing functionality that had been perfected over years of production use. Changes to the backend would be tedious and come with risks. Then again frequent improvement cycles were actually requirements for the customer-facing functionality so separating these needs and concerns would be ideal.
Gasum and SC5 agreed to undertake a proof-of-concept project to validate our hypothesis that the backend could be apified, i.e., that it was possible to develop a standard REST API which would integrate with the backend and open up its functionality for the development of modern customer-facing services – without any modifications to the backend itself. This would come with many additional benefits including separation of technical concerns into easily manageable and loosely coupled components, avoidance of vendor lock-in situations through the use of widely adopted technologies, and flexible and efficient future development paths. The proof-of-concept project was found successful just after two weeks. With the key technical risks out of the way, both Gasum and SC5 were confident to kick-off the actual development project.
SC5’s designers and developers teamed up with Gasum’s specialists with business and IT expertise and conducted an agile development project where frequent checkpoints and real-world feedback guided the efforts towards delivering maximum customer value. The major project milestones were beta release after about four months, limited production release four months later and entirely replacing the legacy system five months after that. The team size circled around three persons, on average, depending on the project phase.
The apification was in practice achieved using serverless building blocks of Amazon Web Services including API Gateway, Lambda functions (ca. 1 million invocations per month), SNS-based communication, S3 storage service and RDS databases. By leveraging AWS Lambda, we were able to target the resources to high-value design and development work instead of ops tasks such as setting up servers, ensuring scalability and reliability, etc. The ops tasks were removed not only from development effort but also operations of the service since reliability and scalability are ensured out-of-the-box by the utilized AWS services. The fully reusable API was accompanied by a static single-page front-end application.