From Electronic Transactions Over Banking Services To Payment Gateways--Java EE 7 In FinTech
Jakub, please introduce yourself
Hi. I've been a Java developer for almost 10 years now, working mostly with Java EE. Here at Blue Media I'm a Software Architect who tries to stay in touch with the code.
What are you building with Java EE?
We're a company which invents and delivers our own services in so called FinTech. Blue Media is a provider of solutions for electronic transactions and online support--from the automation of home payments to complex, custom-designed electronic banking services. We're building payment gateways and software that helps people move funds from one bank to another. Everything is developed as a service that is integrated with our clients systems
How big is your team?
The team I manage comprises of 11 talented developers who are divided into 4 working groups which are handling modules of our systems. This structure allows as to cope and hand-deliver tasks with great efficiency.
Can you share with us some geeky numbers like e.g. TX per seconds, heap sizes etc -- whatever Java EE devs might find interesting.
Our biggest database hits 150 TX/s running on 64GB of RAM and 16CPUs, we're running our production systems on around 400 virtual hosts
150 tx/s does not sounds a lot. What comprises a typical transaction in your system (DB access, verification, remote communication etc.)?
A single transaction comprises of a few "jumps" between various modules (microservices) each of which usually has it's own database, so the workload is somehow distributed. For example a payment transaction is:
- validate (read conf from db)
- insert into db
- 5-6 updates in db later on (changing payment status, filling up payer data)
- external communication through JMS (internal calls) or HTTPS
- execute settlement (update again)
For comparison our highest throughput system running SMS Gateway (sending authorization messages for banks) has this metric at around 200, with peeks hitting 1000
Are you happy with Java EE so far?
Yes, it's a great environment to work with, provides lots of features out of the box and really simplifies development in a transaction dependent software. Otherwise I don't think I'd have stick to it for so long. I'd really encourage everyone to give it a try and see for themselves how easy it is to do things with it
Which application servers, tools or IDEs are you using?
We're running our systems on JBoss/Widlfy with Postgres as our database and ActiveMQ for JMS. We're trying to stay up-to-date with our app servers as much as we can, but to be honest we're still running few instances of old Jboss 4.2.0. On daily basis we work with Maven, GIT, Bamboo as CI and continuous delivery, Intellij IDEA is out IDE of choice, Crucible for peer code review and pgAdmin. Other tools for task management are Jira, Confluence. We're now trying to move to Docker and experiment with ELK stack which hopefully will help us handle our enviroment even better
How important are standards for you? Does your application depend on application server specific APIs?
We try to stick to standards as long as we can so we usually don’t use anything that is not specified by the core Java EE. This helps us to move to newer versions of the spec and app servers faster. Our systems were first developed using old J2EE, and we've had some trouble moving to later version but since JEE 6 it have been definitely easier. Sometimes though it is necessary to write some server specific code like for example when clustering singletons.
Which Java EE APIs are you using in your products?
JPA, JMS, JAX-RS, Bean Validation, JTA, EJB, CDI
Take a look at the Java EE 8 APIs. Which of the APIs are most interesting / important to you?
From the new features I'd go with JSR 107
As for existing things JMS 2.1, JAX-RS 2.1 and CDI 2.0 since we heavily use them in everyday development
Can you share any resources (blogs, etc feel free to promote yourself) with us?
On of my favorite places lately is HackerNews where you can find useful and interesting stuff happening in and our development world. Comments sections is really great here as well. I also like to read DaedTech which is more of a developer-philosophy blog than a technical one.
Is Blue Media hiring Java EE developers?
Yes ! If you are Java JEE developer or someone who is passionate about new technologies come and join Blue Media! We come from all places and backgrounds but we all share a passion for the future
Jakub, thank you for the interview!