How many of the devices in your home depend on their own operating systems or CPUs? For Marianna Tessel, that number is 40!
With the buzz surrounding the Internet of Things building every day, and platforms and devices evolving all the time, it’s clear that the old ways of building and managing software need to be reimagined. That was the takeaway from our latest FutureTalk event in New Relic’s Portland, Oregon, engineering headquarters. But what might these new ways look like? Marianna offered a clue: unikernels. (According to Wikipedia, “Unikernels are specialized, single address space machine images constructed by using library operating systems.”)
Marianna is currently executive vice president of strategic development at Docker, where she’s responsible for evaluating new technologies and scaling Docker’s technology ecosystem. She began her FutureTalk by connecting Docker’s recent explosive growth to the broader changes taking place in the world of application development. In the past, she said, the landscape was dominated by big apps dependent on big servers. Today, the presence of so many different types of hardware and application components—not to mention the difficulties of moving smoothly back and forth between development and testing—leaves many developers facing what Marianna called “the matrix from hell.”
Marianna said that the rise of new factors in application initiatives—containers, microservices, cloud, and DevOps—calls for a new set of tools along with a new way of thinking. In January 2016, Docker extended the breadth of its platform by bringing Unikernel Systems into the fold. But what exactly are unikernels, and how do they work?
Tip of the iceberg
Traditionally, operating systems have adopted what Marianna called “a very holistic approach” to applications. That approach involves an application being run on a kernel, loading functions from a wide range of different libraries—some that it needs, and a lot that it doesn’t. Marianna demonstrated that almost any application really needs to use only the tip of the OS iceberg, not the vast bulk of it hidden underwater.
“Over time,” Marianna said, “you need less and less of the iceberg, and your app becomes smaller and smaller.” By taking from the OS only what you need for your application, and linking it with only the essential libraries, you can make your application highly specialized, very slim, and efficient. This is the essence of microservices, and unikernels can help you leverage microservices to achieve a single, dedicated address space.
With more than 100 libraries established to date, a functional unikernel framework is already in place, she noted, allowing developers to target multiple hardware frameworks without needing to substantially change their app.
There are many other benefits to unikernels, Marianna explained, including more predictable scheduling. A smaller application with less code complexity is faster, more secure, and more inherently immutable. Who doesn’t want to build an application like that?
On the right path
The future of unikernels looks bright, but there is still work to be done. Application Programming Interfaces (APIs), Marianna said, are not currently built to cope with “dust clouds”—large quantities of tiny apps. And many libraries are not yet suitable for unikernel integration. But she is determined to “do for unikernels what Docker has done for containers” by making them usable for, and accessible to, all developers.
“If you’re using containers, you’re on the right path to discover and make the most of unikernel’s potential,” she said.
To see examples of unikernels in action—including a “bitcoin piñata” and fake honeypot nodes designed to attract cyber attackers—watch Marianna’s full FutureTalk presentation in the video below:
Don’t miss our next FutureTalk
For more information about our FutureTalks series, make sure to join our Meetup group, New Relic FutureTalks PDX, and follow us on Twitter @newrelic for the latest developments and updates on upcoming events.
Note: Event dates, participants, and topics are subject to change without notice.