Fred George
Fred George
Sold Out!

It is one thing to talk about MicroServices. It is another altogether to have to build them.

After a brief introduction of MicroService principles, we will watch an animation of a MicroService environment. We will start with a pre-built skeleton microservice environment (message bus plus a couple of RESTful services running against it). We will then design and implement additional services to broaden the overall functionality. These additional services can be written in any language that will run on the participants laptop. While pairing is strongly encouraged, it is not required.

In the final stage, different pairs will implement different services, yet they will all run together implementing the animation.

We wrap up with the participants making observations on what they learned (and how it may be different from MicroServices they are currently implementing, if any).

 
 

Outline/structure of the Session

  1. Introduction to MicroServices
  2. Sample asynchronous MicroService application
  3. Installation of sample MicroServices for the exercise
    • Installing RabbitMQ drivers for your language
    • Testing access to RabbitMQ server
  4. Implementing a new MicroService
  5. Discussion of effort
  6. Implementing a second MicroService
  7. Discussion and review of code
  8. Implementing the application (teams develop different services that will work together)
  9. Wrap up observations by participants

Learning Outcome

The focus of the workshop will be on:

  1. Understanding how to design asynchronous service architectures,
  2. Creating small, yet functional, services rather than larger services,
  3. Reducing coupling to the bare minimum (JSON packets with extra fields ignored), and
  4. Debugging asynchronous systems.

Target Audience

Developers (we will be writing code)

Requirements

Participants should come with a development-capable laptop with development tools for their favorite language already installed. Preferred environments are Ruby and Java, but C#, Python, and Node.js are also feasible (with less support from the instructor).

Dedicated access point for allowing users to connect to an in-room server that I will supply.

LCD projector

White board and/or flip charts with markers

schedule Submitted 2 years ago

Comments Subscribe to Comments

comment Comment on this Proposal
  • Joel Tosi
    By Joel Tosi  ~  2 years ago
    reply Reply

    Hi Fred,

        Very timely submission with all of the interest in microservices of late.  As you are submitting this as an all day workshop - I only see two exercises.  Is that correct?  That seems awfully light for a full day.

    These workshops with development are always risky - do you have a checklist for attendees to run through so they can verify their environment prior to attending?

    What about wi-fi?  If that is down, is the class out of the water?

    Best,

    Joel

    • Fred George
      By Fred George  ~  2 years ago
      reply Reply

      We need local WiFi, which if pushed, we can deliver via my MacMini's own local network or my MacBook Pro's local network. I bring starting code on a USB-drive so no access to my GitHub repository is required.

      Fred

      • Joel Tosi
        By Joel Tosi  ~  2 years ago
        reply Reply

        Thanks for the update Fred.  Was I correct in the quick scan that that there are only two exercises?

        Are you able to bring multiple USB's - in case say you have more than 20 in your session, one USB could be an interesting race condition ;)

        Do you have a 'pre-worksop' checklist?  i.e. is there a way for attendees to verify RabbitMQ prior to being in your session and attaching to your server?

        Best,

        Joel

        • Fred George
          By Fred George  ~  2 years ago
          reply Reply

          There is a single exercise, which is complex and multi-part. So far, no group has ever gotten close to finishing the exercise.

          And I do have lots of the USB devices, more than enough for the 20 participant limitation.

          Also, no class has had problems getting the code working. I wouldn't want to have a pre-req of installing and connecting RabbitMQ prior to the class. On the other hand, if they want to bring one up and get the GitHub core solution up and running before they arrive, fine.