While revamping Yle Areena, it’s been our great privilege to make our mark on the Finnish media giant’s entire in-house software development ecosystem. This award-winning introduction of modern agile practices was made possible by the people at Yle, who were incredibly forthcoming in embracing automated tools and a smart, initiative rich developer culture. Yle Areena is now delivered to production in Docker containers, on Amazon infrastructure. But what else is there to all this?
Why DevOps is the real deal
We like to think the mindset of DevOps comes first. This methodology is hyped as the best thing since sliced bread. Put very briefly, DevOps is the practice of breaking down communication stifling silos between software developers, quality assurance and operations personnel. It works by automating infrastructure to let developers submit frequent changes into testing and production.
DevOps goes hand in hand with goals such as quicker deployments of new features in software to improve aspects such as reliability, security and time to market for entire products. DevOps is an extension of Agile programming, bringing faster feedback cycles from development to operations activities.
In our case, DevOps is very much tied to a using a stack of automation friendly tools, starting with containers. Once you’re accustomed to them, orchestrated containers make it easy to develop and package software for delivery in a lighter approach than using physical servers or virtual machines, such as the ones you can run on VMWare or in on-demand cloud services such as Amazon Web Service’s (AWS) Elastic Compute Cloud (EC2).
Containers reduce complex server systems
Our current breed of automated containers usually provoke references to maritime logistics. Indeed, our DevOps experts have prepared a shipload of tooling. This allows developers to spin out services in 15 minutes, eliminating the need to provision pre-built virtual machines, a jungle of proxy configurations and the slow trickle of DNS updates.
Yle’s Docker containers are stored by Amazon Web Services and put into use on ECS clusters. ECS are special Amazon EC2 virtual machine instances that create an automagic environment just for loading containers.
What this means is that the platform empowers developers to work independently and try out new things, fast. Further AWS products like RDS remove a lot of database housekeeping from the to-do list. For CDN, Cloudfront delivers assets in style. Elasticsearch lets people keep an eye on what’s going on, while Travis-CI automates. Github keeps our code sorted out and neatly organized.
From virtual pets to cattle convenience
The magic of containers on AWS allows developers to tweak and modify software stacks and server environments, but under conditions. Servers are no longer pets, fluffy friends they must look after and share their lives with. Containers, on the other hand, are cattle: industrially duplicated, standardized livestock. If a container stops working, developers can save everything needed for debugging, eliminate the faulty unit and respawn a new one. Disclaimer for the faint-hearted: our industry doesn’t involve living animals!
All this convenience requires a focused mindset of constant automation, documentation and adaption of the tooling and scripting. This prevents our light, safe and up to date containers from growing into grotesque virtual machine pets. So, developers are constantly looking out for old anti-patterns.
The never-ending quest for perfection
Amazon still has a lot to do in terms of making APIs and documentation consistent, even within their individual cloud offerings. Likewise, at the time of writing, ECS is not particularly smart about scaling the number of hosts running containers. Yes, Amazon’s managed container magic still lives within EC2 instances. Although the VM operating system doesn’t get in the way, these instances still need to be poked at when the opportunity arises.
Suffice to say, bookstore behemoth Amazon’s cloud is a complex beast of a distributed system, but one that, when rightly managed, removes a whole host of chores from the day-to-day work of developers. It takes an enlightened operations culture to appreciate that servers aren’t house plants. But this idea lets ops make themselves the curators of tools that free developers from the tyranny of chores. And nobody likes chores, that’s for sure.
Communication that rivals mind reading
Our entire Yle team is based at the Yle campus in Pasila, Helsinki. That’s a huge, sprawling place, so Flowdock keeps us all on the same page. Until we can get mind reading as a service, we need individuals who are efficient communicators of project goals, status, needs and wants. Luckily, that’s exactly the kind of people we have working with Yle.
And like we mentioned in the Yle Areena case, we haven’t done all this alone. At Yle we work as one team with Yle and all their different vendors to get the best results.