Source: Martin Sarikov

Agility with Microservices Programming 2020

Agile architecture does not necessarily emerge from the use of agile development practices, it needs to be deliberately sought after. This often means creating systems as sets of small, independent components that collaborate to provide the desired functionality. Such components are usually loosely-coupled and expose well-defined APIs that are accessible over standard communication protocols and data formats – they can be individually developed and tested, they can be easily replaced by alternative implementations if needed, and they provide great flexibility when deploying and scaling the system.

This style of architecture is often described as microservices. Essentially, microservices decompose a system into an architecture of standalone modules that 1) are simpler to maintain and evolve, 2) scale efficiently, and 3) can be reused as building blocks for other architectures. Transitioning to a microservice architecture is crucial for companies in highly-competing markets, where agility and flexibility of software systems become a critical asset to establish leadership.

While microservices are a solution for maintainability, evolvability, scalability, and reuse, they come at a cost: an increased complexity that calls for an improvement of the current techniques for software construction and advanced engineering practices.

The AMP workshop aims at collecting original work on the science and engineering of Microservices Programming using Agile principles and practices and/or with the goal of supporting Agility:

  • Design and implementation of microservice architectures.
  • Empirical studies of microservices.
  • Software engineering methods for microservices.
  • Approaches to refactoring towards microservice architectures.
  • Orchestration techniques for microservices.
  • Continuous integration/delivery approaches for microservices.
  • Security in microservices.
  • Formal models for microservices.
  • Verification of microservice systems.
  • Programming languages and techniques for microservices.
  • Testing for microservices.