Building Microservice Architecture for scale with Django - DjangoCon US 2022

Learn how to build scalable microservices architecture for your Django application, including considerations for authentication, observability, and service communication, as well as tools and techniques for testing and deploying microservices.

Key takeaways
  • When transitioning from monolith to microservices, it’s essential to divide services along business capabilities and separate development and deployment.
  • In Open edX, microservices are organized into IDAs (Internal Django Apps) and MFEs (Micro Front-Ends).
  • For authentication, consider using a centralized authentication mechanism that can be used across multiple services.
  • To ensure scalability, each service should be independently deployable, and communication between services should be done using APIs.
  • Services should not be tightly coupled, but rather follow the boundaries of the trade-off between coupling and separation.
  • Tools such as cookiecutter and Django REST framework can help with setting up microservices.
  • Using Jenkins or CircleCI for continuous integration and delivery can help ensure reliability and scalability.
  • Microservices require more attention to observability, as monitoring and logging become more complicated.
  • Authentication is a key challenge in microservices, and solutions like JWT and token-based systems can help address this.
  • Service documentation is crucial in microservices, as each service must understand how it communicates with other services.
  • Inter-service communication should be documented through contracts, ensuring that each service knows what to expect from the other services.
  • Testing microservices requires a combination of unit testing, integration testing, and end-to-end testing.
  • Authentication and authorization become more complex in microservices, and solutions like OAuth and JWT can help address this.
  • As services grow, it’s essential to have a scalable architecture that can handle increased traffic and complexity.
  • Microservices require a shift from traditional architecture principles, such as Monolithic and Service-oriented Architecture (SOA), to more modern approaches like Microservices Architecture and Microkernel Architecture.