Ex Amazon here. Amazon has some solid principles that often go against popular belief.
- No waterfall-ish process where design is handed down from architects to senior engineers to juniors. The same people do design, implementation, ops and so on.
- Measure everything and always. People are encouraged to define metrics and goals and create dashboards before writing code
- Simplify: decreasing complexity is taken more seriously than in other companies. Do not use a database when you can use a file, or a message passing library when you can use a socket, or 200 lines of code when you can for out to "grep | sort". This can be surprising to new hires.
I'm also curious about this. Reinventing your own serialization and retransmission every time, instead of using proven technology does not sound like "decreasing" complexity. Same goes for using files and grep instead of databases in many cases.
It probably means that if you only need to ping a process from another one (no payload needed or only a handful of case expeceted) you don't have to deploy your last gRPC knowledge. cf. how daemons are managed on Linux
It could allow fine-grained control and vetting of code and configuration.
(and overcome the security disasters called containers and "configuration management")
It's sad that few people understand this.