For our application, there are some needs we have to fulfill. First we have to put the software in some computer, with some operating system. From there on, we have to select the best technologies for our software. We’ve already choose all components and we are going to explain why we choose those in particular.
First we go with the easier and safest: operating system. We choose Linux and GNU. With Linux we have control of every piece of software in the chainblock, from hardware to the more esoteric application or system. We’ll need a great deal of control because we’re going to be exposed to everyone in Internet; for that I think Linux is the way to go.
Linux containers. We are going to see how they work because we’ll need them to simulate the whole thing: high availability, redundant systems, auto scaling, development and testing machines, etc.
The rest is a pile of tightly coupled components. We follow with the storage. Not physical but logical; not file system but database. Why not file system? I think we may change that if we need when we have time to benchmark our system with every component already developed. Database? One that is fast, free and widely used and maintained: MariaDB (former MySQL.) I’ve worked with this database for a long time now and I know it will be enough for the task. If that becomes to big, we always can add bigger systems. (This will come surely with a trade off, but we can’t be completely sure of it just now, so we will use this as our development base and adapt if the product has an impact.)
For the web, AngularJS. I’ve found this to be great, easy, powerful and with an extraordinary development pace. We’ll also develop an app for Android; IONIC will be the technology for this.
Finally the backend: C++. Fast. We need it to be really fast, so we are going to use C and C++. This may seem the more complex thing, but as we’ll see, with modern libraries it will be very easy and fasted than everything.
So here we are; one product and lots of information. Stay tuned!