From Molecular Modeling to IT and cloud computing

It’s been already more than a year since I haven’t posted anything here, and the reason for that is, that I switched fields.
Since May 2014 I have been working for the DKRZ, the German Climate Computing Centre, on field cloud computing.

This means, that as I most likely won’t be facing so many molecular modeling challenges anymore, my tips and tricks are going to focus mostly on IT and Cloud Computing stuff from now on.

As in he case of Molecular Modeling, and quantum chemistry/physics in general, the IT field has a lot of tricky tools and concepts which are not so easy to understand. But as in the case of quantum chemistry, once I understand the ideas, I find out that they can be roughly explained in a very simple way…

If you check some commercials or ask some expert in cloud computing, you will probably get the idea that that “Cloud Computing is a corporate solution to bring your company trough a highly successful path towards quality, efficiency and reliability, by reducing the expenses and increasing the profits”.
… Wow! I just made up that sentence, but I still feel like buying (or something), whatever product they advertise in there 😛

Anyway… After one year, I have learned that cloud computing is just an interface to easily create virtual (or even “physical”) machines which can be operated by users.

Before the cloud computing, every time a client or a user needed a new machine, for a http, ftp, MySQL, … or whatever, server, somebody should go there and install the operative system and the software step by step.
With the introduction of the virtualization, many of these tasks were simplified by giving the chance to detach the operative system and the hardware from the physical machine. This way, a machine becomes simply a “file” in the hard disk, which can be moved from one machine to another, backed up, cloned, used as a template, …

But it still requires some Sysadmin to perform these operations, because in principle, giving a user physical or virtual access to the machines were many other peoples stuff is running or stored, is a potential cause of catastrophe. Besides, the user might not be interested in learning how to operate the virtual machine servers (hypervisors), and in case this would be possible, the fact that the regular users could access the machines with root privileges would raise very serious security issues.

Well… cloud computing solves that problem by creating a graphical interface (web based), where the user can create not only the desired customized machines, but also network and storage devices, databases and so on, in just a couple of clicks.

It sounds simple, and so it is for using it as a user. On the other hand, the installation and administration of this service can be really complex, due to the fact that behind this graphic interface there are a lot of independent services which tons of options, which need to be massively interconnected.

One of the most popular solution for cloud computing, is the open source project called OpenStack, which involves many different sub-projects. Each one of these sub-projects takes care of specific task, such as Keystone for identity management, Nova for allocating virtual/bare-metal machines, Neutron for the administration of virtual networks…

Furthermore, putting all these parts together and making them work properly is certainly quite a challenge, and debugging errors can be really terrible, because one needs to know about everything, and the information available in internet does often not help much.

OpenStack involves basically every topic I know on IT, from virtualization to networking, trough network, security, or user software administration… I think I won’t have much difficulties to find interesting topics to talk about 🙂