Microservices is not an architecture, what you build around the Microservices is the architecture. We ensure the following architectural decisions reflects your requirements.
We apply the Convention over Configuration Approach in order to increase the velocity of your software teams and decrease your software maintenance costs.
Service & Library Decomposition
We decompose your services into finer-grained services, which reflect the functions that your business requires. This also can be done for your libraries.
Polyglot Architecture & NoSQL
Each decoupled Microservice may have its own data model which gives the flexibility to use different Databases like Relational, Document, Column-based, key-value, time-series based on your needs. We help you to choose and integrate the right data store for each microservice.
In a distributed architecture, the ideal way to decompose your business entities and functionalities is to shift them into separate microservices. We comply with RESTful Maturity Level 2+, which helps to standardize the Microservices.
Stateless Authentication & Authorization
Authentication and authorisation management as decoupled functions should be applied in your architecture. We comply with JWT(JSON Web Token) together with API Gateways, preferably Tyk, even with your own Identity Provider if you prefer.
Caching & In-Memory Solutions
Caching reduces reaching time to frequently queried data. There are several technologies like Hazelcast and Redis for caching in memory. Hazelcast, as a Data-Grid, uses a secure networking model to implement a shared caching model. Redis uses a hash based lookup system.
Stream and Queue Processing
Publish/subscribe or queueing messages in a distributed manner is the simple way to communicate your microservices with each other asynchronously. So, it helps to make them decoupled and more responsive by decreasing the load. Kafka and RabbitMQ are the brokers that are preferred by us to implement this design.
These two concepts enable communication between microservices without having to know the location of each other. Service registry updates details of the services, when services go up or down. Service discovery is simply asking service registry the location of the other microservices. We ensure that those are appropriately applied in the architecture.
Orchestration & Choreography
The architecture that you build with Microservices needs several decisions and flows between microservices. There are various reasons you may need an orchestrator but we strongly suggest enforcing a choreographic model which will enable your microservices towards a more decoupled model.
Centralized Auditing & Logging
Centralized monitoring and logging with microservices have several challenges. We will provide you with a centralized way to collect and analyze all of your logs with a standardized way which does not need an additional effort for developers.
Microservices DevOps Culture
In the microservices world, a code change might affect lots of projects. To solve complex deployments and dependency issues, we help you to adapt your workflow in a more automated fashion with the right tools.