From a monolithic system to a microservices approach
Why Microservices?
Microservices architecture is a way of building complex software applications as a collection of small, independent services. Each service focuses on a specific business capability and can be developed, deployed, and scaled independently. They are especially well-suited for applications that need to be highly scalable, flexible, and resilient.
Typical characteristics of a microservices design and architecture include the following:
- Unique components: Services are designed and deployed as individual components working together to accomplish a specific function or address a specific requirement.
- Resilient: Services are designed for maximum fault tolerance. A single service failure shouldn’t disable an entire application. This often requires excellent software design and site reliability engineering (SRE) practices, as well as redundant deployment and failover and high scalability techniques.
- API-based: A microservices architecture relies on APIs and API gateways to facilitate communication between components and other applications.
- Data separation: Each service accesses its own database or storage volume.
- Automation: Microservices application components can be many – and can be cumbersome to deploy manually. Microservices rely on automation and orchestration technologies for component deployment and scaling.
Having your system built on microservices achitecture can lead to several benefits. In our opinion the biggest benefit is scalability. You can scale services as needed without affecting entire application. If solution in hosted on cloud environment you can save costs on hosting. Use more resources just at those moments when there is higher traffic or workload for your application. For example, during night resources can be decreases, but during day, when application might be used more, more resources can be used. Nowadays solutions are built using different technologies at the same time. Microservices allows high flexibility to build one application, but you can easily use different technology for each service. Sometimes software might get some errors what causes system to be down. Microservices offers great resilience – if one service fails, it does not break down whole application. When building applications using microservices, different teams can develop several services in parallel and are not blocked by other teams. This leads to faster development cycles.
Our experience
SEB Life and Pension Baltic SE is one of the leading life insurance companies and has the longest experience of working in the insurance sector in Latvia. SEB Life and Pension Baltic SE offers convenient, contemporary and customer friendly services, by providing comprehensive use of insurance options in a wide variety of life situations.
Business challenge: Existing solution was developed long ago and was built as a monolith with various integrations that with time was getting increasingly difficult to extend and keep secure. Required country specific environments.
Solution: SEB Life and Pension Baltic SE launched an IT modernization program to upgrade or rework existing systems to be compliant with modern day development and delivery approaches. Would be easy to maintain and keep secure. The main goal for this system was to create a new solution, that would be microservice based with clear component and responsibility differentiation. Make it future-proof by choosing a modern technological stack that can be easily upgraded to newest dependency versions and would not have security issues. Create new and modern products to offer to the clients.
For the first year, SIA Brīvs together with SEB Life and Pension Baltic SE team, set a goal for development on MVP solution, which requires a monolith solution to be split into business-related components. In 9 months all modules were deployed to a production ready environment. After 3 months new products were launched and offered to the clients.
From a technical perspective, the team delivered core, customer data and files modules. Core module includes classification, translations for UI and different generated documents, process monitoring solution. Customer data module includes integrations with CRM and legacy message queues. The files module is responsible for file storage (agreements storage, claim related documents, payments, reports and document signing) and document generation.