SlideShare a Scribd company logo
1 of 45
Download to read offline
High availability
architecture
for legacy stuff A 10.000 feet overview
$whoami
Marco Amado
Lead Developer @ Moloni
/mjamado
www.dreamsincode.com
$whoiaint
Not a sysadmin (not worthy of the title, at least)
Not a DevOps guru
Not a high availability ninja
Not a scalabilty jedi
Take that into account
Notes
●
This is code
●
Sometimes, there’s code you should change
●
“Talk to your hoster” symbol
Motivation
Or how a watched kettle
never boils, until your
kitchen’s on fre
Hypothetical Product
Find-a-Rhyme
Given a word, the application returns a set of words
that rhyme.
You can flter by word class, type of rhyme, word
length...
Where we’re standing
Ye olde LAMP stack
●
Commonly found on shared hosting
●
Network latency between PHP and DB is
amazing – as in zero amazing
●
Everything is a single point of failure
●
Find-a-rhyme is probably safe, right?
Right?
Linux
Apache
MySQL/MariaDB
PHP
Suddenly...
Dictatorship!
First order: all written communications should
be in verse. And it has to rhyme.
People fock to Find-a-rhyme.
Modern Infantry by Litev
CC BY-SA 3.0
https://commons.wikimedia.org/wiki/File:Modern_infantry.png
Problems
Overview
What will we encounter if we
want to avoid touching the
code (mostly)
Overview
●
Load balancing
●
DB clustering
●
Sessions
●
User assets
●
Single point of failure
●
Monitoring
●
Security
Load
Balancing
Because we’ve got to start
somewhere
Hardware
Pros
●
Faster than software (in
general)
●
Most have integrated
intrusion detection
and/or prevention
Cons
●
Pricey as hell
●
Confguration not easily
portable
Pros
●
FOSS (mostly)
●
Confguration is easy to
reason about
Cons
●
Can be slow (depending
on machine)
●
If FOSS, you’re on your
own
Software
Software solutions
frontend web
bind find-a-rhyme.com:80
default_backend web
backend web
mode http
balance leastconn
server s1 ip.app1:80
server s2 ip.app2:80
server {
listen 80;
location / {
proxy_pass http://web;
}
}
upstream web {
least_conn;
server ip.app1;
server ip.app2;
}
¯_( ツ )_/¯
SSL Termination
Do it on the load balancers!
global
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:
DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
tune.ssl.default-dh-param 2048
frontend web
bind find-a-rhyme.com:80
bind find-a-rhyme.com:443 crt path/to/certificate.pem
Database
servers
All your data are
belong to us!
MySQL/MariaDB
Replication Group
Pros:
●
Battle tested
●
Big company backed
(Oracle)
Cons:
●
Confguration is a PITA
XtraDB Cluster & Galera Cluster
Pretty much the same product
Pros:
●
Multi master from the start
●
Partners with MariaDB
●
Confguration is a breeze
Cons
●
Consensus can be a problem
Galera Cluster
●
Included with MariaDB 10.1
●
Make sure to also install percona-xtrabackup
●
A dozen lines of confguration:
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_cluster"
wsrep_cluster_address="gcomm://ip.db1,ip.db2,ip.db3"
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth="sst:somepassword"
wsrep_node_address="each.machine.ip"
wsrep_node_name="eachMachineName"
HAProxy configuration for DB
backend cluster
mode tcp
option tcpka
option mysql-check user healthUser
balance static-rr
server db1 ip.db1:3306 check
server db2 ip.db2:3306 check
server db3 ip.db3:3306 check
frontend cluster
bind loadbalancer.ip:3306
default_backend cluster
Change the connection
URL in your codebase
to this.
This confguration means the application servers must connect
to the cluster via load balancers, which in turn connects to the
DB servers. Network latency will be an issue.
Application
servers
We’re not touching
that codebase!
Session Handling
Sticky sessions
Pros:
●
Easy confguration on
load balancer
Cons:
●
Bad UX on server fail
●
Not exactly load
balanced
Memcached
Pros:
●
Easy confguration on
php.ini
Cons:
●
Install memcached, I
guess?...
Sessions with memcached
Easy confguration on php.ini (or included fles):
session.save_handler = memcache
session.save_path = “tcp://ip.app1,tcp://ip.app2”
memcache.allow_failover = 1
memcache.session_redundancy = 3
Number of memcached servers + 1.
It’s an off-by-one bug in PHP, since 2009 (never fxed):
https://bugs.php.net/bug.php?id=58585
User assets
CDN
●
Heavy changes
to codebase
●
Lack of control
●
More expenses
Samba, NFS
●
Single point of
failure
●
Slow as hell
IPFS
GlusterFS
●
Distributed fle system
●
Replicated mode
●
Transparent operation
●
Easy CLI confguration:
●
fstab confguration:
$ sudo gluster peer probe ip.other.app.server
$ sudo gluster volume create volName replica 2 transport tcp ip.app1:/path
ip.app2:/path force
$ sudo gluster volume start volName
$ sudo gluster volume set volName auth.allow ip.app1,ip.app2,127.0.0.1
localhost:/volName /path glusterfs noauto,x-systemd.automount 0 0
Where we’re standing
LB
App1 App2
DB1 DB2 DB3
SPOF
Eliminating
the SPOF
Load balancing the
load balancers
Keepalived
Implementation of Virtual Router Redundancy Protocol
(VRRP) – in a nutshell, automatic assignment of IP
addresses.
●
First and foremost, confgure IP forwarding and
non-local bind on sysctl.conf:
net/ipv4/ip_forward = 1
net/ipv4/ip_nonlocal_bind = 1
“Jumping” IP addresses can be frowned
upon by datacenters. Be sure to really talk to
your hoster about this.
keepalived.conf (extract)
vrpp_instance VI1 {
virtual_router_id 50 # mostly arbitrary – make sure it’s unique
interface NIC
advert_int 1
state MASTER # BACKUP on the other loadbalancer
priority 200 # 100 on the other load balancer
unicast_src_ip this.loadbalancer.ip
unicast_peer {
other.loadbalancer.ip
}
virtual_ipaddress {
your.public.ip dev NIC
}
}
Virtual IP for DB access
vrpp_instance VI2 {
virtual_router_id 60 # mostly arbitrary – make sure it’s unique
interface NIC
advert_int 1
state MASTER # BACKUP on the other loadbalancer
priority 200 # 100 on the other load balancer
unicast_src_ip this.loadbalancer.ip
unicast_peer {
other.loadbalancer.ip
}
virtual_ipaddress {
a.free.private.ip dev NIC
}
}
Change the connection
URL in your codebase
to this.
Don’t forget SSL termination
Two load balancers with failover, two servers where to
make SSL termination:
Duplicate your certifcates!
Much better...
LB1
App1 App2
DB1 DB2 DB3
LB2
Monitoring
When things go sideways,
be the frst to know
Monit
●
Monitoring and managment
●
Can do automatic maintenance and repair
●
Can execute arbitrary actions on errors
●
Can monitor system, processes, flesystem,
scripts...
Monit sample config
check process php with pidfile /var/run/php/php7-fpm.pid
start program = ”/usr/bin/service php7-fpm start”
stop program = ”/usr/bin/service php7-fpm stop”
if failed
unixsocket /var/run/php/php7-fpm.sock
then restart
if 2 restarts within 4 cycles then alert
check filesystem disk with path /
if space free < 20% then alert
check network private interface eno1
start program = ”/sbin/ifup eno1”
stop program = ”/sbin/ifdown eno1”
if failed link for 3 cycles then restart
if saturation > 90% for 20 cycles then alert
User interface
M/Monit
●
Aggregate all your Monit instances
●
Awesome UI – it’s even responsive
●
Start and stop services from the UI
●
Analytics, historical data, trend predictions, real-time
charts
●
Commercial product, but payment is one-time and the
license is perpetual – and it’s cheap, on top*
I’m in no way affliated with M/Monit. Just love the product!
*In September 2017, it costs 65€ for 5 monitored hosts, up to 699€ for 1000 hosts.
M/Monit UI
M/Monit UI
M/Monit UI
Going further Why stop now?
Keeping it secure(-ish)
●
As few public IP addresses as possible
●
Fail2ban
●
SELinux / AppArmor
●
No passwordless sudo – ever
●
Public key SSH
●
External access through the load balancers:
$ ssh -t you@public.ip ssh you@some.private.ip
There’s an app a tool for that
●
Centralize logs with Elastic Stack (Logstash,
Elasticsearch and Kibana)
●
Manage the crontab with Crontab UI
●
DB status and analytics with Cluster Control
●
Continuous Integration/Deployment
– GitLab is FOSS and self-hosted for greater control
One more thing Two, actually…
Geographic distribuition
●
Avoid datacenter SPOF
●
Watch your latency!
●
Should I say it again?…
Containers
●
Can be deployed pretty much on demand
●
Easily switch hosting (ahem… talk to your hoster?)
Q&A
“Ask, and it shall
be given to you”
Mathew, 7:7
Thank you
Marco Amado
Lead Developer @ Moloni
/mjamado
www.dreamsincode.com

More Related Content

What's hot

Distributed Queue System using Gearman
Distributed Queue System using GearmanDistributed Queue System using Gearman
Distributed Queue System using GearmanEric Cho
 
Gearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleGearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleMike Willbanks
 
Khanh-Nguyen - Gearman - distributed process solution
Khanh-Nguyen - Gearman - distributed process solutionKhanh-Nguyen - Gearman - distributed process solution
Khanh-Nguyen - Gearman - distributed process solutionJavaScript Meetup HCMC
 
Distributed Applications with Perl & Gearman
Distributed Applications with Perl & GearmanDistributed Applications with Perl & Gearman
Distributed Applications with Perl & GearmanIssac Goldstand
 
Combining the strength of erlang and Ruby
Combining the strength of erlang and RubyCombining the strength of erlang and Ruby
Combining the strength of erlang and RubyMartin Rehfeld
 

What's hot (8)

Distributed Queue System using Gearman
Distributed Queue System using GearmanDistributed Queue System using Gearman
Distributed Queue System using Gearman
 
Gearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleGearman: A Job Server made for Scale
Gearman: A Job Server made for Scale
 
Queue your work
Queue your workQueue your work
Queue your work
 
Khanh-Nguyen - Gearman - distributed process solution
Khanh-Nguyen - Gearman - distributed process solutionKhanh-Nguyen - Gearman - distributed process solution
Khanh-Nguyen - Gearman - distributed process solution
 
Distributed Applications with Perl & Gearman
Distributed Applications with Perl & GearmanDistributed Applications with Perl & Gearman
Distributed Applications with Perl & Gearman
 
Combining the strength of erlang and Ruby
Combining the strength of erlang and RubyCombining the strength of erlang and Ruby
Combining the strength of erlang and Ruby
 
Dev ops for developers
Dev ops for developersDev ops for developers
Dev ops for developers
 
At Scale With Style
At Scale With StyleAt Scale With Style
At Scale With Style
 

Viewers also liked

Big Data Expo 2015 - Data Science Center Eindhove
Big Data Expo 2015 - Data Science Center EindhoveBig Data Expo 2015 - Data Science Center Eindhove
Big Data Expo 2015 - Data Science Center EindhoveBigDataExpo
 
Cloud Camp: Infrastructure as a service advance workloads
Cloud Camp: Infrastructure as a service advance workloadsCloud Camp: Infrastructure as a service advance workloads
Cloud Camp: Infrastructure as a service advance workloadsAsaf Nakash
 
Events Processing and Data Analysis with Lucidworks Fusion: Presented by Kira...
Events Processing and Data Analysis with Lucidworks Fusion: Presented by Kira...Events Processing and Data Analysis with Lucidworks Fusion: Presented by Kira...
Events Processing and Data Analysis with Lucidworks Fusion: Presented by Kira...Lucidworks
 
Status Quo on the automation support in SOA Suite OGhTech17
Status Quo on the automation support in SOA Suite OGhTech17Status Quo on the automation support in SOA Suite OGhTech17
Status Quo on the automation support in SOA Suite OGhTech17Jon Petter Hjulstad
 
Chapter 3 Computer Crimes
Chapter 3 Computer  CrimesChapter 3 Computer  Crimes
Chapter 3 Computer CrimesMar Soriano
 
De Persgroep Big Data Expo
De Persgroep Big Data ExpoDe Persgroep Big Data Expo
De Persgroep Big Data ExpoBigDataExpo
 
Oracle cloud, private, public and hybrid
Oracle cloud, private, public and hybridOracle cloud, private, public and hybrid
Oracle cloud, private, public and hybridJohan Louwers
 
Big data for cio 2015
Big data for cio 2015Big data for cio 2015
Big data for cio 2015Zohar Elkayam
 
Delivering Quality Open Data by Chelsea Ursaner
Delivering Quality Open Data by Chelsea UrsanerDelivering Quality Open Data by Chelsea Ursaner
Delivering Quality Open Data by Chelsea UrsanerData Con LA
 
Philips Big Data Expo
Philips Big Data ExpoPhilips Big Data Expo
Philips Big Data ExpoBigDataExpo
 
Business model cavans nl-sep-2014
Business model cavans nl-sep-2014Business model cavans nl-sep-2014
Business model cavans nl-sep-2014RolandSyntens
 
AWSome Day - Milan, July 24th 2014
AWSome Day - Milan, July 24th 2014AWSome Day - Milan, July 24th 2014
AWSome Day - Milan, July 24th 2014Amazon Web Services
 
(SEC320) Leveraging the Power of AWS to Automate Security & Compliance
(SEC320) Leveraging the Power of AWS to Automate Security & Compliance(SEC320) Leveraging the Power of AWS to Automate Security & Compliance
(SEC320) Leveraging the Power of AWS to Automate Security & ComplianceAmazon Web Services
 
Cleared Job Fair Job Seeker Handbook June 15, 2017, Dulles, VA
Cleared Job Fair Job Seeker Handbook June 15, 2017, Dulles, VACleared Job Fair Job Seeker Handbook June 15, 2017, Dulles, VA
Cleared Job Fair Job Seeker Handbook June 15, 2017, Dulles, VAClearedJobs.Net
 
Trends at JavaOne 2016: Microservices, Docker and Cloud-Native Middleware
Trends at JavaOne 2016: Microservices, Docker and Cloud-Native MiddlewareTrends at JavaOne 2016: Microservices, Docker and Cloud-Native Middleware
Trends at JavaOne 2016: Microservices, Docker and Cloud-Native MiddlewareKai Wähner
 
NTT SIC marketplace slide deck at Tokyo Summit
NTT SIC marketplace slide deck at Tokyo SummitNTT SIC marketplace slide deck at Tokyo Summit
NTT SIC marketplace slide deck at Tokyo SummitToshikazu Ichikawa
 
Microsoft Big Data Expo
Microsoft Big Data ExpoMicrosoft Big Data Expo
Microsoft Big Data ExpoBigDataExpo
 

Viewers also liked (20)

Water resources
Water resourcesWater resources
Water resources
 
Big Data Expo 2015 - Data Science Center Eindhove
Big Data Expo 2015 - Data Science Center EindhoveBig Data Expo 2015 - Data Science Center Eindhove
Big Data Expo 2015 - Data Science Center Eindhove
 
Cloud Camp: Infrastructure as a service advance workloads
Cloud Camp: Infrastructure as a service advance workloadsCloud Camp: Infrastructure as a service advance workloads
Cloud Camp: Infrastructure as a service advance workloads
 
Oracle Cloud Café IoT 12-APR-2016
Oracle Cloud Café IoT 12-APR-2016Oracle Cloud Café IoT 12-APR-2016
Oracle Cloud Café IoT 12-APR-2016
 
Events Processing and Data Analysis with Lucidworks Fusion: Presented by Kira...
Events Processing and Data Analysis with Lucidworks Fusion: Presented by Kira...Events Processing and Data Analysis with Lucidworks Fusion: Presented by Kira...
Events Processing and Data Analysis with Lucidworks Fusion: Presented by Kira...
 
Status Quo on the automation support in SOA Suite OGhTech17
Status Quo on the automation support in SOA Suite OGhTech17Status Quo on the automation support in SOA Suite OGhTech17
Status Quo on the automation support in SOA Suite OGhTech17
 
Chapter 3 Computer Crimes
Chapter 3 Computer  CrimesChapter 3 Computer  Crimes
Chapter 3 Computer Crimes
 
De Persgroep Big Data Expo
De Persgroep Big Data ExpoDe Persgroep Big Data Expo
De Persgroep Big Data Expo
 
Oracle cloud, private, public and hybrid
Oracle cloud, private, public and hybridOracle cloud, private, public and hybrid
Oracle cloud, private, public and hybrid
 
Big data for cio 2015
Big data for cio 2015Big data for cio 2015
Big data for cio 2015
 
Delivering Quality Open Data by Chelsea Ursaner
Delivering Quality Open Data by Chelsea UrsanerDelivering Quality Open Data by Chelsea Ursaner
Delivering Quality Open Data by Chelsea Ursaner
 
Philips Big Data Expo
Philips Big Data ExpoPhilips Big Data Expo
Philips Big Data Expo
 
Business model cavans nl-sep-2014
Business model cavans nl-sep-2014Business model cavans nl-sep-2014
Business model cavans nl-sep-2014
 
AWSome Day - Milan, July 24th 2014
AWSome Day - Milan, July 24th 2014AWSome Day - Milan, July 24th 2014
AWSome Day - Milan, July 24th 2014
 
(SEC320) Leveraging the Power of AWS to Automate Security & Compliance
(SEC320) Leveraging the Power of AWS to Automate Security & Compliance(SEC320) Leveraging the Power of AWS to Automate Security & Compliance
(SEC320) Leveraging the Power of AWS to Automate Security & Compliance
 
Cleared Job Fair Job Seeker Handbook June 15, 2017, Dulles, VA
Cleared Job Fair Job Seeker Handbook June 15, 2017, Dulles, VACleared Job Fair Job Seeker Handbook June 15, 2017, Dulles, VA
Cleared Job Fair Job Seeker Handbook June 15, 2017, Dulles, VA
 
Trends at JavaOne 2016: Microservices, Docker and Cloud-Native Middleware
Trends at JavaOne 2016: Microservices, Docker and Cloud-Native MiddlewareTrends at JavaOne 2016: Microservices, Docker and Cloud-Native Middleware
Trends at JavaOne 2016: Microservices, Docker and Cloud-Native Middleware
 
NTT SIC marketplace slide deck at Tokyo Summit
NTT SIC marketplace slide deck at Tokyo SummitNTT SIC marketplace slide deck at Tokyo Summit
NTT SIC marketplace slide deck at Tokyo Summit
 
Microsoft Big Data Expo
Microsoft Big Data ExpoMicrosoft Big Data Expo
Microsoft Big Data Expo
 
Understanding big data
Understanding big dataUnderstanding big data
Understanding big data
 

Similar to High Availability Architecture for Legacy Stuff - a 10.000 feet overview

Keeping your rack cool
Keeping your rack cool Keeping your rack cool
Keeping your rack cool Pavel Odintsov
 
Keeping your rack cool with one "/IP route rule"
Keeping your rack cool with one "/IP route rule"Keeping your rack cool with one "/IP route rule"
Keeping your rack cool with one "/IP route rule"Faelix Ltd
 
murakumo Cloud Controller
murakumo Cloud Controllermurakumo Cloud Controller
murakumo Cloud ControllerShingo Kawano
 
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst ITThings You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst ITOpenStack
 
RedMart Migrating from EC2 to VPC with Chef
RedMart Migrating from EC2 to VPC with ChefRedMart Migrating from EC2 to VPC with Chef
RedMart Migrating from EC2 to VPC with ChefRitesh Angural
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Docker, Inc.
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013dotCloud
 
Kamailio with Docker and Kubernetes
Kamailio with Docker and KubernetesKamailio with Docker and Kubernetes
Kamailio with Docker and KubernetesPaolo Visintin
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE
 
Deploying Perl apps on dotCloud
Deploying Perl apps on dotCloudDeploying Perl apps on dotCloud
Deploying Perl apps on dotClouddaoswald
 
Docker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsDocker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsFederico Michele Facca
 
Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterTim Ellison
 
Porting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsMarcelo Pinheiro
 
The Real World - Plugging the Enterprise Into It (nodejs)
The Real World - Plugging  the Enterprise Into It (nodejs)The Real World - Plugging  the Enterprise Into It (nodejs)
The Real World - Plugging the Enterprise Into It (nodejs)Aman Kohli
 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceEvan McGee
 
Your Inner Sysadmin - LonestarPHP 2015
Your Inner Sysadmin - LonestarPHP 2015Your Inner Sysadmin - LonestarPHP 2015
Your Inner Sysadmin - LonestarPHP 2015Chris Tankersley
 
Homebrew Your Own Metrics - An IBM Domino Administrator's Guide to SNMP (MWLU...
Homebrew Your Own Metrics - An IBM Domino Administrator's Guide to SNMP (MWLU...Homebrew Your Own Metrics - An IBM Domino Administrator's Guide to SNMP (MWLU...
Homebrew Your Own Metrics - An IBM Domino Administrator's Guide to SNMP (MWLU...Ray Bilyk
 
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...arnaudsoullie
 
Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)Haytham Elkhoja
 
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...DataStax
 

Similar to High Availability Architecture for Legacy Stuff - a 10.000 feet overview (20)

Keeping your rack cool
Keeping your rack cool Keeping your rack cool
Keeping your rack cool
 
Keeping your rack cool with one "/IP route rule"
Keeping your rack cool with one "/IP route rule"Keeping your rack cool with one "/IP route rule"
Keeping your rack cool with one "/IP route rule"
 
murakumo Cloud Controller
murakumo Cloud Controllermurakumo Cloud Controller
murakumo Cloud Controller
 
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst ITThings You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
 
RedMart Migrating from EC2 to VPC with Chef
RedMart Migrating from EC2 to VPC with ChefRedMart Migrating from EC2 to VPC with Chef
RedMart Migrating from EC2 to VPC with Chef
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
 
Kamailio with Docker and Kubernetes
Kamailio with Docker and KubernetesKamailio with Docker and Kubernetes
Kamailio with Docker and Kubernetes
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
 
Deploying Perl apps on dotCloud
Deploying Perl apps on dotCloudDeploying Perl apps on dotCloud
Deploying Perl apps on dotCloud
 
Docker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsDocker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platforms
 
Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark faster
 
Porting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability Systems
 
The Real World - Plugging the Enterprise Into It (nodejs)
The Real World - Plugging  the Enterprise Into It (nodejs)The Real World - Plugging  the Enterprise Into It (nodejs)
The Real World - Plugging the Enterprise Into It (nodejs)
 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a Microservice
 
Your Inner Sysadmin - LonestarPHP 2015
Your Inner Sysadmin - LonestarPHP 2015Your Inner Sysadmin - LonestarPHP 2015
Your Inner Sysadmin - LonestarPHP 2015
 
Homebrew Your Own Metrics - An IBM Domino Administrator's Guide to SNMP (MWLU...
Homebrew Your Own Metrics - An IBM Domino Administrator's Guide to SNMP (MWLU...Homebrew Your Own Metrics - An IBM Domino Administrator's Guide to SNMP (MWLU...
Homebrew Your Own Metrics - An IBM Domino Administrator's Guide to SNMP (MWLU...
 
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
Introduction to Industrial Control Systems : Pentesting PLCs 101 (BlackHat Eu...
 
Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)
 
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
A Detailed Look At cassandra.yaml (Edward Capriolo, The Last Pickle) | Cassan...
 

Recently uploaded

Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMartaLoveguard
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一Fs
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Lucknow
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一Fs
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012rehmti665
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 

Recently uploaded (20)

Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 

High Availability Architecture for Legacy Stuff - a 10.000 feet overview

  • 1. High availability architecture for legacy stuff A 10.000 feet overview
  • 2. $whoami Marco Amado Lead Developer @ Moloni /mjamado www.dreamsincode.com
  • 3. $whoiaint Not a sysadmin (not worthy of the title, at least) Not a DevOps guru Not a high availability ninja Not a scalabilty jedi Take that into account
  • 4. Notes ● This is code ● Sometimes, there’s code you should change ● “Talk to your hoster” symbol
  • 5. Motivation Or how a watched kettle never boils, until your kitchen’s on fre
  • 6. Hypothetical Product Find-a-Rhyme Given a word, the application returns a set of words that rhyme. You can flter by word class, type of rhyme, word length...
  • 7. Where we’re standing Ye olde LAMP stack ● Commonly found on shared hosting ● Network latency between PHP and DB is amazing – as in zero amazing ● Everything is a single point of failure ● Find-a-rhyme is probably safe, right? Right? Linux Apache MySQL/MariaDB PHP Suddenly...
  • 8. Dictatorship! First order: all written communications should be in verse. And it has to rhyme. People fock to Find-a-rhyme. Modern Infantry by Litev CC BY-SA 3.0 https://commons.wikimedia.org/wiki/File:Modern_infantry.png
  • 9. Problems Overview What will we encounter if we want to avoid touching the code (mostly)
  • 10. Overview ● Load balancing ● DB clustering ● Sessions ● User assets ● Single point of failure ● Monitoring ● Security
  • 12. Hardware Pros ● Faster than software (in general) ● Most have integrated intrusion detection and/or prevention Cons ● Pricey as hell ● Confguration not easily portable Pros ● FOSS (mostly) ● Confguration is easy to reason about Cons ● Can be slow (depending on machine) ● If FOSS, you’re on your own Software
  • 14. frontend web bind find-a-rhyme.com:80 default_backend web backend web mode http balance leastconn server s1 ip.app1:80 server s2 ip.app2:80 server { listen 80; location / { proxy_pass http://web; } } upstream web { least_conn; server ip.app1; server ip.app2; } ¯_( ツ )_/¯
  • 15. SSL Termination Do it on the load balancers! global ca-base /etc/ssl/certs crt-base /etc/ssl/private ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128: DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 tune.ssl.default-dh-param 2048 frontend web bind find-a-rhyme.com:80 bind find-a-rhyme.com:443 crt path/to/certificate.pem
  • 16. Database servers All your data are belong to us!
  • 17. MySQL/MariaDB Replication Group Pros: ● Battle tested ● Big company backed (Oracle) Cons: ● Confguration is a PITA XtraDB Cluster & Galera Cluster Pretty much the same product Pros: ● Multi master from the start ● Partners with MariaDB ● Confguration is a breeze Cons ● Consensus can be a problem
  • 18. Galera Cluster ● Included with MariaDB 10.1 ● Make sure to also install percona-xtrabackup ● A dozen lines of confguration: [mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_cluster_name="my_cluster" wsrep_cluster_address="gcomm://ip.db1,ip.db2,ip.db3" wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth="sst:somepassword" wsrep_node_address="each.machine.ip" wsrep_node_name="eachMachineName"
  • 19. HAProxy configuration for DB backend cluster mode tcp option tcpka option mysql-check user healthUser balance static-rr server db1 ip.db1:3306 check server db2 ip.db2:3306 check server db3 ip.db3:3306 check frontend cluster bind loadbalancer.ip:3306 default_backend cluster Change the connection URL in your codebase to this. This confguration means the application servers must connect to the cluster via load balancers, which in turn connects to the DB servers. Network latency will be an issue.
  • 21. Session Handling Sticky sessions Pros: ● Easy confguration on load balancer Cons: ● Bad UX on server fail ● Not exactly load balanced Memcached Pros: ● Easy confguration on php.ini Cons: ● Install memcached, I guess?...
  • 22. Sessions with memcached Easy confguration on php.ini (or included fles): session.save_handler = memcache session.save_path = “tcp://ip.app1,tcp://ip.app2” memcache.allow_failover = 1 memcache.session_redundancy = 3 Number of memcached servers + 1. It’s an off-by-one bug in PHP, since 2009 (never fxed): https://bugs.php.net/bug.php?id=58585
  • 23. User assets CDN ● Heavy changes to codebase ● Lack of control ● More expenses Samba, NFS ● Single point of failure ● Slow as hell IPFS
  • 24. GlusterFS ● Distributed fle system ● Replicated mode ● Transparent operation ● Easy CLI confguration: ● fstab confguration: $ sudo gluster peer probe ip.other.app.server $ sudo gluster volume create volName replica 2 transport tcp ip.app1:/path ip.app2:/path force $ sudo gluster volume start volName $ sudo gluster volume set volName auth.allow ip.app1,ip.app2,127.0.0.1 localhost:/volName /path glusterfs noauto,x-systemd.automount 0 0
  • 25. Where we’re standing LB App1 App2 DB1 DB2 DB3 SPOF
  • 27. Keepalived Implementation of Virtual Router Redundancy Protocol (VRRP) – in a nutshell, automatic assignment of IP addresses. ● First and foremost, confgure IP forwarding and non-local bind on sysctl.conf: net/ipv4/ip_forward = 1 net/ipv4/ip_nonlocal_bind = 1 “Jumping” IP addresses can be frowned upon by datacenters. Be sure to really talk to your hoster about this.
  • 28. keepalived.conf (extract) vrpp_instance VI1 { virtual_router_id 50 # mostly arbitrary – make sure it’s unique interface NIC advert_int 1 state MASTER # BACKUP on the other loadbalancer priority 200 # 100 on the other load balancer unicast_src_ip this.loadbalancer.ip unicast_peer { other.loadbalancer.ip } virtual_ipaddress { your.public.ip dev NIC } }
  • 29. Virtual IP for DB access vrpp_instance VI2 { virtual_router_id 60 # mostly arbitrary – make sure it’s unique interface NIC advert_int 1 state MASTER # BACKUP on the other loadbalancer priority 200 # 100 on the other load balancer unicast_src_ip this.loadbalancer.ip unicast_peer { other.loadbalancer.ip } virtual_ipaddress { a.free.private.ip dev NIC } } Change the connection URL in your codebase to this.
  • 30. Don’t forget SSL termination Two load balancers with failover, two servers where to make SSL termination: Duplicate your certifcates!
  • 32. Monitoring When things go sideways, be the frst to know
  • 33. Monit ● Monitoring and managment ● Can do automatic maintenance and repair ● Can execute arbitrary actions on errors ● Can monitor system, processes, flesystem, scripts...
  • 34. Monit sample config check process php with pidfile /var/run/php/php7-fpm.pid start program = ”/usr/bin/service php7-fpm start” stop program = ”/usr/bin/service php7-fpm stop” if failed unixsocket /var/run/php/php7-fpm.sock then restart if 2 restarts within 4 cycles then alert check filesystem disk with path / if space free < 20% then alert check network private interface eno1 start program = ”/sbin/ifup eno1” stop program = ”/sbin/ifdown eno1” if failed link for 3 cycles then restart if saturation > 90% for 20 cycles then alert
  • 36. M/Monit ● Aggregate all your Monit instances ● Awesome UI – it’s even responsive ● Start and stop services from the UI ● Analytics, historical data, trend predictions, real-time charts ● Commercial product, but payment is one-time and the license is perpetual – and it’s cheap, on top* I’m in no way affliated with M/Monit. Just love the product! *In September 2017, it costs 65€ for 5 monitored hosts, up to 699€ for 1000 hosts.
  • 40. Going further Why stop now?
  • 41. Keeping it secure(-ish) ● As few public IP addresses as possible ● Fail2ban ● SELinux / AppArmor ● No passwordless sudo – ever ● Public key SSH ● External access through the load balancers: $ ssh -t you@public.ip ssh you@some.private.ip
  • 42. There’s an app a tool for that ● Centralize logs with Elastic Stack (Logstash, Elasticsearch and Kibana) ● Manage the crontab with Crontab UI ● DB status and analytics with Cluster Control ● Continuous Integration/Deployment – GitLab is FOSS and self-hosted for greater control
  • 43. One more thing Two, actually… Geographic distribuition ● Avoid datacenter SPOF ● Watch your latency! ● Should I say it again?… Containers ● Can be deployed pretty much on demand ● Easily switch hosting (ahem… talk to your hoster?)
  • 44. Q&A “Ask, and it shall be given to you” Mathew, 7:7
  • 45. Thank you Marco Amado Lead Developer @ Moloni /mjamado www.dreamsincode.com