Discussion about this post

User's avatar
Florian Kromer's avatar

Great post! Most of what you've stated and what you consolidated I fully agree with.

I'd like to add that Memfault provides OTA capabilities for embedded Linux for some time as well (https://memfault.com/embedded-linux).

I've worked with microservice architectures in "embedded backends" as well as in "traditional backends" in the web domain. In my opinion the main difference is the need for and the ability to scale services. In "embedded backends" there is usually no need for scaling services horizontally

(you cannot magically make hardware available in a device) and it's not possible to scale services vertically (the compute and memory resources in a device are fixed). I'd highly recommend to have a look at https://microservices.io/patterns/microservices.html cause it makes it pretty obvious with what complexitiy you have to deal with when developing services in "traditional backends" with vertical scalability requirements (running several service instances concurrently, ensuring reliable communication between them, ensuring business transaction lead to data consistency in error cases). In my opinion the argument that vertically scaling services are more reliable than non-scaling services or modular monoliths is extremly weak. In my experience the opposite was true. In "traditional backends" it makes a lot of sense to apply Domain Driven Design cause business transactions spanning several bounded contexts (services/modular monolith apps) are usual. In case service communication between services in "embedded backends" needs to be reliable and/or data consistency needs to be very good intuitivelly I'd favour remote procudure calls (e.g. gRPC) over messaging bassed busses (using MQTT, ZeroMQ) these days. From experience I can tell that messaging technologies need to be considered with care.

I've used RPC based communication in the web domain with a modular monolith as well. The scalability requirements have not been massive and there was a need for strict data consistency. It worked out pretty well cause the skills and discipline in the team was good.

Expand full comment
1 more comment...

No posts