I’ve always been fascinated with distributed systems. It’s awesome that although we haven’t seen much in terms of increase of processing power, but instead we are moving to multi-core commodity hardware and scaling horizontally across it. When I just started professionally programming, distributed systems just meant you had a handful of programs keeping in concert with each other of sockets, each doing different pieces of the solution. It was a simpler time.
Now, you’re talking about a much more massive scale. I contribute IoT and cloud services like AWS or GCP with the rise of accessibility for making distributed programs easy. There’s also a slew of tools that are awesome and specifically designed for managing distributed systems. Kafka for your messaging, Zookeeper for service management, Spark for Data Science, the list goes on. Even my favorite language, Elixir, is built with distributed systems in mind. But there’s a catch