Web Architecture 101
engineering.videoblocks.com
engineering.videoblocks.com
For people who are working in non-tech jobs but teaching themselves programming so they can build useful tools for themselves, colleagues and customers, I think there's a big gap in learning tools. Often these ppl can have enterprise users out of the box bc they understand needs and know people, but can only make hackish solutions that are useful but don't scale well or aren't sufficiently secure. These ppl don't have CS backgrounds and don't code for a living, so going straight into docs can be really overwhelming even if it's the "right" thing to do, esp if it's an architectural choice or security issue where the documentation may not be as straightforward
There are so many super simple app tutorials that are an island to themselves that might get your other super simple app going, but they don't even give lip service to any deeper concepts or what is going on the back end.
I have a theory that the volume of basic copy this code type tutorials is because they are really resume fodder.... I've run through some tutorials that are downright misleading IMO, and I could tell that as a noob myself.
I was playing with one recently that I wondered, hey can I make it do X too? But the code was laid out and ran so wonky that it was just easier for me to start fresh on my own. It was a react tutorial and even running it as provided it ran but react was all wtfareyodoing.jpg in the console... right out of the tutorial... come on.
I wish people would quit it with the code tutorials as resume content.
As for security I finished a boot camp recently and I asked about security, the answer "We really don't address security."
I have a networking background so I could see a lot that was missing that folks really should know...but not even given lip service.
Even simpler concepts like structuring and deployment of larger apps, database migration, creating dev, staging and production environments, test development etc would be really useful. These things are important even at low scale, and generally absent from tutorials. Learning this on your own without mentors or CS background creates lots of issues
Not saying you can't or shouldn't do it but it's not surprising that there's not a lot of newbie friendly tutorials for such things.
I'm a mobile dev developing an app that I think I'm going to quit my job for to work on full time. I'm 33 and in over a decade of doing mobile (and front-end web) programming I've never worked on a personal project that showed as much promise as this one has for me, both financially and from a fulfillment standpoint.
However the prospect of wrangling the back-end and all the new things I need to do around deploying, scaling, containers, separation of services: cache, API, queue, DB, and making it all secure on top of that is giving me pause and making me less confident the more I read :(
Initially we had a web server (two actually, to achieve zero-downtime deploys) and a database.
A few months later, we introduced Redis for caching. This was much earlier than I expected we'd need to - these days as soon as a web app gets traction, it starts attracting scammers, spammers, and manipulators who put unexpected load on your system.
Just this week, we've finally added a worker server to run long running tasks. Until this week, Java's brilliant Executors were handling this for us in a background thread.
A Java uberjar, deployed to AWS's Elastic Beanstalk, is an approach I'd highly recommend for anyone wanting to get version 1 of their web app deployed.
I suppose I may be overcomplicating things with trying to do it "the right way" right out of the gate. I guess the "perfect is the enemy of done" saying comes into play here.
For learning web app APIs all I did was search Google Scholar for 'API design' and read whatever was available. Joshua Bloch has a good paper on API design. As for scaling, containers, concurrency ect look at Elixir w/Phoenix framework instead, or Erlang w/Yaws and just run it on a cheap FreeBSD comanaged box or deploy Phoenix to Heroku. BEAM will take care of the scaling. There's books around https://pragprog.com/book/lhelph/functional-web-development-...
If you want to go deeper on any of the subjects he discusses, his references for every chapter are solid and provide a deeper understanding.
Edit: thinkmassive mentioned the Art of Scalability, which I'd also recommend.
The Art of Scalability (2nd edition) https://www.goodreads.com/book/show/25686275-the-art-of-scal...
Building Evolutionary Architectures https://www.goodreads.com/book/show/36308520-building-evolut...
The article above is more about "web architecture".
There is some overlap but DDIA largely doesn't really cover the same topics.
I know a common architecture is JS in the browser making requests to the server and receives JSON and then renders it somehow. Sometime the server renders stuff itself and sends it to the browser, right?
And then there's possibly a database attached to the server.
How does all that work?
If you're only looking for high-level concepts, Crash Course has some good episodes about the workings of the internet.
> Perhaps "Web Scalability for Startup Engineers" by Artur Ejsmont. But I admit I have't read it yet -- I however felt the same as you and started exploring for more resources after coming across this thread.
https://blog.envoyproxy.io/introduction-to-modern-network-lo...
Nicely done and a good share!