You are limited to one technology stack • Long build time • Long deployment process • Usually spaghetti code - hard for maintenance • No possibility to seal part of your code • When one module break - the entire builds breaks - all developers are stuck c
specific functionality • Every ms has its own DB \ Schema • Small units of complete functionality • Communication through technology agnostic protocol • API gateway pattern c
environments , you usually use multiple DBS • Postgres, MongoDB, ElasticSearch etc • You use multiple communication patterns between services, such as message buses or HTTP • Using complicated architecture patterns • Ability to scale easily
transporters to multiple technologies • Redis, Kafka, RabbitMQ, gRPC • Support complex design patterns out of the box • Nest supports CQRS and event sourcing with multiple technologies c
ORM - abstraction above DB \ Queue • On DB layer - ORM creates non efficient DB queries that might cause scaling problems • When working with Queues - abstraction will hide reading\writing to queue in chunks
on high scale - you have to get to know all the details of the technology you work with • It might take you more time - but with express you will have more flexibility to do the exact optimisations you need
Blocking IO + Event Loop • Constant amount of threads • CPU Intensive operation will block the event loop • CPU intensive operation that will be off loaded to the worker thread pool will make one of the threads busy for long
it might be hard to optimise in large scales • Write CPU intensive code in Node.js Using worker threads • For Production - always go with dockers + load balancer