Microservies. Everybody is talking about microservices. Everybody says they do microservces. The definition of microservice architecture is quite broad and vague: functional decoupling into discrete services, hence the number of approaches, with different flavors and implementations is so great - everybody can do microservices differently.

Fact is, not everything needs to stand as autonomous Java applications communicating over HTTP with JSON as a transport language. Different architectures compromises different elements - which is great and show the true flexibility of the approach. However, regardless of implementation there is a set of practices that should be present in all solutions.

What you will learn

During the workshop we will distill, name a couple of patterns for distributed application. Patterns will be named, discussed, analyzed and applied using most common tools available on the Java platform.

The workshop is a combination of hands-on coding exercises (60% of time) with some theoretical introduction to the microservices as a concept (40% of time)

Microservices Patterns

Patterns of distributed architecture covered during the workshop:

  • API Gateway

  • Circuit breakers

  • Load balancing

  • Service discovery and externalized configuration

  • Service orchestration and choreography

  • Consumer-driven contracts

  • Centralized loggings and monitoring

  • Authorisation and security

Training programme

Basics of microservices architecture
  • Different approaches to structuring architecture

  • Monolithic applications vs. microservices

  • Conway’s Law

  • Architecture around business capabilities

  • Decomposing the domain with Domain Driven Design

Designing microservices
  • Smart endpoints and dumb pipes

    • REST services

    • Organizing multiple services with HATEOAS

  • Data decentralization

    • Splitting data for different microservices

  • User interface elements

Implementing microservices
  • REST resources and their representation

    • Designing application entry points and addresses

  • Service registry and managing configuration

  • Testing and versioning services

  • Refactoring monoliths to microservices

Interaction between microservices
  • Synchronous vs asynchronous communication

  • Services monitoring - centralized logging

    • Tracing transactions in distributed systems

    • Business and technical metrics

Get in touch

I’m happy to talk. I can be reached via twitter, linkedin or traditionally through kuba.marchwicki at gmail.com