1. Atlassian delivered radical architectural changes by migrating 60,000 virtual Linux containers and 120,000 application instances to a microservices architecture on their platform without major incidents.
2. They achieved this through careful planning including gradual rollouts, shadowing new services, and making data migrations idempotent.
3. End-to-end ownership of the changes by dedicated teams also helped ensure flexibility and minimized incidents during the migration.
AtlasCamp 2015: How to deliver radical architectural change without the customer noticing
1. How to Deliver
Radical Architectural Change
SIDNEY SHEK • ARCHITECT •
ATLASSIAN • @SIDNEYSHEK
…without the customer noticing!
ROBIN FERNANDES • TEAM LEAD •
ATLASSIAN • @REWBS
2. Source: BMW S1000 RR. Dinner for RR. www.youtube.com/watch?v=-cM9S2AzU28
16. Stored at b10b
(SHA-1 of content)
PUT att-1
BlobStore
server
S3 bucket
Uploading to BlobStore
17. Stored at b10b
(SHA-1 of content)
PUT att-1
ETAG b10b
BlobStore
server
S3 bucket
Uploading to BlobStore
18. Dynamo table
Stored at b10b
(SHA-1 of content)
PUT att-1
ETAG b10b
BlobStore
server
S3 bucket
Logical Key Sequence Operation
att-1 1 Insert b10b
Uploading to BlobStore
19. Dynamo table
Stored at b10b
(SHA-1 of content)
BlobStore
server
S3 bucket
Logical Key Sequence Operation
att-1 1 Insert b10b
Deleting from BlobStore
DELETE att-1
ETAG b10b
20. Dynamo table
Stored at b10b
(SHA-1 of content)
BlobStore
server
S3 bucket
Logical Key Sequence Operation
att-1 1 Insert b10b
att-1 2 Delete
Deleting from BlobStore
DELETE att-1
ETAG b10b
204 “OK”
21. Dynamo table
Stored at b10b
(SHA-1 of content)
BlobStore
server
S3 bucket
Logical Key Sequence Operation
att-1 1 Insert b10b
att-1 2 Delete
Deleting from BlobStore
DELETE att-1
ETAG b10b
204 “OK”
22. Dynamo table
Stored at b10b
(SHA-1 of content)
BlobStore
server
S3 bucket
Logical Key Sequence Operation
att-1 1 Insert b10b
att-1 2 Delete
att-1 3 Insert b10b
Restoring in BlobStore
DELETE att-1
ETAG b10b
40. Rolling Out Progressively
Data Centre 1
AWS
Customer instance in
OpenVZ container
(approx. 1500 per rack)
Rack 1
…
Rack N
…
…
…
Data Centre 2
Rack 1
…
Rack N
…
…
…
Data Centre 3
Rack 1
…
Rack N
…
…
…
41. Step 1: A Manageable Number of Instances
Data Centre 1
AWS
Rack 1
…
Rack N
…
…
…
Data Centre 2
Rack 1
…
Rack N
…
…
…
Data Centre 3
Rack 1
…
Rack N
…
…
…
42. Step 2: Full Racks
Data Centre 1
AWS
Rack 1
…
Rack N
…
…
…
Data Centre 2
Rack 1
…
Rack N
…
…
…
Data Centre 3
Rack 1
…
Rack N
…
…
…… …
43. Step 3: All Instances
Data Centre 1
AWS
Rack 1
…
Rack N…
Data Centre 2
Rack 1 Rack N…
Data Centre 3
Rack 1 Rack N…
… … … … … … … …
44. Repeat For Next Mode!
Data Centre 1
AWS
Rack 1
…
Rack N…
Data Centre 2
Rack 1 Rack N…
Data Centre 3
Rack 1 Rack N…
… … … … … … … …
45. Repeat For Next Mode!
Data Centre 1
AWS
Rack 1
…
Rack N…
Data Centre 2
Rack 1 Rack N…
Data Centre 3
Rack 1 Rack N…
… … … … … … … …… …
46. Repeat For Next Mode!
Data Centre 1
AWS
Rack 1
…
Rack N…
Data Centre 2
Rack 1 Rack N…
Data Centre 3
Rack 1 Rack N…
… …… ……………… …
51. Micros (PaaS)
DevOps, Atlassian Style
One team owns the change, end-to-end.
JIRA
JIRA Attachment Manager
BlobStore Plugin
BlobStore
Client
BlobStore
Server
BlobStore Migration Plugin
Support
Scripts
Monitoring
Tooling
Roll-out
Tooling
Roll-out
Process
Consumer Service
Operational
Tooling
Processes
Monitoring
Process
Incident
Response
Owned by the
BlobStore team
Data
Deletion
52. 1. A microservices architecture requires investment
in infrastructure.
2. Safety needs to be built into the architecture
and software from the onset
3. Plan for gradual roll-outs & data migrations
4. End-to-end ownership means architectural
flexlibility and fewer / less severe incidents
5. Don’t underestimate the integration points –
technical and people.
Key Takeaways