My experience in building a product
While working for the current service providing company I have had a oppurtunity for the consecration of a product. The product however stayed in a prototype as a commodity server instead of a full product for consumers. There are however two clients who are using this prototype in their production.
What did we want?
We did not want to
- to install packages
- on a virtual machine
- install multiple virtual machines
- configure the virtual machines
- programming a interface from scratch
Oh, Well! Seeking the solution!
Installing packages?
You can never get away from this. There’s is a way though using someone else’s built containers. We did the latter but it was called Jail templates.
- Jail templates for applications most implemented by us.
Virtual machines.
If you never used virtual machines; These are machines pretending to real machines while running inside real machines. 2016! People still use virtual machines but most of them are ignorant about it because… “Cloud”. With machines inside machines, you’re installing Operating System on machines to run machines that will run Operating System. There are efficient ways to manage a Virtualization setup among which includes never installing a fresh OS everytime you need a new VM, just like a cloud instance. Guess where did cloud got this feature from, From their Daddy!
Now that you have your virtual machines ready, it’s time to configure network interfaces in them.
- Log in to you VMs from hypervisor provided vnc console
- Use you VM like a real machine! So it won’t feel like an android.
- Configure your network for remote access.
- Get it ready for production.
- And it took you 2 weeks to that.
- Profit.
What did we get?
Jails, for our applications.
- Jails contain a root filesystem hierarchy in a directory other than / (slash).
- Jail templates are packaged(archived) artefacts with applications pre-installed
in them within a root filesystem.
- Just map an alias IP from your host machine to your jail namespace.
- Just map a filesystem directory from your host machine to your jail namespace.
The management interface.
We found an open-source Python/Django program that could run system commands and our developers modified it perform tasks that can only be run as root :\ This is going to be a problem soon we did not want our web application running commands as root. Was it really necessary to be that security focused during this beginning? The Plan? Build a daemon which would perform the system commands and provide REST-ful API (It never got done) to any app that may need it. Our web app.
The prototype
- A commodity machine ( Why does the image of a refurbishing workshop comes to my mind ?)
- A highly-available high-performance filesystem, synced with two machines/replicas.
- 3 Application templates
- Client ready for using it.