Abraxas Uses Quarkus For Cutting Edge Tax App
Two things are certain in the life of a developer: Java and Taxes.
For the past 25 years, Java has been the dominant framework for developers creating enterprise applications. During that same time, developers continue to support their respective communities and countries each pay period through taxes.
What do Java and taxes have in common? Java, specifically Quarkus, is the backbone of a new and innovative tax solution developed by Abraxas Informatik AG that is targeted to Swiss government tax agencies. Quarkus made developing the Java-based tax application exciting and innovative for the development team.
Let’s learn a little more about how Quarkus turned the creation of a tax application into an exciting and rewarding project for it’s developers.
The Challenge
Abraxas is the largest provider of integrated IT solutions for the public sector in Switzerland. They made a strategic decision to create a new modular, cloud-native tax solution that could be used throughout Switzerland’s cantons and municipalities to implement tax laws. Each canton and municipality has different rules and requirements for taxing its citizens which posed a unique challenge for the team.
Abraxas formed a specialized group of experts (Team Polaris) to architect, develop, and deploy the tax solution. While the Polaris team is a part of a larger organization, it acts very much like a startup. This provided the team with the ability to identify and implement the best technology for the job in order to meet the needs of their customers.
Abraxas is developing its products with a "cloud first" strategy where the tax application needs to be deployed in a clustered, scalable, secure environment that is browser-based. Abraxas was able to leverage its own cloud platform “Abraxas Government Cloud” which offers a Kubernetes-based cloud solution to its customers.
The Solution
The tax application is cloud-native and flexible so that it can be used by different cantons and municipalities across the country. Quarkus was analyzed against other Java frameworks and platforms and selected to be the backbone for this application because of its performance, efficiency, and developer productivity in a Kubernetes environment.
Architecture
Each customer, whether it be cantons or municipalities, has its own unique requirements and needs. Therefore, each customer has its own clustered Kubernetes environment that is configurable for their specific needs.
The tax application is based on a containerized microservices architecture with each service split up based on the business need. One advantage is that this allows the development team to easily replace a service with different business logic if needed.
Team Polaris provides a flexible distribution environment for each customer including the ability to deploy on private cloud (on-premise) or hosted cloud environments. The Abraxas platform team provisions the cloud infrastructure dependent upon the client requirements. The development teams have the ability to configure their customized environments and deploy their applications. The tax solution is currently in the development stage and is running in both a dev and staging environment with production rollout planned for 2022 with updates and enhancements coming soon after.
-
PostgreSQL
-
Hibernate/ORM
-
Flyway
-
Cache
-
RESTEasy (Jackson)
-
REST Client (Jackson)
-
Kafka (Reactive Messaging)
-
Health
-
Metrics (Micrometer)
-
OpenAPI/Swagger
-
OpenTracing
-
Scheduler
-
Fault Tolerance
-
Junit5 + Mockito
-
Test H2
-
In-Memory Reactive Messaging
-
Jacoco
Why Quarkus?
Quarkus was chosen over alternatives such as Spring Boot, Micronaut and Helidon. While Spring is the predominant Java framework within Abraxas, the Polaris team chose Quarkus for a number of reasons including its superior performance in a Kubernetes environment.
The team specifically highlighted Quarkus’ performance, vast extension ecosystem, native compilation, and developer productivity tools (live reloading, Dev UI) as contributing factors in the decision to utilize Quarkus.
The Polaris team was also impressed by the Quarkus community especially when compared to alternative communities because of its vibrant activity, release cadence, native compilation capability, and more.
Learning Curve
What learning curve?
Quarkus developers have continually commented how easy it is to understand the framework and create meaningful applications. Developers at Abraxas had the same experience but wanted to take things a step further. They created a custom “Hello, world!” application training project to make it easy for new developers on their team to learn how to implement Quarkus. The project includes PostgreSQL, Kafka and REST endpoints. New developers are typically up and running with the technology within 1-2 weeks which makes it easy to onboard new developers.
What’s Next?
While the first release of the application is slated for 2022, the application will continue far beyond that. Team Polaris is already looking for ways to improve performance, reliability, security, and scalability. This includes things like implementing a reactive architecture for microservices.
From an organizational perspective, the Polaris team is hard at work transferring their Quarkus knowledge and experiences to other groups within the organization through things like internal TechTalks. One of their biggest challenges is overcoming the hesitancy to change to other Java frameworks which often requires a steep learning curve.
Bernhard Lutzmann, architect and backend software engineer on the Polaris project team, said it best: “The learning curve for Quarkus was extremely short. Quarkus has a number of great resources including guides, blogs and a supportive community on Zulip.”
Words of Wisdom
The Polaris team has learned a lot so far on their application journey with Quarkus. They have some helpful advice to others who are considering using Quarkus.
“Developers new to Quarkus often wonder why there are so few questions on Stack Overflow. This is because the main discussion between users and the Quarkus team happens on Zulip. Go there and you will quickly get answers to your questions, often by the Quarkus team directly.” - Bernhard Lutzmann
“When considering Quarkus’ native capability, make sure the libraries that you use are native compatible. The best approach is to stay with the core Quarkus extensions for as long as possible.” - Bernhard Lutzmann, Polaris project architect and backend software engineer
Abraxas is Hiring
Good news for Java developers in Switzerland and beyond. Abraxas is hiring and looking to bring on new team members who are open-minded and not afraid to actively participate. Abraxas encourages its developers to spend time looking at other technologies. If you live in Switzerland or are considering moving there, have a look at their job offerings.
About Abraxas
Abraxas Informatik AG is the largest provider of integrated IT solutions for the public sector in Switzerland. Abraxas connects Swiss administrations, authorities, companies and the population with efficient, secure and integrated solutions and services in the field of information and communication technology.