Building a Better Web
June 19–20, 2017: Training
June 20–22, 2017: Tutorials & Conference
San Jose, CA

Practical microservices: Exploring design patterns, platforms, and tools with Docker and Kubernetes (Day 2)

Sequoia McDowell (Charm/Offensive)
Location: 212 D

Who is this presentation for?

  • You are an iOS/Android developer who wants to build your backend easily with a language you already know.
  • You are a frontend JavaScript developer who wants to leverage your existing skills to build server software.
  • You are an experienced AWS user who wants to learn what alternatives are available.
  • You are an experienced backend developer who wants to expand your skills and learn in-demand technologies in order to improve your job prospects.

Prerequisite knowledge

  • A working knowledge of Node.js or JavaScript (While this course focuses more on platforms, architecture, and integration than code-authoring itself, we will be writing some code, primarily in JavaScript. You should be comfortable writing JavaScript or following along via copy/paste.)
  • An understanding of HTTP basics and the concept of RESTful APIs
  • The ability to work with the command line

What you'll learn

  • How to decompose monolithic applications into microservices
  • How to select a platform that fits your needs
  • How to introduce microservices into your ecosystem in a safe, controlled way
  • How to integrate microservices to work in concert, within and across platforms
  • How to scale microservices to meet demand and minimize cost

Description

Join Sequoia McDowell for a hands-on, in-depth exploration of microservices. In this course, you’ll learn what benefits a microservice architecture can bring your organization and how microservices can make your applications faster, more scalable, less expensive to run, easier to update, and more secure.

In the past decade and a half, consumer expectations have evolved at a breakneck pace. Where consumers were once satisfied with a brochure website, they now expect a cutting-edge web application, mobile app, and IoT integration to boot. While consumer demands have been completely reinvented, many of our application architecture practices have not. The monolithic architecture patterns of yesteryear are not equipped to keep up with today’s product ecosystem.

To compete in 2017 and beyond, applications must be flexible enough to meet constantly shifting requirements, scalable enough to respond instantly to spikes in usage and wind-down when not in use, and modular enough to allow for the ongoing, incremental improvement that consumers expect. Microservice architectures are a large part of meeting each of these challenges and more. The microservice revolution is underway; don’t get left behind!

Recommended preparation:

Schedule

Each day will contain a mix of lecture and hands-on exercises, with a bias towards hands-on exercises. Lecture will primarily cover concepts and best practices, exercises and examples will focus on implementing these practices with a variety of tools from across the vendor landscape. By the end of this course, attendees will have hands-on experience using several types of microservice platforms and tools from several vendors.

Day One

  • Microservice Introduction
    • What is a microservice?
    • Differences from “monolithic” application architectures
    • When to use a microservice architecture (and when not to)
    • Comparing platforms and selecting the right tools
  • Platform: AWS Lambda
    • Functions as a Service
    • “Serverless” architecture: benefits and pitfalls
    • Creating and deploying Lambda functions
    • Handling secrets and configuration
    • Running and testing functions locally
  • Tool/Platform: IBM Bluemix and API Connect
    • Rapid API development using API Connect
    • Auto-generating CRUD endpoints for existing datasets
    • Deploying to Bluemix
  • Design Patterns: Authentication and Session Management
    • Challenges presented by microservices
    • JSON Web Tokens (JWTs): when to use them and when not to
    • Using JWTs for stateless cross-serve claim verification
    • Session based authentication across microservices

Day Two

  • Platform: Now.sh
    • What it is & when to use it
    • Moving from development to production
    • Handling secrets
    • Scaling on `now`
    • Grouping microservices under one domain
    • Integrating external services (AWS Lambda)
  • Tool: Docker
    • What it is & when to use it
    • Dockerizing an application
    • Using existing docker containers
    • Composing docker containers with docker-compose
    • Deploying docker containers to `now`
  • Tool: Kubernetes
    • What it is & when to use it
    • Kubernetes concepts & anatomy of a cluster
    • Configuring pods, services, and deployments
    • Migrating Docker containers to Kubernetes
    • Running Kubernetes locally & deploying locally
  • Platform: Google Cloud Engine
    • Getting started with GKE
    • Exploring the interfaces: CLI & GUI
    • Creating a kubernetes cluster
    • Differences between GKE deploy and local deploy
    • Deploying to GKE
Photo of Sequoia McDowell

Sequoia McDowell

Charm/Offensive

Sequoia McDowell is a software engineer-cum-educator specializing in Node.js (at the moment). He’s spoken at national programming and IT conferences on topics ranging from testing to build tools to encrypted communication, and he’s one of the few JavaScript educators with the distinction of having run Node.js trainings in every time zone in the continental United States. As a member of the NodeSchool community, Sequoia has extensive experience teaching people about Node.js both online and off.