Expanding our horizons with new and interesting technology.
I have worked with Guidewire for a long time now, and one of the things that has never been up for consideration was architecture. Guidewire Products dictated this. XCenters are based on Java, J2EE, and several proprietary frameworks, such as workflow, messaging, rules, UI configuration, etc. We always use OOTB as much as possible, so architecture decisions are few and far between. That doesn't mean you don't have to use the frameworks correctly. It just means you don't get to choose the frameworks (if that makes sense).
So, a couple of months ago, I got a call from my nephew. He wants someone to build a killer app for a new business (sorry, no spoilers here).
My first thought was whether we should use the Java-based technologies we're all familiar with or whether it was time to unleash our creativity and innovate with new technologies.
At a very basic level, we need a Mobile application, a Web front end, a service layer to provide persistence and some business logic, and a database. We also need security access control, authorisation, and payments.
For the backend, we have a variety of options at our disposal. We could go the Java route and use Springboot and Java in a J2EE container. Or we could use the popular Node.js. We could even consider the trendy Python.
For the database, we could use MsSQL server, which I'm very familiar with or something like Postgres, which has been gaining ground for some time. On the app side we might also use an embedded DB for caching profile information.
For the UX side of things, both the iOS and Android apps and the Website will use the services we created above to communicate with the containers (I'm avoiding the word "servers" as the word "serverless" seems to be all the rage at the moment).
For app's, there are a lot of frameworks for building IOS and Android apps from the same framework. For example, there are React Native, Flutter, and Ionic, to name but three.
That's a complex landscape, and we'll be evaluating the above choices over the next few weeks. The considerations will include :
Ease of Setup
Ease of development
Testing capability
Integration Capability
We also have to consider fashion. We want something that app vendors and their customers are using and the things the universities and colleges teach. We don't want to be at the bleeding edge, just aware of current industry best practices.
For infrastructure we'll decide that once we have the software architecture, but it's probably going to be AWS or Google cloud.
Watch this space I'll be publishing evaluations of the above technologies. I know many people will already be using these frameworks/languages for a number of years and will know what works and what doesn't (and their comments are welcome). But for us who are in the enviable position to be choosing some new toys this process is fascinating.