To serve around 2 million monthly users, the system must be built to be scalable. Following the common microservice architecture, the system was divided into small loosely coupled services, and each of these services was run in its own Docker container so that each one can be scaled independently. There is one service for the core functionality of the application, and separate microservices for dedicated tasks, such as push notification delivery and handling of incoming events and notifications.
For hosting, the Amazon Web Services (AWS) cloud platform was selected. Furthermore, the AWS Elastic Container Service (ECS) was used for container orchestration.
From the technical perspective, the microservice architecture decouples the components from each other and allows for implementing all the different components using the technology stack that best suits the needs of the component. Yet, there are also non-technical requirements that impact the system design. To guarantee smooth handover and maintainability after the active development phase, there was a strong incentive to implement the new service using technology that is already used in the verticals.
Like so many complex systems, Oikotie is also built of small, simple and familiar building blocks; when you dive in deep, the technical solution you’ll find is a basic LAMP stack with suitable frameworks and SDKs that are required for the integrations. You don’t need to have years of experience to understand or modify the codebase. In all huge systems, including Oikotie, there is always room for developers with different levels of experience.