AWS Elastic Beanstalk in der Praxis
Einführung und Best Practices
Über mich
- DevOps @ WeltN24
- cloud, chef, ruby
- java, gradle
- newbie gopher
- s_stoyanoff
Motivation
- Erfahrung teilen
- Wann EB und wann nicht?
Was ist EB?
- existiert seit 2011
- ist eine Abstraktion (PaaS) über viele AWS-Dienste
- EC2
- S3
- CloudWatch
- AutoScaling
- ElasticLoadBalancing
- verschiedene Stacks (Java, Ruby, Python, PHP, Docker)
Warum EB?
- sehr einfache 0-Downtime Deployments
- einfache Auto-Skalieriung und HA
- mit Docker beliebige Stacks möglich
- (Monitoring und Log-Aggregation)
Demo
0-Downtime Deployment
0-Downtime Deployment
Helpers
Demo
Dockerrun.aws.json
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "janedoe/image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "1234"
}
],
"Volumes": [
{
"HostDirectory": "/var/app/mydb",
"ContainerDirectory": "/etc/mysql"
}
],
"Logging": "/var/log/nginx"
}
.ebextensions
packages:
yum:
perl-Switch: []
perl-Sys-Syslog: []
perl-URI: []
perl-Compress-Raw-Zlib: []
perl-Bundle-LWP: []
perl-DateTime: []
commands:
01-changeperm:
command: chmod 644 /etc/cron.d/foo
Monitoring
- DataDog .. besser nicht
- CloudWatch
- zabbix
- ELK/Splunk
- (Prometheus)
Dos
- AWS-Kontos für DEVs
- Datenbank-Migrationen vom Anfang integrieren
Don'ts
- Non-Single-Responsibility CF-Templates
- Quick'n'Dirty selbstgebackene Deployment Tools
- ohne Netzwerk-Konzept starten
- zu viele .ebextensions, besser packer
Fazit
- Continuous Delivery nicht nur in der Theorie
- geignet für kleine Services
- nicht die beste Wahl für Infrastruktur-Dienste
Links
AWS Beanstalk in der Praxis
By Stoyan Stoyanov
AWS Beanstalk in der Praxis
- 1,296