Ops working with Devs, • Everything in true peace and happiness. ◦ Everybody listen to each other, ◦ Repos are forked, ◦ PRs are raining, ◦ We are agile and birds are singing ! • So far from the begining and the BOFH
believed in it, we were enthusiasm, we tried ... • But we did not succeed yet. • As a great man once said : "La route est droite mais la pente est forte !"
the situation we are in today ? - Are you satisfied ? - Did it go better ? - Do we have less issues ? - Are we faster ? - Did we break these silos and are we working together ? - What do you feel about today / 2 years ago ? (Seriously no kidding, be true)
point of view, • We can build "systems" in a reproductible and consistent way ! And we can almost do it fast (if we have machines available...) => We have almost removed the "unknown" part of the system => We have improved our trust in the constency of multiple servers, and accross environments*
point of view, • We tried to package software and make CI pipelines => Safer + More consistent • But from devs point of view: => Packaging is hard => Packaging /deployment is slow => Packaging brings contraints
ass Viadeo’s App configuration files managed by Puppet • For “security reason”, Ops did not open their Puppet stuff yet • Ops do not merge the PR fast enougth • We do not know when it will be deployed and if there won't be side effects => We need to be faster => We need to improve QA and tests => BIG Ops internal project (Sorry guys we have to work on these issues too ...)
ass Viadeo Apps conf files are “complex” • Viadeo Apps conf files are different ... how to handle common "values" ◦ Json, Yaml, properties, ini, other ◦ Language specific, ◦ “Key” name different ◦ … • We did not succeeed to SPLIT Infra / Apps specific data YET
“Production pipeline”, aka Demo, Preprod, Prod, is handled by Ops and Puppet • Devs like to work on localhost => Vagrant ? “Yeah ... sounds great but it scares me so, maybe but we are not here yet”
layer ? • Without having the congestion point at the config file ownership / update velocity ? Some projects have embedded again the conffiles into the project’s jars … :(
only 1 server in its server list. • So every operations are send to 127.0.0.1:<servicePort> -> It is often configured that way on Devs workstation -> Ops can provide and guarantee this part easily and consistently thanks to cfgmgnt tools 3.a - Proposition
• MySQL : Local ProxySQL / MaxScale • HTTP Services : Local Haproxy with DNS caching, queuing, logging • DNS : Local dnsmasq resolver with DNS query routing • Log collection : Flume Local agent / Logstash • ElasticSeach : Local ES Node without data • ...
dev or production (docker make sense then :) ) • Complexity : It's Ops friendly ◦ Easily updatable / automated thanks to cfgmgnt tools => Monitoring is automated => Allow maintenance operations
◦ Multiplexing connections, ◦ Providing queueing / caching facilities to reduce / enhanced the performance issues • Abstract infrastructure even more ◦ ProxySQL can do the query routing that will “solve” our “sharding” model issue that we only faced in production
chain may even not be extended ◦ Rather than having 1 (or 2) central LB / Proxy called by evey app servers with 2 links network latency… => You have 1 LB / Proxy per app server