JVM-CON 2019 Anatole Tresch: How Not To Build An App
Raw Notes from Anatole Tresch’s session
The talk took several aspects of building enterprise software and for each aspect Anatole shared some bad things, aka anti-patterns from his experience. It was delivered as a “question/answer” framework. The questions resonated with developers.
Management
-
Unrealstic deployment expectations, that ignore and even insult the engineers working on the deployment.
-
Q:
Can't we just build a private cluster in the public cloud
? -
Q:
Where's Benni today
: Not on this project any more.- Not good management of human responsibilities.
The Human Factor
-
Good employees are…
-
Good managers are…
Try not to laugh challenge…
Building on the meme from YouTube.
Some actual code examples.
The System
- Listed the runtime SLA requirements for a system.
Architecture
-
modern Browser based
-
Java
-
Performance better than fat client system
-
Functions as a blueprint for other applications
Architecture decisions
- The decisions made during the development.
Reality check
-
Some problems encountered
-
Spring Boot likes Tomcat standalone, does not behave exactly the same when in JBoss
-
Application monitoring doesn’t work that way
-
Redundant and incompatible security mechanisms
-
One monolithic build for whole project
- Can’t separate the generalized artifacts and the original application
-
Stateless
-
Caused high complexity in the UI
-
Duplication of backend logic on the business-tier. For example: value objects.
-
-
Choice to use subversion
-
Quality and stability problem
-
Huge merge problems
-
Ended up building the git workflow anyway.
-
-
Database
-
Database version not under control of project team
-
Problems with unrelated runtime changes
-
-
Backend
-
Complex OSGi based installation
-
Not scalable 5 parallel users on one instance. Too expensive.
-
Took a couple weeks to get the back end updated to a new version
-
-