Eficode has always wanted to work with young and upcoming professionals. This time we had a clear idea what to do!
Eficode has always wanted to work with young and upcoming professionals. This means often working with universities and student teams doing a number of things. In this case, Eficode already had an idea of what to do, which eventually turned into the Eficode DIY Server Challenge.
Somewhere back in 2014 Eficode Visa Parviainen, Daniel Suni and Joonas Jauhiainen discussed that would be nice to have a company wide quick and simple sandbox environment automatically available from an external network – for various demonstrations and integration tests. This is when the concept of DIY Server was first acknowledged.
Fig 1. Old DIY Server
The idea behind is brilliantly simple. You are in the middle of development - it is time to try some new technology, push your code to a real server to allow other services to test integration against your code. Then the DIY Server is just what you need.
Just a couple of clicks and within a minutes DIY Server starts a container with the OS that you have selected. The container software that was chosen is OpenVZ (Docker was rather immature back in 2014). In most cases, according to OpenVZ, the end user will not feel the limitations but rather the advantages of lightweight containers, which can be run in dozens on a single hardware. The killer feature was a DNS setup, which allowed external http access containers (here you go - in house Web Servers).
As it is clearly seen from figure above the original UI was rather simplistic. It served well, though. I have tried it and it is rather usable and easy to navigate. I can assure you that the underlying back-end code is pretty basic as well, the whole project was more of a proof of a concept. And this is the point when in the early 2015 Eficode hosted an Innovation Project course at Metropolia University of Applied Sciences.
30th of January of 2015 was an official starting point for Eficode DIY Server Challenge 2015 (e.g. innovation project).
I was one of the students who participated in the Eficode challenge as a team member together with Roman Dunets and Yevgen Zinchenko.
On the above mentioned presentation Eficode presented the list of requirements and suggestions, which should had been taken into account when developing our own implementation of DIY Sever, which we later called “Web-based Virtual Machine Manager”, which is not even technically correct because we were actually managing containers. Eficode suggested RESTful API written in Spring or Play type of a backend, Frontend in AngularJS and SQL type of DB.
At a time, most of these technologies were pretty mysterious to our team. So, we had had a very long way to go in the next few months.
All three of us worked hard to deliver our project we named “VIS” (virtualization innovation solutions). Mid May 2015 we had a final presentation at Eficode office showing what we have managed to achieve. By the way, at first there was a second group of students participating in the challenge, which, however, has not managed to deliver a final product.
Figure 2. VIS Server List page
The above screenshot displays the main page of a UI, where all the current containers (servers) are shown. New UI basically has the same functionality as the previous one but new visual look is much more user friendly. By the way, as this challenge was a part of school project there is a corresponding academic paper. For more information on Design and Front-End architecture, please, checkout sections 3.4 and 4.3 in the academic report.
Figure 3. General Structure
Figure above displays the general architecture of VIS project. Both Back-Ends are written in Java. This would all have been very typical if not a second “Host Back-End”, which manages the OpenVZ containers on request from Web Back-End via Bash scripts. Those scripts, as well as most of original DIY Server were contributed by a fellow Eficodean Daniel Suni. For more information on VIS structure, please, refer to project reflective report.
Eficode was very happy with our work and many team members were eventually hired by various affiliated companies. A plan was also hatched for further development of the concept, but more on this in the next chapter.
What was next?
Back then in 2015, I was not an Eficode employee, rather just a student at Helsinki Metropolia Ammattikorkeakoulu. But today in the summer 2016 I have been working in Eficode for some months. And as it turns out - summer is a pretty relaxed time in Finnish consulting. Therefore, I got this project back. But some history first...
It has been a year after anybody touched a single line of code in the project. There was a plan to further develop the project and three of us were welcome to keep in touch with Eficode in order to do so (back in 2015). But after a summer time it did not quite workout - one of us got a job and the rest had a new academic year to come with all its new challenges.
Therefore, project was frozen in its state as of Spring 2015. It needed to be revived, a bit refactored and put into public GitHub repos. Back in 2015 I was responsible for Front-End, so I have largely refactored and improved it (now I have a year of Web experience behind me).
In addition to the frontend, which I was responsible for, the VIS project consists of a DB and Web Back-End as well as Host Back-End. Front-End, Web Back-End and Db are now a part of VIS Web repo and Host Back-End is a VIS Host repo, all available on Eficode’s Github.
The project is very easy to set up now. VIS Web can be run with Docker with only one step that needs to be done manually. Compile Java Back-End and simply run Docker, everything else is set up (for more details check README in VIS Web).
VIS Host is a bit more complicated. OpenVZ, which we use for containers, requires CentOS for best performance. Therefore, Host Back-End needs to be run on CentOS. This issue is resolved with Vagrant VM running official OpenVZ box and provisioned with Ansible. You can read more details in VIS Host README file.
Concluding this part, we can clearly state that the project is ready for open source. It is working and relatively easy to set up.
Containerization and virtualization is a huge trend in IT, which is no secret. VIS, which now stands for Virtual Instant Server, set a goal of providing a system for in house container system, which would be easy to control and quick to deploy. VIS, even though it is still rather basic, is a good start for anybody that is looking to catch up with containerization trend.
There is a very good chance that VIS could be developed into something bigger, have support for Docker or… (we are not sure ourselves). We hope that you will give a shot and try VIS because once you have experienced the benefits of containers, which are flexibility, control, scalability and ease of use; it will be difficult to understand how you have managed to survive without them.