Senior Consultant, Java Developer
Norwegian Tax Administration (2012 - present)
I worked on a project for the Norwegian Tax Administration where we modernized the applications stack from a COBOL/PL/SQL-based one to a Java and web-service stack, which later evolved into a RESTful microservice architecture. The project's mission was to collect new tax information, store it and make it available for tax calculations, reporting and other analysis.
- Responsibility of implementing and maintaining the main storage system containing billions of documents with tax information, with focus on resiliency, high availability and high performance.
- Assigned to the team responsible for improving the performance of the whole application suite. Improved the performance of the critical path ten fold by writing code for locating bottlenecks between web services, profiling the hotspots and improving the code, data structures and database interaction, which allowed us to go in production with good margins on performance.
- Created custom tools to monitor the health of our applications, and to get insights on how they are being used and how they are performing.
- Tracked down and fixed low performing queries and optimized them using the correct indices, rewriting, using query hints, and tuning the database.
- Reduced heap memory usage by compressing objects that are currently not in use but which need fast random access using protostuff serialization and snappy.
- Implemented and evolved RESTful APIs through major revisions while maintaining backwards compatibility.
- Wrote extensive test suites with automated unit tests, integration tests, deployment tests, performance tests and backwards compatibility tests.
- Designed and built a clustered search solution using Elasticsearch to efficiently search through terabytes of data. The data was a denormalized view based on several sources, which were updated in near real-time when data from the sources changed. Responsible for managing the cluster through upgrades and implementing techniques to reindex data while achieving high availability.
- Improved the search latency by an order of magnitude by optimizing the queries and routing the search to the correct parts of the index.
Norwegian Labour and Welfare Administration (2011 - 2012)
Worked on the main system which case workers used to process applicants and follow up cases. System was based on an Oracle DB, with both PL/SQL and Java-code accessing it.
- Improved the performance of the system to handle more concurrent users and a faster experience by optimizing the application code, the SQL layer and the database itself.
- Identified time-consuming parts of the application and moved them out of the critical path and onto a queue for asynchronous processing.
- Rewrote parts of the system to be able to scale horizontally. Current system used a single machine and was reaching the limit of what it could handle. We moved piece by piece off to different servers which could be scaled independently to reduce the load on the overloaded machine.
Technologies used: Java, SQL, Spring MVC, JPA, Oracle 11g, PL/SQL, WebLogic, Maven.