Microservices and Serverless Computing

"The philosophy of the microservices architecture essentially equates to the Unix philosophy of 'Do one thing and do it well.'" -- Wikipedia

Lesson 1: What Are Microservices?

For organizations with large, monolithic applications, adopting a microservice approach should prove beneficial because:

  • They are simpler to understand than a monolithic application.
  • They are easier to scale: only the part of the overall application that is the bottleneck needs to be given more resources.
  • It is easier to do continuous delivery when it is microservices being updated, rather than an entire monolithic application.
  • There will be looser coupling between components of the system when it is built on microservices.
  • Bugs are isolated in a microservice and can't bring down all components of a system.
  • They enable more freedom of choice among technologies, as each microservice team can choose different languages, libraries, databases, and so on.
  • "Microservice proponents tend to avoid this model, preferring instead the notion that a team should own a product over its full lifetime. A common inspiration for this is Amazon's notion of "you build, you run it" where a development team takes full responsibility for the software in production. This brings developers into day-to-day contact with how their software behaves in production and increases contact with their users..." -- Lewis and Fowler, linked below

Please also read:

And watch:

Eric Evans on Domain Driven Design and Microservices
Lesson 2: Flask Rest Plus

Here is a server running Flask Rest Plus, and Swagger, a component which documents the API, as well as letting users test it.

Here is the documentation for Flask Rest Plus.

Other Readings
Quiz

    Advantages of microservices include...?

    1. they are easier to scale
    2. they are simpler to understand
    3. there is looser coupling between components
    4. all of the above

    The alternative architecture to microservices is called...?

    1. monolithic
    2. monotonic
    3. monotonous
    4. monomaniacal

    Each team owning a product from beginning to end is characteristic of...?

    1. monolithic architectures
    2. microservice architectures
    3. neither

    To scale a monolith application one needs to...?

    1. there is no way to scale a monolith application
    2. replicate the monolith on multiple servers
    3. distribute services across multiple servers
    4. both B and C

    In microservice architecture, one definition of a component is...?

    1. a unit of software changes to which require changes to the other parts of the application
    2. a piece of software which constitutes the whole application
    3. independently replaceable and upgradable piece of software
    4. all of the above