Microservices

Create backend services that are small and focused for increased stability and maintainability...

Often a company's websites, apps, and associated 3rd-party software need to interact with the same data in simple and reliable ways. Web services, which are pieces of functionality typically exposed over the internet, help to meet this need.

Over the years, the approach to building web services has evolved dramatically. We started with Service Oriented Architecture (SOA), which, visionary for its time, put web services at the center of the software ecosystem. While SOA solved many problems, it often led to service layers that were monolithic and thus difficult to maintain.

Microservices Architecture, a more modern approach, includes many of the benefits of SOA while enforcing better scalability and maintainability. At its heart, Microservices Architecture strives to make services small and autonomous. By doing so, companies can change a single service without adversely affecting others.

At Ronin, we've adopted Microservices Architecture and have helped companies build scalable, performant services that teams can maintain with ease. As part of our process for building microservices, and based on our client's needs, we employ a range of modern, industry-standard technologies, techniques and best practices:

  • Representational State Transfer (REST)

    • Leveraging the http protocol to provide service interfaces that are easy to consume.
      Read more »
  • API Gateway

    • A software platform that aggregates microservices and handles common functionality such as caching, security and load balancing. Read more »
  • Asynchronous Communication & Eventual Consistency

    • An approach to handling communication between microservices without creating direct dependencies. Read more »
    • Often involves queueing technologies such as Kafka, AWS SQS or Azure Service Bus.
  • Database Per Service

    • Creating small databases used only by the microservice to ensure autonomy. Read more »
  • Hypermedia

    • A technique for making service endpoints discoverable, similar to hyperlinks on a web page. Read more »
  • Containerization

    • Technology that serves to isolate all dependencies of a microservice into a single unit.
      Read more »
    • Docker is the industry standard.
  • Serverless

    • Cloud-based platforms that autoscale runtime code and handle most of the overhead typically incurred by servers. Read more »
    • An alternative to containerization.
    • Examples are AWS Lamba, Azure Functions and Google Cloud Functions.
  • Load Balancing

    • Technique for distributing the load to a service across multiple nodes. Read more »
  • Rate Limiting

    • Controlling the frequency of requests to a microservice. Read more »
    • Often handled by an API Gateway.
  • Auto Documentation

    • Automatically generating documentation on how to consume a service. Read more »
  • Centralized Monitoring and Logging

    • Providing a single view into a service's health, through a single logging and monitoring dashboard. Read more »
  • Identity Provider

    • A single service to handle authentication into microservices. Read more »
    • Provided by cloud-based services such as AWS Cognito & Azure AD
    • Often used in tandem with API Gateway
  • Versioning

    • Strategies and techniques for introducing changes to a service that are not backwards compatible. Read more »
  • Real-Time Hub

    • Providing real time data using protocols other than http such as WebSockets.

Core Frameworks & Technologies

Below is a list of core technologies & frameworks we use for microservices.
(We are always flexible, however, and willing to learn new stuff!)