Earlier on, I have posted to get some directions here
At the end we chose Lumen/Laravel due to that time team’s background experiences on php. No one dared enough to take up the challenge to work on functional language. Our database is MySQL RDS, Nginx as web server and using AWS t2 medium to host it (yeah, we are not that big yet).
2 reasons to consider porting Lumen/Laravel
- the current codebase is really spaghetti code. Enhancing is like hacking the code to make it work. Plus the original developer is no longer with us. Painful experience but still work.
- have received feedbacks from our current customers (from our mobile app) that the app is slow. Okay this slow is very subjective as it could be the app, internet speed at that time, infrastructure hosting the API or API stack itself. Till now, I have struggled to gauge (or narrow down the cause of slowness). How do you all measure this? Any tips?
But I have some concerns…
- lumen (part of laravel) comes with really good pagination support out of the box. It’s like magic and can be easily built. I am not sure whether elixir/phoenix has such capabilities.
- lumen/laravel comes with JWT token out of the box too. Auth is plain simple, and with eloquent (laravel version of ActiveRecord) is powerful and easy to use. Not sure about pheonix/elixir.
- The challenge i may face is rejection when comes to speed and productivity. Well Golang is really fast … seen benchmarks (well benchmarks can be bias too, but quite a fair big of big companies using Golang to build high performance APIs) … productivity (coding in lumen and laravel — really easy)
- even the code is spaghetti, shouldn’t we revamp or rewrite the codebase in Laravel 5.4 (or lumen). After all, the team strength is still on PHP.
- How guarantee that the API written in elixir/phoenix can be a lot faster than our current Lumen/Laravel? How can I test between 2 and compare the speed? How do you normally measure such performances? Note, I have used AB (apache benchmark – doesn’t seem to be accurate, hmm…)
- As for the API, I am thinking of going to GraphQL than Rest (just planning). Can Phoenix/Elixir support Graphql?
Note:
- I am thinking to code this port by myself first to compare the speed before pushing this to the team. The reason I am not going with golang route as I really dislike C pointers, couldn’t get that concept to my brain
and the lang is so boring to learn. Learned a bit on phoenix/elixir (3 days back in Nov), quite fun. But I don’t have ruby background, so watching some of the phoenix/elixir screencasts (which elixir community is really geared to move ruby guys to elixir … some of the ruby terminology is just too confusing for me to grasp)
- how the market like for developer salary in Elixir/Phoenix? Not sure I read somewhere recently that Golang is the top 1 for highest paid salary developer. Which means there’s a lot of demands on Golang. It doesn’t apply to me, but I want to ensure there’s a good developer ecosystems on phoenix/elixir too.
Mind to share your thoughts on this.
Thanks.