Saturday, June 30, 2018

Infrastructure and Technology Changes; Cloud Applications In 2018 and Beyond

Now that the dust has settled and inLeague is able to serve all of our customers at AYSO, we wanted to focus on what decisions we could make to keep our technology both sturdy where it needs to be (inLeague has 99.99% uptime since 2010) while retaining flexibility to adapt to new best developments and best practices in the cloud software world.

To that end, we are undertaking several major shifts in the second half of 2018:

  • Server hosting: Codero "Bare Metal" servers to DigitalOcean "droplets"
  • Server Operating System: Windows 2012 Server to Ubuntu Linux 18.04
  • Application Engine: Adobe Coldfusion to Lucee 

Welcome to inLeague.io

1) Changing our server infrastructure and provider. Since inLeague first "went pro" in 2005 with the addition of its second and third regions in New York, all of our services have been hosted at the company now known as Codero, headquartered across town from us in Austin, TX. We've been very satisfied with Codero, but the industry is moving away from the types of "bare metal" deployments (where we lease physical servers in their data centers) in which Codero specialized. An analogy often used when us geeks get together to talk about this sort of thing is "pets versus cattle":


Historically, our servers have been pets: they have names and regular checkups, and if something happens to them, we drop everything and rush to make them better. They don't (usually) leave us hairballs in the middle of the night, but they also aren't especially appreciative of the trouble we go to on their behalf. More importantly, growth is constrained because it often involves adopting an entirely new pet.

For the last few years, we've seen a sea change toward cattle -- functional but more (if not entirely) anonymous units that are interchangeable; when one gets sick, you still figure out what went wrong, but you get another to take its place right away to minimize downtime and ease maintenance and upgrades.

This being Texas, cattle are of course not interchangeable, and we're imagining that all of our cattle will be longhorns.

If the "cattle" in this analogy are the hardware we use for running our databases and application servers, the software equivalent -- writing our code in such a way that it makes no difference where it's running -- is called containerization, named for the shipping containers that represent a way of packaging software so that it is just as easy to deploy ten of something as it is to deploy one. We have been gradually adapting our software to this model over the last two years, and hope to complete the process by the end of 2018.

As software companies use fewer pets and more cattle, companies like our current host are partnering with larger, "infrastructure-as-a-service" providers like Amazon or Google to re-sell their services. Rather than purchase re-sold infrastructure, we're going right to the source with DigitalOcean and relocating our (now much more bovine) servers to their data centers in New York City. If you've been following inLeague for a long time, you know that we believe in the freedom to choose the best tool for the job; and while we use and depend on many Google and Amazon services in our applications, we didn't want to be locked into their ecosystems, and found DigitalOcean to be a very reputable, popular, and (best of all) affordable solution. To distinguish our updated products, we've secured a new domain name: inleague.io -- this will ultimately succeed most inleague.org sites, but both will co-exist for many years to come.

We'll be sorry to leave Codero behind, and we recommend anybody interested in an Amazon-centric reseller consider them as they've been a wonderful partner for us for a long time.

Current Status: In testing. We are building out our development and deployment pipelines on DigitalOcean. Our new Content Management System will host our first production sites on our new domain, inleague.io, and we will focus on our flagship applications in the Fall after the start of the Soccer season (for inLeague) and the school year (for inRoll).

Windows to Linux: You Can Invite Us to the Cool Parties, Now



2) As of the Summer of 2018, containerized deployments in production are almost always done on Linux. We expect this to change, as Windows Server 2016 updated and Server 2019 both emphasize container support, but for container-based applications today, Linux cattle are the best cattle. Since most of inLeague's technology stack is Java-based, and Java runs on any operating system, this has more of an impact on inLeague's DevOps (Development and Operations) practices than our software. We've been "Windows People" on the server side for fifteen years, but before that, we started out on Linux, so we're coming full circle and restoring our geek street cred with Ubuntu Linux. This change was made possible, ironically enough, by Microsoft's embrace of Linux for their database platform that inLeague has used from the beginning -- SQL Server. Without Microsoft's willingness to let their customers choose the best tools for the job, we wouldn't have been able to abandon Windows Server -- so we part on good terms, and we expect to look at Windows again in the future as we don't expect them to cede the battle for containerization to Linux.

A nice perk with this change in strategy is that we are able to take the budget we were spending on Windows Server licensing and invest it into hardware. This lets us streamline our operations to make every dollar our clients give us to support their business or their league as efficient as possible.

Sayonara, Adobe Coldfusion



3) Changing our application development engine from Adobe's proprietary Coldfusion Markup Language (CFML) to Lucee, the open-source CFML alternative.

While the inLeague code base receives hundreds of updates every year, there is still some first-generation code from the original inLeague application in 2003. This makes our investment in Coldfusion long-lived, but that's not a reason to keep doing something; we can re-write code, but we've always been very careful to avoid technology fads that attract a lot of attention and then fizzle out after a couple of years. For some time now, Coldfusion hasn't been a popular choice for new applications, and a few years back we considered dropping it. Adobe's handling of the product seemed focused on providing support to government and enterprise clients rather than in developing the language or the technology. Fortunately for the CFML world, two things happened around the same time that rescued the language and the development community from the abyss of irrelevance: Lucee became a mature and mainstream product, and Ortus Solutions (makers of the estimable Coldbox, Commandbox, and Forgebox products, among others) took a leading role in the CF community with investments in their own open source platforms, conferences, and generally solving the kinds of problems that the community needed solving -- especially since Adobe didn't seem especially interested in doing so themselves.

The first post on this blog announced our original intention to do this back in 2015, and for some of our software, we got about 95% of the way there. For most everything we do, Lucee was faster and better. Unfortunately, for the other 5%, Lucee just didn't work -- not because it wasn't a good product, but because it's like a different dialect in any language: sometimes you have to say things differently to be understood, and re-writing that 5% would've been a huge investment in what was then still a fairly young product. So we "re-upped" our Adobe licenses for another few years.

Adobe is behind the curve with containerization and the future of the Coldfusion markup language is Lucee and Ortus. We've suspected this for some time, but now we're publicly betting the farm on it.

That's it for the Summer 2018 update -- we'll be back before the start of the season with some details on new features for inLeague and inLeague mobile!