A very thoughtful article. I believe that messages are a key concept for successful microservices implementation (and the key concept of OOP that most people miss). For a few years my team has been focused on the following microservices messaging attributes:
- Messages can represent both events and commands and should contain all the information necessary to process them.
- Messages should be self-describing. Message schemas and schema registration/coordination add complexity and should be avoided whenever possible.
- For scalability and performance, messages should be communicated asynchronously (publish/subscribe). Only when compelled by other constraints should they be communicated synchronously (request/response).
APIs are Application Programming Interfaces, are not magical, and have existed since the beginnings of programming. They have always been a necessary mechanism for communication between separate pieces of code. Promoting them as something more is like saying nouns and verbs are keys to human language. Of course they are! But there are great differences among the words of a Shakespeare, a Hemingway, and mine.