Advice for web application technologies / architecture

Sorry, not sure what category fits my question best.

I decided to start to learn web programming and as a first serious project I want to build a stocks/cryptography portfolio, where user sign in and add their holdings of specific stocks/coins. Users can see the current evaluation of their portfolio, or inspect various types of charts. I would like to host my app in the cloud, so that everyone on the internet can access it. Such sites(with lots of other features) are coinmarketcap.com or coingecko.com .

I have no idea what technologies to use, I know there are plenty of options, so that makes it very difficult for me to make a choice. I would like to use modern but popular technologies, which ideally are relatively easy to learn. I googled for an hour or so, and these technologies were mentioned:

  • Google Cloud Platform: Google Cloud Run, Firebase (+ Firebase Realtime Database, Firebase Realtime
    Database, Firebase authentication)
  • All kind of products from AWS
  • Docker, Kubernetes
  • Angular, React
  • NodeJS, Express
  • Python(for backend)

I’d prefer Google Cloud products over their AWS alternatives. I have some experience with Angular, Docker, Kubernetes, NodeJS + Express, and Python. I have no experience with GCP or AWS, but I think I’d enjoy learning them.
So, what technologies (from the ones above, or others), would you recommend for my basic project ? The project basically needs cloud hosting, user authentication and database storage.

Thanks for your time :slight_smile:

1 Like

If you want to use cloud providers, then AWS or GCP are fine. This is a pretty basic thing. You don’t need to necessarily build a backend at all, you can use the services they provide + an Angular app, it isn’t too complicated (which is good!). If you do make it just Angular, you should likely only need 3 services you mention (auth, storage for static files that can be used for website hosting, a dB) + the JS SDK for whichever cloud provider you use.

You can do this as a Node or as a Python app (a more “traditional” approach) instead of a purely frontend app – then it’s either whichever you’re most comfortable with or which you want to improve skills the most with. Then the type of hosting changes (would be ECS or Lightsail for AWS, can’t remember equivalent for GCP). So not as easy to deploy, but arguably easier to build :man_shrugging:t3:

Docker – I guess might be useful? I don’t use it much at all myself, haven’t been in a situation where it fitted my workflow, may do for yours.

Kubernetes or whatever the Docker equivalent is now seems like massive overkill, in this case it’s overcomplicating things on an industrial scale. You aren’t building a big distributed system

Ever-important note to be careful re costs: what you’re doing should probably go on the free tier no problem, but it’s relatively easy to accidentally rack up costs when trying things out. As an alternative note that this could also be a tiny Node/Python/Whatever app hosted with a database on, say, a Digital Ocean droplet or maybe somewhere even cheaper.

:grimacing: Not heard many people say they enjoyed working with either per se, but good luck: if that miraculously ends up being something you do enjoy them I would seriously look at specialising in stuff related to that – there are a lotta well paid jobs in that area.

2 Likes

Thanks Dan for the long reply :slight_smile:
I wasn’t aware that I don’t necessarily need a backend when using a cloud provider. So could Angular + Firebase be everything I need ?
Your second paragraph also clears some of my confusion. It was not clear for me that if choosing to work with AWS/GPC, I still can / should use a Python or Node backend. You say “the type of hosting changes”. Is there a particular name for these hosting types ? I would like to read more about this topic.

Sorry that bit wasn’t very clear! What I meant is that if you’re using one of the big cloud service providers, the service you’ll use to host the application changes.

For an Angular app, you just need somewhere that can host files – for AWS this is S3, GCP will have an exact equivalent that I forget. You can literally just drop an HTML file (+ CSS + JS) into the provider’s cloud GUI in the browser, check a checkbox saying you want to make it public and you’re off (it’ll need a URL set up as you won’t want the default, but that’s nothing major).

For a Node/Python/etc app, it’s an application that needs to run, not just a bunch of static files, so it would need to be deployed and started up. This being a stupidly common need, both providers have various services to let you do this easily (ECS or Lightsail for example on AWS).

It’s just a different way they get deployed. You don’t need to run anything for the first option, the client just hits the URL, downloads the files and the app works in the browser.

Yep, definitely. Firebase afaik has pretty good auth mechanisms that are easy to set up and use, so it’s likely just going to need those two things.

Yeah, so a lot of what the cloud providers’ offerings boil down to is “we’ll manage this part or all of your backend, you won’t need to set anything up manually, you just need to use our APIs to glue together the services you need”.

It gets called serverless but that’s a weird name: it is most definitely not serverless, just that those servers are controlled by Amazon/Google/MS/etc, and you don’t need to manually set them up and manage them, you just interact with them via APIs. Be aware that this is often not simpler than just building, say, a Node app and putting it on a server somewhere by yourself. It just sorta shifts the difficulty – you now have to figure out how all these services that you don’t control interact with each other, and you’re generally locked into their ecosystem. Which is often fine! It’s just always a trade-off.

Edit: Cloud provider services are super convenient, so use of them is super common. They also have a very large surface area, and tend to be a pain to set up and configure. As you go down this rabbit hole, you’ll find acres of documentation and tutorials and courses and…yeah. It’s a big subject. And there is a lot of money involved if you can navigate their offerings skilfully – vast swathes of the world’s companies sit on top of this infrastructure. Which is why I say that if you do find you enjoy working with them, do dive in and get good, it’s currently a very very useful set of skills to have.

1 Like

Alright, you’ve now made things really clear. Looks like I’ll proceed with taking some Firebase courses, to see what it offers.
Once again, thanks for your thorough answers, you’ve really helped.

1 Like