microservices as containers on aws . . . for fun and profit

37
Microservices as Containers on AWS… for Fun and Profit Casey Lee, Senior DevOps Engineer, Stelligent

Upload: casey-lee

Post on 28-Jan-2018

59 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Microservices as Containers on AWS . . . for Fun and Profit

Microservices as Containers on AWS…

for Fun and ProfitCasey Lee, Senior DevOps Engineer, Stelligent

Page 2: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 2

Introduction

Microservice

Principles

Monolith

Decomposition

Containers &

Continuous Delivery

mu

Page 3: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

What’s wrong with my monolith?

3

Page 4: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Team coupling affects agility

Monolith Challenges

4

Code

Monolith

Code

Code

Daily

Weekly

Monthly

Page 5: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Deployment coupling affects availability

Monolith Challenges

5

Code

Monolith

Code

Code

Code

Monolith

Code

Code

Page 6: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

How do microservices help?

6

Page 7: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 7

MICROSERVICES

“Small, autonomous services

that work together.”

-SAM NEWMAN, 2014

Page 8: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 8

SINGLE RESPONSIBILITY

PRINCIPLE

“A class should have only

one reason to change.”

-ROBERT C. MARTIN, circa 2003

Page 9: Microservices as Containers on AWS . . . for Fun and Profit

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

Page 10: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 10

MICROSERVICES

“Small, autonomous services

that work together.”

-SAM NEWMAN, 2014

Page 11: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Team autonomy

Microservice Principles

11

Code

Microservice

Code

Microservice

Code

Microservice

Page 12: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Independent deployments

Microservice Principles

12

Code

Microservice

Code

Microservice

Code

Microservice

Code

Microservice

Page 13: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Public APIs

Microservice Principles

13

Code

Microservice

Code

Microservice

Code

Microservice

Page 14: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Private implementations

Microservice Principles

14

Code

Microservice

Code

Microservice

Code

Microservice

DB

DB

Page 15: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Where do I start?

15

Page 16: Microservices as Containers on AWS . . . for Fun and Profit

Step 1 - Capability Cohesion

Code Order Code

Monolith ServiceMonolith Service

Customer Code

Monolith DB

Monolith DB

16

Page 17: Microservices as Containers on AWS . . . for Fun and Profit

Step 2 - Data Cohesion

Order Code

Monolith Service

Customer Code

Order Code

Monolith Service

Customer Code

Monolith DB

OrderDB

CustomerDB

17

Page 18: Microservices as Containers on AWS . . . for Fun and Profit

Step 3 - Deployment Cohesion

Order Code

Microservice

Customer Code

OrderDB

CustomerDB

Order Code

Monolith Service

Customer Code

OrderDB

CustomerDB

Microservice

18

Page 19: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

How do I manage?

19

Page 20: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 20

Microservices

Continuous

Delivery

Containers

Monolith

Page 21: Microservices as Containers on AWS . . . for Fun and Profit

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

Page 22: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 22

http://getmu.io

Page 23: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 23

Page 24: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Overview

24

Page 25: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Pipelines

25

Page 26: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Environment

26

Page 27: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Service

27

Page 28: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Service #2

28

Page 29: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 29

Example

Page 30: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

banana-service

30

Page 31: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Database

31

Page 32: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 32

Demo

Page 33: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com

Service Discovery

33

Page 34: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 34

Summary

Microservice

Principles

Monolith

Decomposition

Containers &

Continuous Delivery

mu

Page 35: Microservices as Containers on AWS . . . for Fun and Profit

www.stelligent.com 35

Next Steps

Workshops

• New York, NY - Tuesday, June 13

• Arlington, VA - Thursday, June 15

• San Francisco, CA - Tuesday, June 20

Page 36: Microservices as Containers on AWS . . . for Fun and Profit

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

Page 37: Microservices as Containers on AWS . . . for Fun and Profit

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

Q&A