How to choose the right technology for your next project
People quite often asking me about technology stack, and where to go with next big project. The answer isn’t simple – it depends. Usually we have couple components which are critical for whole system. If we are talking about web-based solution or any kind of API we have to decide about DATABASE, then we have STORAGE, moving on – some kind of BACKEND service language.
As for today, database choice is pretty straight forward – either SQL or NoSQL. If you go with SQL – definitely MySQL or something coming from this family (MariaDB, MemSQL). Why ? Because is well known, and you can easily scale it out. Just by adding another instances, read replicas and so on. Community support is pretty huge, so you can get help or instructions without any problems. Also – all cloud providers offers their solutions so you have Amazon RDS, Google Cloud SQL – so… whatever you like.
If you go with NoSQL – I have no idea what to advise. So many options. Personally don’t have any good experiences with MongoDB so I would recommend some kind of cloud hosted solution – pretty good list available here: NoSQL Wikipedia. For smaller deployments I recommend TieDot it works pretty well.
Time when we kept our data directly on the server are far gone. Right now we have Amazon S3, Cloud Storage, B2 Cloud Storage or even Azure Storage so the answer is simple – don’t keep your data on the server. Aways use some kind of storage, ideally setup 2 of them with replication with different providers (fe: S3 as a primary a,d Cloud Storage as a second one)
Just wondering how many people would hate me if I say go with PHP. But it’s 2017 – and yes, that’s why you should go with PHP 7. It’s fast enough with deployment, plenty of good devs, great support. It’s easy and cheap to scale (just drop more servers, or faster).
The only way to use PHP – you have to build it, in the smart way – build small services which are working independently. So when the time comes (you reach your 10k, 100k, 1m of users) you can replace some of them with GoLang.
What I’m trying to say – build and deploy fast – and iterate often.
You like what you see ? Leave comment and I will elaborate more.