In a previous post, I shared observations relating to the process of re-platforming a SaaS solution. I was grateful when a former colleague reached out to comment on that piece. He offered that the term “SaaS” was somewhat limiting in this case, and that the principles in the post applied to any number of modern software delivery models. And, because no good deed goes unpunished, I asked him to guest-write an article that topic. Thankfully, he agreed! Chad Massie is highly qualified to opine on the issues encountered when deciding how to utilize cloud services while modernizing the architecture of a SaaS solution. I’m delighted to share his thoughts on this topic on Made Not Found. Thank you, Chad for the post that follows.
For any business, but especially for those providing software as a service, cloud infrastructure offers a tremendous opportunity to drive organizational value. The question is not if a cloud strategy is appropriate, but rather which strategy to pursue and how to ensure that business and user value drive the decision-making. The five observations below were developed over five years of operating a high volume, high availability, cloud native software platform, and though there are several technical take-aways, the most important lessons are the human ones. Those observations and the related reflections on people and teams are below:
There is no single cloud strategy
In ways that can be both advantageous but also challenging, not every software or business will be best served by the same cloud strategy. This provides great flexibility in terms of timing and investment, but it also signifies that time spent up front posing the essential questions, understanding the needs and clearly defining the desired goals, and establishing the acceptable risk profile will pay considerable dividends (e.g., start with why).
The primary question of whether to “rehost” or “replatform” or “rearchitect” has no obvious answer. Each of these approaches has pros and cons — from a technical perspective, of course, but just as importantly from cultural, operational, and business value angles — and all can offer benefits for your organization. A rehosting strategy can help reduce near-term risk but might slow the upside value for an aging application; rearchitecture can provide a path for addressing major technical debt and modernizing the user experience but brings with it more significant complexity and change that may be more than your business or team is in a position to accommodate. Again, understanding your own context and priorities will help lead you to a better decision for your organization. You might determine that experimenting with an application that has a lower risk profile (e.g., an internal application, a non-mission critical platform) or a specific operation (e.g., disaster recovery) is the path that will ensure long term success, or you might determine that an all-in approach is the way to best serve your customers and inspire your staff.
Cloud is a culture (change)
Processes, organizational structure, and technical strategies that were foundational to success in an on-prem or hosted SaaS operation will not necessarily translate in a true cloud environment. The cloud requires a shift in cultural thinking, and as a result, demands a well-considered change management strategy for your team(s). One common theme is establishing a Devops mindset whereby the members of your various technical teams are involved in the full lifecycle of product delivery and support. Another is fostering an environment of knowledge-sharing and a blamefree ethos. The amount of new learning to be performed and the pace of change in cloud technologies require open communication, collaborative work, and “failing forward.” Further, the culture of learning and partnership requisite to success in the cloud extends beyond technical roles; product, marketing, finance, support, and management positions will all see implications to their work and their team interactions as a result of a cloud-oriented strategy. They must be incorporated into the transition planning and energized by the opportunities every bit as much as the technologists.
Patterns are your friend
Similar to the way software and user experience patterns have emerged over time, there exist many proven cloud architecture and process patterns that can help reduce effort and risk while ensuring security and operational reliability at scale. Whether incorporating elements of Amazon’s well architected framework, pillars of great Azure architecture, or Google’s cloud adoption framework — or something else — make use of these cloud patterns to shorten the time it takes to realize benefit for your organization. As with anything in life, though, an extreme position can limit our perspective, and cloud architecture is no different; it is both a science and an art. The scientific patterns and frameworks should be used to help streamline your architectural approach, but their parameters shouldn’t get in the way of your team’s creativity, the practice of experimentation, and applying their unique contextual knowledge in crafting the most valuable solutions for your business.
Instrument, monitor, and automate
Cloud infrastructure and the technologies that have been developed to support cloud-based software lend themselves extremely well to measurement and instrumentation. The fidelity of this information provides exceptional insight into the operations of your technical platform, in identifying issues proactively, and in understanding user behavior. Additionally, since utilization of a cloud infrastructure eliminates the dependence on physical hardware and enables access to on-demand scale, your strategy should push to automate as much as possible. Besides reducing repetitive efforts, automation will diminish the risk of human error and security exposure, increase overall quality, and help in delivering an optimal experience to your end consumers.
The cloud is constant innovation and reinvention
Advancing a cloud infrastructure strategy is an amazingly exciting journey. The dynamic nature of the landscape forces evolution and thoughtful change. As with any sound technology strategy, it demands attention to maintenance, performance, and reliability, but it also provides for reinvention and innovation in manners that did not exist previously, especially for small and medium sized software businesses. Rather than investing large amounts in original R&D, you could choose to utilize your cloud vendor/partner as your R&D arm, investing your resources in making the most of the innovative assets they bring to market while also providing enormous professional growth opportunities to your team. A cloud architecture gives you much more flexibility and a broader range of strategic options than has been historically available to SaaS companies, allowing you to select an approach that best meets the needs of your business, your team, and your customers.
Though the pathways toward a cloud architecture are now much more well-worn than they were several years ago, each software platform and each business is different. Coupled with the reality that cloud technology is a perpetually changing environment, there are no universal strategic approaches that will guarantee success. However, if you start with the right questions and understanding of the business drivers, build a work and communication plan aligned around strategic goals, and advance a team culture that values learning and collaboration, I believe the lessons above are applicable globally and can help ensure that your organization reaps a cloud strategy’s tremendous benefits.