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 the whole system. If we are talking about a web-based solution or any API we have to decide about DATABASE, then we have STORAGE, moving on – some BACKEND service language.
As for today, database choice is pretty straightforward – 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 quickly scale it out. Just by adding another instance, read replica and so on. Community support is massive so you can get help or instructions without any problems. Also – all cloud providers offer their solutions; 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 positive experience with MongoDB so I would recommend some 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; the answer is simple – don’t keep your data on the server. Always use some kind of storage, ideally setup 2 of them with replication with different providers (i.e., S3 as a primary and 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, smartly – make 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 a comment, and I will elaborate more.