- Author: Sébastien Mosser (email)
- Version: 2017.09
- Reviewer: Mireille Blay-Fornarino
We consider here a simple case study, the Tax Computation Service. The key idea is simple: creating a service-based architecture to support the computation of income taxes for a relatively small country (i.e., Norway, 5 millions inhabitants).
- Thor is a simple tax payer, working as a software engineer in Oslo, the biggest city of the country; As Thor ...
- I want to receive an email containing my tax return form when my taxes were processed, so that I can know the amount of taxes I paid this year;
- I want to submit my cousin's name to the system, so that I can see how many taxes he is paying this year.
- Anders is Thor's cousin. He works as a farmer living in Fredvang, a small village located inside the Lofoten archipelago; As Anders, ...
- I want my taxes to be handled as a farmer so that I can benefit from the special tax computation associated to this status;
- I want to receive my tax return form by snail mail, so that I can read it without using a computer;
- I want to receive a text message indicating that my tax return was processed.
- Eva is working at Skatteetaten, the Norwegian Tax Administration. She is supervising the tax payment process at the kingdom level; As Eva, ...
- I want to respect the Norwegian law, stating that all processing must be done in an anonymous way;
- I want to know how many tax return forms were processed .
- Camilla is an IT engineer, also working at Skatteetaten. She is ensuring that the computation load will not kill the tax collection process. As Camilla, ...
- I want to supervise the operational system to monitor how the tax processing is going.
- Service development
- Service deployment
- Service testing
- Message broker
- Using asynchronous messages to assemble services;
- Monitoring the broker
- Legacy integration
- Leveraging adapters to integrate legacy systems together
- Service Development:
- Application server: TomEE+
- REST-based service stack: JAX-RS
- SOAP-based service stack: JAX-WS
- Integration:
- Enterprise Service Bus: Apache Service Mix (7.0.1)
- Message Broker: Apache ActiveMQ
- Routing: Apache Camel (2.19.2)
- Storage:
- Deployment:
- Docker Community Engine (17.07.0-rc1)
- Docker Compose (1.15.0)
- Testing:
- Monitoring: