While not a perfect fit for all development, agile methods demonstrate themselves to be an effective approach to developing a platform that is both functional and responsive. An agile environment can allow for the rapid turnaround of features and services, ensuring that the end-user gets a great experience that is flexible and current, even “pivoting” when there is an immediate need to fulfill. In this world of Web-based software platforms and the inevitable moves toward more agile cloud-based solutions such as AWS and Azure, there is another challenge that we have to overcome when choosing many commercial platforms over open-source systems: licensing and how to make it work well to match changing performance needs over time, or even over the course of a day.
Traditional software licensing models are often built around traditional capex-style deployments, in which we start with an estimate of the maximum number of users that might visit a particular site or service and design our architecture around the number of servers necessary to service that heavy load. Licensing then becomes applying a specific, named license to those servers, and in some circumstances even to the number of cores on those servers. This is designed to be a progressive approach, as it allows smaller customers to pay less for licensing than larger customers while ensuring that there is sufficient capacity to meet maximum capacity requirements. Managing software licensing as a component of the production environment, along with the risks associated with noncompliance, is an important part of any software development strategy where both efficiency and performance play a role in the quality of the end-user experience.
A new issue comes up, however, when we start considering the way we are able to size capacity for the cloud in that it provides us with a much more flexible way to plan and size our infrastructure — with automation, we can have exactly the right number of servers for the current load that is being experienced, ensuring a great end-user experience as the default without any wasted capacity. For instance, a Website whose load “follows the sun” might start with one server to provide availability to an overnight group of visitors, and then as people start using the servers in the morning additional servers can be turned on, with a maximum number of servers at 2:00 pm (peak time), and then decreasing the number of servers in play until the end of the day when the number of servers is reduced back to one:
The advantage of this system is that, counted by hours, we are able to consume 81 hours’ worth of services (the equivalent of 3.375 servers in cost) but have the performance of 8 servers during our peak time — almost a 60% savings in infrastructure costs! The traditional licensing model would require that we pay software license fees for all 8 production servers, meaning that not only would we be paying for idle capacity, we clearly have a breakdown in the licensing model when we deploy a non cloud-compatible license to a scalable cloud environment, as we would have idle licenses as well most of the time.
A similar approach might work for an online retailer, in which there is an increased need for servers as Black Friday approaches; servers can be added each day by the auto-scaling mechanism in place, meeting capacity needs until after the spike in shopping has ended. While the environment might need 2-3 times the carrying capacity during the peak season, the traditional licensing model would require that the environment be typically idle with excessive servers in place “waiting” for load the rest of the year.
This traditional model is only a win for the holder of the software license — it results in higher, unnecessary costs to the site operator or ultimately a compromise of the performance we provide to the end-user. Certainly, there are good reasons why open source isn’t always going to be the best choice and commercial producers of software should be compensated for the value that they create in maintaining and supporting quality software. But a true win for all parties is a cloud-compatible software licensing strategy, or in plain terms an hourly license (also called “pay per use”) that can match our immediate needs. This results in the vendor being compensated for the increased use of their platform, the Website operator being able to flex their expenses up and down depending upon load, and the best possible end-user experience due to an appropriate sizing of the infrastructure supporting his visit.
So, if you plan on pursuing an agile approach to your software development, funding services and functionality over time, consider the idea of being agile in your infrastructure, funding compute resources based on your needs and those of your customers. This approach requires that you find a platform that matches this model, matching your license consumption to the precise capacity that offers a great experience to your Website’s visitors.