Developers built a lot of applications like that some time ago and even present day! These applications are still working and need maintenance. So we see them sometimes and call them legacy. They tend to have a release cycle of once or twice a year, depend on a proprietary application server environment and most importantly have a single database schema for all data. Naturally, you cannot move very fast with such a beast on your shoulders and must have a large team and QA department even just to maintain it.
The next step in the architecture design was the Enterprise Service Bus age. Understanding that changes have to be incorporated into even the oldest and the most legacy applications. We (Java developers) started breaking the huge apps into smaller ones. The biggest challenge was to integrate it all together, so the service bus seemed the best solution.
The change wasn’t that big for the operations teams, as they still have everything under their control and centralized, although it was a much more flexible approach. However, the same centralization that adds value, creates a raft of problems that the engineering team had to solve: most importantly challenges with testing and the single point of failure (SPOF).
We’re now we’re moving even further away from the monolithic apps and towards the trendingbuzzword of Microservices.
Then there’s a number of patterns you can use to organise the communication between your microservices, like the Aggregator or the Chain.
If you’re interested in software architecture and want to try some of the tools and libraries mentioned during the session and the interview, here is a short list with descriptions.
Vert.X
Vert.x is a lightweight application platform for the JVM, supporting Java, JavaScript and Groovy, that’s designed for modern web and enterprise applications. It’s event driven and fully non-blocking, so it’s appropriate for building reactive apps.
WildflyWildFly is the JBoss Java EE certified application server, which is fast, powerful, modular and lightweight. In fact some time ago, when we wrote the Great Java Application Server comparison, the JBoss application server came out on top.
ArquillianOne of the main benefits of having the lightweight application server is that you can test your code your runtime of choice, i.e. your actual application server, without mocked contexts.Arquillian is a brilliant JVM testing platform that can manage external application servers and deploy your tests directly into them. So writing functional or integration tests has never been easier.
Apache CamelApache Camel is a versatile open-source integration framework, which has tons of Enterprise Integration Patterns components implemented and easily customisable. If you ever dreamed of programming by dragging components and putting them together with a mouse, you should look into Camel. It probably won’t do miracles for you, but the common Transport API, DSLs and communication interfaces between components that Camel provides can make life much easier.
Fabric8Fabric 8 is an open-source integration platform for JVM. Think provisioning, automatization, configuration, and management of multiple JVM containers from one spot with a nice UI. It can provide you with a solution for load balancing, failover, monitoring and so forth. Integrations with Docker, OpenShift make it even more powerful and ready to use.
ARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUG
No comments:
Post a Comment