41
Micros Atlassian’s Internal PaaS on AWS JASON UMIKER • @JASONUMIKER

AWS User Group Sydney - Atlassian 5-10-16

Embed Size (px)

Citation preview

Page 1: AWS User Group Sydney - Atlassian 5-10-16

Micros Atlassian’s Internal PaaS on AWS

JASON UMIKER • @JASONUMIKER

Page 2: AWS User Group Sydney - Atlassian 5-10-16

PaaS Overview

•‿• > <

Page 3: AWS User Group Sydney - Atlassian 5-10-16

PaaS Overview

CloudFormation RDS S3 DynamoDB

EC2

Page 4: AWS User Group Sydney - Atlassian 5-10-16

Over

services running right now

500

Page 5: AWS User Group Sydney - Atlassian 5-10-16

•  Big cool statistic

•  2,569 •  Add-Ons in Marketplace

Todo: better image

Why do we need a Platform?

Page 6: AWS User Group Sydney - Atlassian 5-10-16

Data Centre

JIRA & Confluence Cloud Architecture

R a c k

Cloud instance in OpenVZ container

(approx. 1500 per rack)

Page 7: AWS User Group Sydney - Atlassian 5-10-16

Breaking up the Monoliths

* *

Data Centre

R a c k

BlobStore service

PaaS

Page 8: AWS User Group Sydney - Atlassian 5-10-16

Breaking up the Monoliths

> <

Data Centre

R a c k

PaaS

_ _ - - /oo\

o o

. .

Page 9: AWS User Group Sydney - Atlassian 5-10-16

Todo: better image

What does the platform do?

Page 10: AWS User Group Sydney - Atlassian 5-10-16

+ SD { }Artifact Descriptor

Deploying a Service

Page 11: AWS User Group Sydney - Atlassian 5-10-16

Deploying a Service name: Micros Workshop

description: A sample app

links:

binary:

type: npm

artifactId: '@atlassian/micros-workshop'

version: 0.0.1

healthcheck:

uri: /healthcheck

source:

url: 'ssh://[email protected]/x.git'

owners:

- [email protected]

organization: Cloud Platform Engineering

Page 12: AWS User Group Sydney - Atlassian 5-10-16

+ SD { }Artifact Descriptor

https://<service>.atlassian.io

Deploying a Service

Compute: CloudFormation stack with: •  Route 53 DNS record •  Elastic Load Balancer •  EC2 instances in Autoscaling group

Resources: •  S3, RDS, DynamoDB •  Redis, Memcached, SQS…

Page 13: AWS User Group Sydney - Atlassian 5-10-16

Logging & Monitoring

AWS CloudWatch

https://<service>.atlassian.io

Page 14: AWS User Group Sydney - Atlassian 5-10-16

. .

cloudymccloudface.atlassian.io

> micros service:deploy

my-service

-f service-descriptor.yml

Deploying a Service

Page 15: AWS User Group Sydney - Atlassian 5-10-16

•  Big cool statistic

•  2,569 •  Add-Ons in Marketplace

Lessons learned: Balancing consistency & flexibility

Page 16: AWS User Group Sydney - Atlassian 5-10-16

Where to favor rules & consistency?

Enforce: Common logging & monitoring infra

Encourage: Structured log data

Page 17: AWS User Group Sydney - Atlassian 5-10-16

Structured Log Data

Page 18: AWS User Group Sydney - Atlassian 5-10-16

Where to favor rules & consistency?

Enforce: Common logging & monitoring infra

Encourage: Structured log data

Enforce: Standard upgrade flow

Page 19: AWS User Group Sydney - Atlassian 5-10-16

https://<service>.atlassian.io

Common Upgrade flow

v1 v2

Page 20: AWS User Group Sydney - Atlassian 5-10-16

Where to favor rules & consistency?

Enforce: Common logging & monitoring infra

Encourage: Structured log data

Enforce: Standard upgrade flow

Enforce: Limited set of persistent data stores

Page 21: AWS User Group Sydney - Atlassian 5-10-16
Page 22: AWS User Group Sydney - Atlassian 5-10-16
Page 23: AWS User Group Sydney - Atlassian 5-10-16

Where to favor rules & consistency?

Enforce: Common logging & monitoring infra

Encourage: Structured log data

Enforce: Standard upgrade flow

Enforce: Limited set of persistent data stores

Encourage: Resource isolation

Page 24: AWS User Group Sydney - Atlassian 5-10-16

Resource Isolation ServiceB.atlassian.io

Datastores

ServiceA.atlassian.io

Datastores

Page 25: AWS User Group Sydney - Atlassian 5-10-16

Where to favor rules & consistency?

Enforce: Common logging & monitoring infra

Encourage: Structured log data

Enforce: Standard upgrade flow

Enforce: Limited set of persistent data stores

Enforce: Common service metadata & cost allocation

Encourage: Resource isolation

Page 26: AWS User Group Sydney - Atlassian 5-10-16

Where to favor rules & consistency?

Enforce: Common logging & monitoring infra

Encourage: Structured log data

Enforce: Standard upgrade flow

Enforce: Limited set of persistent data stores

Enforce: Restricted ssh access

Enforce: Common service metadata & cost allocation

Encourage: Resource isolation

Page 27: AWS User Group Sydney - Atlassian 5-10-16

Where to favor rules & consistency?

Enforce: Common logging & monitoring infra

Encourage: Structured log data

Enforce: Standard upgrade flow

Enforce: Limited set of persistent data stores

Enforce: Statelessness & disposable compute nodes

Enforce: Restricted ssh access

Encourage: Resource isolation

Enforce: Common service metadata & cost allocation

Page 28: AWS User Group Sydney - Atlassian 5-10-16

12 Factor (not pets)

Nodes as cattle (not pets)

Page 29: AWS User Group Sydney - Atlassian 5-10-16

Where to bend the rules / favor flexibility?

Enable: Service-level technology stack flexibility

Page 30: AWS User Group Sydney - Atlassian 5-10-16

Services by

Runtime

Docker

55% JVM 25%

Node.js 15%

Python 5%

Page 31: AWS User Group Sydney - Atlassian 5-10-16

Where to bend the rules / favor flexibility?

Enable: Service-level technology stack flexibility

Enable: Integration with 3rd party services

Page 32: AWS User Group Sydney - Atlassian 5-10-16

Where to bend the rules / favor flexibility?

Enable: Service-level technology stack flexibility

Adapt to underlying platform limitations

Enable: Integration with 3rd party services

Page 33: AWS User Group Sydney - Atlassian 5-10-16

Where to bend the rules / favor flexibility?

Enable: Service-level technology stack flexibility

Adapt: Education & on-boarding

Adapt to underlying platform limitations

Enable: Integration with 3rd party services

Page 34: AWS User Group Sydney - Atlassian 5-10-16

Where to bend the rules / favor flexibility?

Enable: Service-level technology stack flexibility

Adapt: Education & on-boarding

Adapt to underlying platform limitations

Enable: Integration with 3rd party services

Open the platform for contributions

Page 35: AWS User Group Sydney - Atlassian 5-10-16

Contributions &

Self-hosted PaaS

components

Bootstrapping Service

Deployment orchestration

service

Chaos Monkey

Log Analysis Service

PaaS

PaaS

PaaS

PaaS

PaaS

Simple Workflow integration

Service cost estimation

Data Pipelines Integration

Service-to-service auth

Page 36: AWS User Group Sydney - Atlassian 5-10-16

Where to bend the rules / favor flexibility?

Enable: Service-level technology stack flexibility

Adapt to underlying platform limitations

Enable: Integration with 3rd party services

Adapt: roadmap to inbound requests & technology trends

Open the platform for contributions

Adapt: Education & on-boarding

Page 37: AWS User Group Sydney - Atlassian 5-10-16

Organisation wide: Disaster Recovery

Compliance

Infra improvements: Container Clusters

Serverless

Page 38: AWS User Group Sydney - Atlassian 5-10-16

Promises of Service Decomposition

Choice of tech stacks

Scalability Independent deployments

Resilience End-to-end ownership

Your platform should enable them – with heart and balance.

PaaS

Page 39: AWS User Group Sydney - Atlassian 5-10-16

Healthy PaaS —> Happy Microservices!

Balance consistency with flexibility

Encourage / enforce “12 factor” & “nodes as

cattle”

Keep the barrier to entry low

Tips for a healthy, balanced PaaS & a happy microservice ecosystem.

Page 40: AWS User Group Sydney - Atlassian 5-10-16

Questions?

Page 41: AWS User Group Sydney - Atlassian 5-10-16

Reuters. Chickens perch on the roof of a hennery to escape rising floodwaters after Typhoon Utor hit Maoming, Guangzhou province August 15, 2013. Typhoon Utor hit China's southern Guangdong and Guangxi provinces before easing to a tropical storm.

Image Credits

https://design.atlassian.com/

Courtesy of Scott Monday: - https://au.pinterest.com/pin/146085581635905884/ - http://scottmonday.com/

Copyright: velvetocean / 123RF Stock Photo – http://www.123rf.com/profile_velvetocean

Copyright: feedough / 123RF Stock Photo – http://www.123rf.com/profile_feedough'

Copyright: iimages / 123RF Stock Photo – http://www.123rf.com/iimages_feedough