zalando: bootstrapping a cassandra cluster in a dynamic cloud environment
TRANSCRIPT
![Page 1: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/1.jpg)
Bootstrapping Cassandra in a Dynamic Cloud Environment
Luis Mineiro - @voidmaze Thorbjörn Gruda - @ThorbyG
![Page 2: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/2.jpg)
AgendaWho We Are and What We Do
How Do We Run a Tech Company
Cloud Infrastructure for Autonomous Teams
Cassandra in a Dynamic Cloud Environment
![Page 3: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/3.jpg)
15 countries 3 fulfilment centers 15+ million active customers 2.2+ billion € revenue 2014 130+ million visits per month 8.000+ employees
ONE OF EUROPE’S LARGEST ONLINE FASHION RETAILERS
Visit us: tech.zalando.com
Tech hubs in Berlin, Dublin, Dortmund and Helsinki
![Page 4: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/4.jpg)
#CassandraSummit
Zalando Technology
![Page 5: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/5.jpg)
#CassandraSummit
Environment
Credits to our colleague Kolja Wilcke
![Page 6: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/6.jpg)
#CassandraSummit
Environment
Credits to our colleague Kolja Wilcke
![Page 7: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/7.jpg)
#CassandraSummit
Fashion Store Website
![Page 8: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/8.jpg)
#CassandraSummit
Fashion Store Apps
iOSAndroid Windows Mobile
![Page 10: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/10.jpg)
#CassandraSummit
Zalando Infrastructure
Based on https://flic.kr/p/bX5E4c
2 datacenters thousands of production instances
serving 15 countries
![Page 11: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/11.jpg)
#CassandraSummit
RadicalAgility
![Page 12: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/12.jpg)
#CassandraSummit
What’s That?
Radical Agility is Zalando Tech's approach to running a technology organization -
an approach based on the three pillars of autonomy, mastery and purpose
http://zln.do/ra-video
![Page 13: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/13.jpg)
Compliance Innovation
#CassandraSummit
![Page 14: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/14.jpg)
#CassandraSummit
STUPSA Cloud Infrastructure for Autonomous Teams
![Page 15: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/15.jpg)
#CassandraSummit
What Is It?
“The STUPS platform is a set of tools and components to provide a convenient
and audit-compliant Platform-as-a-Service (PaaS) for multiple autonomous teams on top of Amazon Web Services (AWS)”
Learn more at https://stups.io
![Page 17: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/17.jpg)
#CassandraSummit
Relevant Requirements
All STUPS applications are Docker containers
We can only use audit-compliant AMIs
STUPS is dynamic. VPC is DHCP only
![Page 18: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/18.jpg)
#CassandraSummit
Challenges Ahead
![Page 19: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/19.jpg)
#CassandraSummit
Docker Container
Plenty of options out there
None was created specifically for STUPS
They should be immutable
![Page 20: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/20.jpg)
#CassandraSummit
Audit-Compliant AMI
We can’t use DataStax’s AMIs
Cloud Engineering team publishes audit-compliant AMIs - Taupage
Taupage has its own bootstrapping process
![Page 21: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/21.jpg)
#CassandraSummit
Dynamic Environment
Clusters require special nodes - Seeds
EC2 instances get a random IP address
EC2 instances come and go
![Page 22: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/22.jpg)
#CassandraSummit
How can I help you?
![Page 23: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/23.jpg)
#CassandraSummit
I’d like to bootstrap Cassandra
![Page 24: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/24.jpg)
#CassandraSummit
YADCYet Another Docker Cassandra
• Kept the best options from the other
recipes out there
• Added STUPS specific options
![Page 25: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/25.jpg)
#CassandraSummit
and then…?
![Page 26: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/26.jpg)
#CassandraSummit
Run Container in Taupage
With this Cassandra container
we should be ready to run in our
audit-compliant AMI - Taupage
![Page 27: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/27.jpg)
#CassandraSummit
You wish!
![Page 28: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/28.jpg)
#CassandraSummit
I’d like to discover seed nodes dynamically
![Page 29: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/29.jpg)
#CassandraSummit
Discovery
STUPS makes use of etcd to register EC2 instances
Applications can use etcd for discovery and distributed locking
![Page 30: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/30.jpg)
#CassandraSummit
and then…?
![Page 31: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/31.jpg)
#CassandraSummit
Custom SeedProviderWe created the EtcdSeedProvider
seed_provider: - class_name: org.zalando.cassandra.locator.EtcdSeedProvider parameters: - url: http://example.org/v2/keys/cassandra/my-cluster-name/seeds
Dynamically updates list of seed nodes from etcd
![Page 32: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/32.jpg)
#CassandraSummit
and then…?
![Page 33: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/33.jpg)
#CassandraSummit
Senza TemplateWe use the STUPS senza tool
to instrument AWS’ CloudFormation Bootstraps a Cassandra Cluster
with one simple command
$ senza create https://goo.gl/qyTy7b \ my-new-cluster \ etcd.example.org
![Page 34: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/34.jpg)
#CassandraSummit
STUPS Appliance
CloudFormation
Cluster Details Name: my-new-cluster Size: 3
etcd.example.org
![Page 35: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/35.jpg)
#CassandraSummit
STUPS Appliance
CloudFormation
Cluster Details Name: my-new-cluster Size: 3
etcd.example.org
Auto Scaling Group
Min, Max, Desired = 3
![Page 36: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/36.jpg)
#CassandraSummit
STUPS Appliance
CloudFormation
Cluster Details Name: my-new-cluster Size: 3
etcd.example.org
Auto Scaling Group
Min, Max, Desired = 3
SeedNode #1
![Page 37: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/37.jpg)
#CassandraSummit
STUPS Appliance
CloudFormation
Cluster Details Name: my-new-cluster Size: 3
etcd.example.org
Auto Scaling Group
Min, Max, Desired = 3
SeedNode #1
Node #2
![Page 38: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/38.jpg)
#CassandraSummit
STUPS Appliance
CloudFormation
Cluster Details Name: my-new-cluster Size: 3
etcd.example.org
Auto Scaling Group
Min, Max, Desired = 3
SeedNode #1
Node #2
Node #3
![Page 39: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/39.jpg)
#CassandraSummit
STUPS OpsCenterCluster discovers and registers into OpsCenter while bootstrapping
![Page 40: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/40.jpg)
#CassandraSummit
What about operations?
![Page 41: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/41.jpg)
#CassandraSummit
Appliance Operations
First release focused only on initial bootstrapping
Some things Just Work™
![Page 42: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/42.jpg)
#CassandraSummit
Adding NodesJust adjust your Auto Scaling Group
Or trigger CloudWatch ScaleUp actions
![Page 43: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/43.jpg)
#CassandraSummit
Useless piece of sh*t
![Page 44: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/44.jpg)
#CassandraSummit
Upcoming FeaturesBetter distribution of seed nodes per AZ
Scheduled backups
HTTP Health check
JMX metrics and instrumentation over HTTP
Replacement of dead nodes
![Page 45: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/45.jpg)
#CassandraSummit
All of this is open source
![Page 46: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/46.jpg)
#CassandraSummit
We Want to Hear From You
https://github.com/zalando/stups-cassandra
https://github.com/zalando/stups-opscenter
https://github.com/zalando/cassandra-etcd-seed-provider
Try it out
Help us find issues
Send us pull requests
![Page 47: Zalando: Bootstrapping a Cassandra Cluster in a Dynamic Cloud Environment](https://reader031.vdocuments.mx/reader031/viewer/2022030212/589eee991a28abe97f8b6253/html5/thumbnails/47.jpg)
Thank you for listeningCheck out our blog https://tech.zalando.com
Our many open source products https://github.com/zalando The STUPS stack https://stups.io
Got more questions? You can reach us on twitter @ZalandoTech
We’re hiring!
Special thanks to Jessie Dude. No Continuum Transfunctioners were harmed during the production of these slides.