Technologies
Table of contents |
---|
Suggested technologies
Nr crt | Technology | Type | Link | Purpose / Observations | Motivation |
1 | nginX webserver | Webserver | https://nginx.org/ | Webserver - Self explanatory :P | Faster than Apache webserver The only faster webserver is LiteSpeed (but we need to pay for a license.. Maybe later on we will migrate to it :D) |
2 | PostgreSQL Database | Database server | https://www.postgresql.org/ | Database engine used for most data storage | Faster than MySQL or other database engines. Also more reliable when it comes to ACID data |
3 | MongoDB (NoSQL Database) | Database server | https://www.mongodb.com/ | Even though I don't really think it's 100% necessary | Faster data access when it comes to big volumes of data even though I'd suggest using ElasticSearch instead |
4 | Node JS | Serverside technology | https://nodejs.org/en/ | Server side technology, should be easy enough to implement APIs with it | Easy and fast to use, just JavaScript ;) |
4.1 | Restify | Serverside REST-Framework | http://restify.com/ | Making it even easier to implement APIs with it | Even easier to implement APIs with it |
5 | Laravel PHP framework | Serverside technology | https://laravel.com/ | Server side technology, should be used for core module | Has everything out of the box (mailing, database management, redis, oauth, anything you want ;) ) Also, will make core frontend easier to implement and secure |
6 | Lumen PHP framework | Serverside technology | https://lumen.laravel.com/ | Server side technology, should be used for small modules | Really small overhead, easy to implement and learn |
7 | Angular JS | Frontend framework | https://angularjs.org/ | Frontend technology, should be used for all modules | Less data traffic, everything loaded on demand, easyer to cache |
8 | Bootstrap | Frontend (design) framework | http://getbootstrap.com/ | Design framework, should be used to keep unity between all modules | Easy responsive designing, fast learning curve, easy to "hack" |
9 | Chai | Testing framework (JS) | http://chaijs.com/ | JS testing framework specialized on API testing |
Experimental technologies
could be fun to use and learn, but not on main modules (yet ;) )
Nr crt | Technology | Type | Link | Purpose / Observations | Motivation |
1 | Polymer | Frontend framework | https://www.polymer-project.org/1.0/ | Frontend design | Easy to define custom templates and isolating them (see shadow-dom) but could be a pain sometimes :D |
2 | Kong | Microservice Management | https://getkong.org/ | Service discovery+routing, load balancing, user-authentication | Transparent layer in front of every service, makes cloud-dev easier |
3 | Wrapbootstrap | Frontend (design) framework | http://wrapbootstrap.com/preview/WB0N89JMK | Design Framework, might look better? than bootstrap | Forces you to keep Apiary consistent, easy to set up a lot of tests in seconds (just modify the apiary.apib a bit and it runs) |
4 | Dredd | Automated testing framework | https://github.com/apiaryio/dredd | Automated API testing framwork, can turn a apiary description into tests | Forces you to keep Apiary and |
Not recommended technologies
Nr crt | Technology | Type | Link | Purpose / Observations | Motivation |
1 | Ruby on rails | Backend framework | http://rubyonrails.org/ | Server side technology, big overhead in my opinion. Too much magic inside | Easy to implement simple things but would just choke the server(s) if there are too many RoR applications on the same server. Too much config to do to even get the development started |
2 | Python / Django / Tornado | Backend framework | https://www.python.org/ https://www.djangoproject.com/ http://www.tornadoweb.org/en/stable/ | Server side technology, big overhead in my opinion. Could be used for serverside scripts (instead of bash scripts). | Easy to implement scripts for basic functionality on the server (backup, log clearing etc) but I don't think we should use it for the web part :) |