Daniel Molinard, Senior Manager Technology / Head Of Engineering, Tabcorp
Over the last decade, delivery and technology innovations have profoundly changed the way we implement, test, and support digital products. While these innovations empowered delivery teams to create ever more new high-quality digital experiences, it also created a new set of challenges for large organizations. To overcome these challenges the platform engineers are playing a critical part in scaling and sustaining our delivery model while continuing to deliver high-quality features to our customers.
To understand the role of the platform engineer, it is important to look back at the recent evolution and innovation of delivery, technology and team organization.
• Delivery evolution - not long ago, most organizations used the waterfall delivery methodology. Features would take months or years to implement. Major defects would be found late, resulting in missed delivery dates and budget blow-outs. Large and expensive corrective measures had to be taken late and this meant customers would not get what they originally wanted. Studies such as the Chaos Report by The Standish Group helped measure and quantify the benefits of Agile and Lean delivery methodologies. Early validation of the product in the design phase and building features in an iterative manner means that organizations following Agile delivery methodology can now deliver customer centric products on time and on budget.
• Technology evolution – a decade ago, most new features would be implemented by extending already large monolithic applications. Since then, cloud platforms have given rise to new capabilities such as elastic environments that can be scaled on demand to meet customer loads. The use of cloud platforms helped simplify and standardise how we build and deploy software. Strategies such as API first and containerization of the application meant that new services could easily be created and accessed. This allowed organizations to start breaking the large monolithic applications into smaller micro services. As a result, new products can be built quickly today and are easy to maintain. The reduction in complexity of the application also meant the delivery team could now fully focus on the implementation, testing and validation of their new features.
• Team evolution - the technology and delivery evolutions profoundly changed the team organization and composition. Delivery transitioned from project-based delivery to product-based delivery, where long lived feature teams now organise themselves around a product.
Teams became smaller, down to less than 10 members. At the same time, teams became cross functional, typically including a product owner, UX designer, iteration manager and a member of the testing team. Members themselves became cross-functional, testers pairing with the product owner, and developers during the design phase to shape the solution. Developers also increasingly started to write tests while testers shifted their focus on test automation, increasing the test coverage and improving the quality of the application. All these changes meant that nowadays, many defects are identified and corrected well before the implementation starts. The delivery team also became fully autonomous which further helped accelerate the pace of delivery of new features.
These evolutions meant that the complexity of large integrated systems shifted from the service layer to the platform layer. Today, validating the quality of a microservice is by design simple. Validating the quality of thousands of interacting microservices that produce a unified and consistent customer experience is increasingly difficult. To address this new challenge, the platform engineering team’s main objective is to optimise a software delivery cycle, quality, and performance. This improves delivery efficiencies, accelerating the speed at which we deliver new customer centric products without compromising on quality. The following goals help us achieve this objective.
• Simplify - we strive to simplify our delivery methodology and technology stack. Standards ultimately reduce the operational effort of maintaining large and disparate platforms. It helps define and measure technology and delivery capabilities across multiple delivery teams, putting a strong emphasis on continuously improving and optimizing our delivery and technology standards.
• Industrialize & Modernise - this area looks after automating every repetitive aspect of software delivery, from building, testing and deploying software all the way to measuring software delivery performance and quality. The platform engineer team provide a catalog of services that delivery teams can use and customize. For each service, validation steps are put in place to statistically check code quality, testing coverage, security vulnerabilities of the code and 3rd party libraries. Infrastructure checks are also put in place during the deployment phase to validate new services conform with well-architected practices while an end to end integration validates that new services won’t impact existing ones. This in turns allows the delivery team to quickly develop new feature and products of high quality that conforms to our delivery and technology standards.
• Sustain - optimizing software delivery cycle relies on delivery teams to operate autonomously. In other words, the platform engineering team would fail in its objective if other teams would have to wait for them to build a shared service for them. As such, a key objective is putting in place a culture where the implementation of a new feature, service or framework is not complete until it can be reused elsewhere. This entails good API documentation, well defined non-functional requirements around security, reliability, test coverage and automation. This systemic and consistent approach towards promoting services and tools that benefit the wider organization ultimately help us further optimize our software delivery cycle, quality, and performance.
Over the next few years, cloud-based platforms will only ever grow in complexity as digital organizations continue to grow. At the same time, new industry sectors will undergo their digitization transformation, migrating their legacy application to cloud-platform while modernizing their delivery methodologies and technologies. To ensure the limitations of large monolithic applications do not shift to the platform layer and ultimately negate the benefits of recent delivery and technology evolution, large organizations need a clear strategy to simplify, industrialize, modernize and sustain their delivery practices and technology standards. This will ensure these organizations can deliver ever more high-quality features to their customers and remain relevant in tomorrow’s market.