Skip to content

Learning Path Guide

Casey Lee edited this page Jan 23, 2019 · 46 revisions

Introduction

This is a guide on how to approach learning mu. If you follow this, you will be a mu master in no time at all! For any mu-specific technical questions, check out the mu wiki.

Big Picture

Get an overview of what mu does with this diagram created by @karlskidmore:

The Path to Becoming a mu Master

AWS CloudFormation (cfn)

Get a basic idea of what AWS CloudFormation does by watching the 3 minute long introductory video. Go through the official AWS CloudFormation Getting Started guide.

Do you understand:

  • What a cfn template does?
  • How to declare resources and their properties within a cfn template?

Are you able to:

  • Create a cfn stack
  • Monitor a cfn stack's progress by viewing the 'Events'
  • Update a cfn stack
  • Delete a cfn stack

mu

  1. Listen to the mu podcast

Can you answer these questions from the podcast:

  • What is mu and what problem does it solve? What are its benefits?
  • How does someone use mu (including prereqs)?
  • What types of programming languages and platforms are supported?
  • What types of AWS architectures does mu support (i.e. traditional EC2, ECS, Serverless, etc.)?
  • Which AWS services are provisioned by mu?
  • Does mu support non-AWS implementations?
  • What does mu install on my AWS account?
  1. Watch the mu video example

Can you answer these questions from the video:

  • What command line command allows you to view and follow along with the logs of the pipeline?
  • What command allows you to view a list of your mu environments?
  • What are the different stages in Casey's CodePipeline pipeline? (Hint: the first one is 'Source')
  • What are some of the cfn stacks that were created by mu? (Hint: one is 'mu-cluster-dev')
  • What AWS service uses buildspec.yml files?
  • What kind of database did Casey add to the mu.yml template?
  • Casey mentions an AWS service that manages secrets. What is it?

Hands-on Practice with mu Blogs

Go through the mu blogs.

  1. Introducing mu: a tool for managing your microservices in AWS
  • How did you install mu? Are there any other ways to install it? (Hint: Wiki Installation page)
  • Where did you initialize mu? Why in that location? What's the command?
  • What command sets up a pipeline?
  • What's something (anything) you notice when you monitor the build logs?
  • If I had an environment called 'FooBar', what would the command be to view that environment's information?
  • What commands clean up the resources you've made?
  • After running the clean up commands, look at CloudFormation. Are there any remaining CloudFormation stacks? What are they?
  1. Microservice testing with mu: injecting quality into the pipeline
  • Continuous Delivery helps go to production faster. What else does it do?
  • How does mu enable Continuous Delivery? Which AWS services help enable Continuous Delivery?
  • What file do we manipulate to install Newman and run our tests automatically? What AWS service uses this file?
  • Why did we choose an image that has Node.js? What file do we add the image to? What AWS service uses this file?
  • What happens when you commit and push to git?
  1. Microservice databases with mu
  • How is the database referenced from our microservice?
  • How are the URL and credentials passed to mu? What disadvantage does this have? Is there a workaround? (Hint: yes) What is it?
  1. Service discovery for microservices with mu
  • What are the three approaches? What are the disadvantages of the first two?
  • What's the benefit of the 'client load balancer' approach?
  • What needs to be deployed using the 'client load balancer' approach?
  • What is Zuul and what does it do?
  • What file is Zuul configured in?
  • What is the curl command to get a list of all the bananas?
  • What is the client side load balancer we used? What is the service discovery tool?
  • How did mu enable service discovery in our microservice environment in this example?
  1. WordPress, Mu, and You
  • Are you locked into mu once the pipeline is up?
  • Why would you want to run WordPress with mu?
  • Did you create a new key pair named mu-wordpress or did you change the variable in mu.yml to a key pair you already had?
  • About how long did it take for the whole pipeline to finish spinning up?
  • What are some of the things mu is doing behind the scenes in this case? (Hint: answer is in the blog)
  • What are some of the things AWS CodePipeline and AWS CodeBuild is doing for us?

More Hands-on Practice with mu Labs

Check out the labs and see how you feel about them now that you've finished the blogs. If it looks like they'd be challenging, go through them.

  1. Lab 1: Run a Spring Boot Microservice on ECS
  2. Lab 2: Add Test Automation (requires Lab 1)
  3. Lab 3: Add Service Discovery (requires Lab 1)
  4. ECS Workshop from AWS

DIY Challenge

Mu-ify this application with the following requirements. (Deploy this application with mu). Application: Pet Clinic

Requirements

  • Deploy the Pet Clinic using mu.
  • Deploy it in a manner that optimizes for cost and database reliability/availability.
  • Ensure the database username and password are encrypted.

Tips

  • Ensure you get it working manually and locally (i.e. you can launch the application from your web browser) before automating the process.
  • Leverage mu's built-in capabilities to define envs, pipelines, and services.

When finished

  • Use the mu cli to get your pipeline's info, copy the url, and launch it in your browser.
  • It should match what you saw when you ran the app locally.

ECS Workshop from AWS

Developed by engineers at AWS, this workshop is designed to educate engineers that might not be familiar with Fargate, ECS, and possibly even Docker container workflow.

See ECS Workshop

Finished?

If so, you're ready to go out into the world and be a mu master!