3 ms·
Best way to learn is by working with someone experienced. Or just use mature solution like Rails for example it solves most of typical problems and has easy it
by machiaweliczny 4y ago
Best way to learn is by working with someone experienced.
Or just use mature solution like Rails for example it solves most of typical problems and has easy itegrations. If you need more flexibility then maybe Node.js or other ecosystem is better.
Generally theme about architecture is called System Design and there are resources to learn it for interviews/learning purposes but most of it only is applicable at very big scale and you might never need it. Read "Designing Data Intensive Applications" and look into [1] if still interested.
IMO better to invest time into data design/querying (caching) so that you won't think you need some vodoo to handle your traffic. Like 90%+ of sites/apps don't have 1000req/second and this should be handled by Python on Arduino so as long as your DB design is good you are fine.
For async processing it's worth taking a look into Temporal [2] as it looks as promising alternative to job ques and cronjobs.
I can also recommend [3] to learn some cloud patterns
[1] https://github.com/donnemartin/system-design-primer https://github.com/donnemartin/system-design-primer
[2] https://temporal.io/ https://temporal.io/
[3] https://docs.microsoft.com/en-us/azure/architecture/patterns/ https://docs.microsoft.com/en-us/azure/architecture/patterns...
- machiaweliczny 4y agoIf you mean more like code architecture than web services architecture then I can recommend http://aosabook.org/en/index.html http://aosabook.org/en/index.html There's even intro about web services: http://aosabook.org/en/distsys.html http://aosabook.org/en/distsys.html
- call-me-al 4y agoAre there more resources about code architecture in general? I am slightly frustrated since I can only find web service architecture resources when searching for software architecture on Google...
- machiaweliczny 4y agoI don't think there's much as project architecture is domain specific. There's some tricks that's good to know that mostly emerge from language limitations so for novice it's good to learn some language specific patterns: * Ruby [0] * Node.js [1] Then from more stable software except DBs is OS, Compilers and Games: * Games [2] * Interpeters [3] * Computation: [4] * OS: don't really know. Generally if you understand computation, computers/language and your domain you will come with good architecture. I haven't found any shortcuts yet. Fast iteration wins, so optimise mostly for that and ability to swap stuff that doesn't work, so contain crap as much as you can. Pure functions are by definition swappable and easy to test so abuse that. Use domain commands to mutate stuff and not updateEntity(X) and you will be good. Use turnOnEngine(car) instead of updateCar({ engine: true }). Also learn to use Facade[5] pattern -> this one makes gluing things much safer against abuse (limits API surface). It's also good to know about all the things one can optimise for to take decisions more consciously. So like maintainability, reusability, iteration speed, speed of delivery, observability, security etc. Generally search for "How to design programs book/course" for more abstract stuff and "$MyLang patters/architecture book" or check blogs of some high profile software or their devs [0] https://www.goodreads.com/en/book/show/13507787-practical-object-oriented-design-in-ruby https://www.goodreads.com/en/book/show/13507787-practical-ob... [1] https://www.goodreads.com/en/book/show/24514193-node-js-design-patterns https://www.goodreads.com/en/book/show/24514193-node-js-desi... [2] https://gameprogrammingpatterns.com/contents.html https://gameprogrammingpatterns.com/contents.html [3] https://craftinginterpreters.com/ https://craftinginterpreters.com/ [4] https://computationbook.com/ https://computationbook.com/ [5] https://refactoring.guru/design-patterns/facade https://refactoring.guru/design-patterns/facade
- deleted 4y ago[deleted]