We use the expression "buy before build" a lot where I work but after a conversation with my manager today I found myself wondering what build actually means!
We were discussing possible future integration platform options and looking at different systems and platforms. I found myself advocating for a microservices approach. I was challenging the idea that microservices aren't necessarily a 100% build option and that it could be a mix between home grown and purchased components. Options like Kong and Snaplogic can be thrown in and just assembled in an ad-hoc manor. There is the option to build stuff where there are holes that act as glue, so it's a question of how much glue is rewuired.
We were using my dockPond prototype as our example build option. But thinking this through I am not so sure this is valid.
dockPond is considered the build option because to make it I fired up python and coded it in my IDE. It was built quickly using TDD but even though it's 'coded' the functionality is provided by components I didn't build:
- Configurable gateway - Kong (security etc. can be added),
- Rest services - Flask
- API User documentation (Flask rest plus and swagger UI)
- API Version control - github
- User interface - quasar framerowe (used vueJS)
It was 'built' but it was built out of quite large pieces, and these large pieces provide most of the functionality. I used one complicated coding method (threads) in python to make it work but I am already thinking of a more refined method which would leverage docker and mutiple instances instead. Reducing the actual python code to simply gluing the bits together. I think the TDD approach also added value (Provided by python TDD libraries)
Even Oracle SOA Suite and Mulesoft options don't count as the buy option
As well as everything before can we even consider Oracle SOA Suite or Mulesoft to be the 'buy' option? There is a lot of build involved in SOA suite, I have found that source control is a must for maintenance and SOA suite suffers a lot from a lack of CI/CD options. I haven't seen any integration platform option that would fall into the category of no build required.
What's the point here?
Looking back at this blog even the argument doesn't make sense. I put Snaplogic into the build category when it is clearly something that is bought. Am I talking about the difference between buy one expensive vs assemble lots?
I guess my idea with all this is that buy vs build doesn't really matter. What matters is what skills are required in creating the end product we want. To me the big difference is sometimes the skills you need are in propitiatory licence restricted technologies (Oracle SOA, etc.) and sometimes they are not (Kong, Python, Rest, etc.)