Python is a great programming language for implementing large-scale cloud-based software, as we saw in our post about Dropbox. Python’s strengths—fast and easy prototyping, scalability, extensive built-in collection of modules, and a comprehensive of ecosystem of third-party packages—make the language very useful for developing cloud software products.
The same is true for the software that makes the cloud work. In this article, we’ll take a look at Openstack, which is a very popular cloud infrastructure as a service (IaaS) software package.
What Is OpenStack?
OpenStack is a large project comprised of many smaller, tightly integrated software programs which all have the end goal of abstracting, provisioning, and managing a datacenter’s virtualized resources. These resources make up the infrastructure which forms the foundation which supports cloud-deployed software.
Actually, it’s more accurate to say that OpenStack provides not only the foundation, but also the plumbing, connection to the electrical grid and internal wiring, ventilation, air conditioning, parking, door locks, and the driveway access to the nearest road. . . all in a programmatic way. As this post from Linux and open source software vendor Red Hat’s OpenStack blog puts it,
“OpenStack is an Infrastructure-as-a-Service cloud management platform, a set of software tools, written mostly in Python, to manage hosts at large scale and deliver an agile, cloud-like infrastructure environment, where multiple virtual machine Instances, block volumes and other infrastructure resources can be created and destroyed rapidly on demand.”
OpenStack originally started as a joint open source project between NASA and Rackspace which was launched in 2010, but has since surged in popularity, code contributions, and adoption across industries.
Integration and Abstraction
Most of the software tools which make up OpenStack are written in Python, and while Python has great compatibility across operating systems (OS’s), a lot of the growth of OpenStack is due to the support of the major Linux vendors: Red Hat, Canonical (the company behind the Ubuntu distribution), and SUSE. Heck, even Oracle supports it on Solaris, a proprietary UNIX-based OS.
Of course, that support is driven by business realities: the cloud is growing, and those companies who can solutions which combine the flexibility and scale of the cloud with simplicity of provisioning and configuration—OpenStack’s main role in the cloud ecosystem—will reap dividends for years to come, and may even rival Amazon.
This OS vendor support is important because it’s ultimately the underlying services provided by OS kernels which make OpenStack’s magic work, in much the same way that Python programmers utilize the underlying filesystem API of whatever Windows or Linux machine their code is running on when they use Python’s open() function.
Giving developers the power to both abstract away platform differences and yet efficiently integrate with the underlying OS, bare metal, or VM is Python’s forte, and comes handy when implementing critical cloud software like OpenStack.
In our next article, we’ll dig deeper into OpenStack’s use of Python, the relationship between these two large projects and how that connection could change down the road.
Copyright © Python People