Microservices as Containers on AWS . . . for Fun and Profit

Preview:

Citation preview

Microservices as Containers on AWS…

for Fun and ProfitCasey Lee, Senior DevOps Engineer, Stelligent

www.stelligent.com 2

Introduction

Microservice

Principles

Monolith

Decomposition

Containers &

Continuous Delivery

mu

www.stelligent.com

What’s wrong with my monolith?

3

www.stelligent.com

Team coupling affects agility

Monolith Challenges

4

Code

Monolith

Code

Code

Daily

Weekly

Monthly

www.stelligent.com

Deployment coupling affects availability

Monolith Challenges

5

Code

Monolith

Code

Code

Code

Monolith

Code

Code

www.stelligent.com

How do microservices help?

6

www.stelligent.com 7

MICROSERVICES

“Small, autonomous services

that work together.”

-SAM NEWMAN, 2014

www.stelligent.com 8

SINGLE RESPONSIBILITY

PRINCIPLE

“A class should have only

one reason to change.”

-ROBERT C. MARTIN, circa 2003

www.stelligent.com

THE UNIX PHILOSOPHY

“Write programs that do one

thing and do it well. Write

programs to work together.”

-DOUG MCILROY, circa 1978

9

www.stelligent.com 10

MICROSERVICES

“Small, autonomous services

that work together.”

-SAM NEWMAN, 2014

www.stelligent.com

Team autonomy

Microservice Principles

11

Code

Microservice

Code

Microservice

Code

Microservice

www.stelligent.com

Independent deployments

Microservice Principles

12

Code

Microservice

Code

Microservice

Code

Microservice

Code

Microservice

www.stelligent.com

Public APIs

Microservice Principles

13

Code

Microservice

Code

Microservice

Code

Microservice

www.stelligent.com

Private implementations

Microservice Principles

14

Code

Microservice

Code

Microservice

Code

Microservice

DB

DB

www.stelligent.com

Where do I start?

15

Step 1 - Capability Cohesion

Code Order Code

Monolith ServiceMonolith Service

Customer Code

Monolith DB

Monolith DB

16

Step 2 - Data Cohesion

Order Code

Monolith Service

Customer Code

Order Code

Monolith Service

Customer Code

Monolith DB

OrderDB

CustomerDB

17

Step 3 - Deployment Cohesion

Order Code

Microservice

Customer Code

OrderDB

CustomerDB

Order Code

Monolith Service

Customer Code

OrderDB

CustomerDB

Microservice

18

www.stelligent.com

How do I manage?

19

www.stelligent.com 20

Microservices

Continuous

Delivery

Containers

Monolith

www.stelligent.com 21

Amazon ECRAmazon ECS

Amazon

EC2

Amazon

VPC

router

VPC NAT

gateway

Auto ScalingApplication

Load Balancer

Elastic Load

Balancing

MySQL DB

instance

Amazon

RDSAWS

CodeCommit

AWS

CodePipeline

AWS

CodeBuild

Amazon

CloudWatchAWS

CloudFormation

alarm

IAM

rolestack

virtual private cloud

ECR registryEC2 compute

container

template

www.stelligent.com 22

http://getmu.io

www.stelligent.com 23

www.stelligent.com

Overview

24

www.stelligent.com

Pipelines

25

www.stelligent.com

Environment

26

www.stelligent.com

Service

27

www.stelligent.com

Service #2

28

www.stelligent.com 29

Example

www.stelligent.com

banana-service

30

www.stelligent.com

Database

31

www.stelligent.com 32

Demo

www.stelligent.com

Service Discovery

33

www.stelligent.com 34

Summary

Microservice

Principles

Monolith

Decomposition

Containers &

Continuous Delivery

mu

www.stelligent.com 35

Next Steps

Workshops

• New York, NY - Tuesday, June 13

• Arlington, VA - Thursday, June 15

• San Francisco, CA - Tuesday, June 20

www.stelligent.com

Resources

• mu - http://getmu.io/

• GitHub - https://github.com/stelligent/mu

• Blogs -

• Introduction - https://stelligent.com/2017/04/11/mu-introduction-ecs-for-microservices/

• Testing - https://stelligent.com/2017/04/27/mu-testing-continuous-delivery/

• Databases - https://stelligent.com/2017/05/09/microservice-databases-with-mu/

• Service Discovery - tbd

36

For more information on how Stelligent can help you with AWS Automation, go to www.stelligent.com

Q&A

Recommended