so yeah thanks everybody for coming to
our presentation on milliwatts and
integrity we hope that by the end that
fancy title makes a little bit of sense
a couple of things though if you want to
have a disclaimer for you all just in
case you're looking for a technical deep
dive into building devops systems and so
on you probably are gonna get that here
this is more of a conceptual overview of
automating DevOps processes some of the
important considerations so if you
really wanted to watch people drop some
kind of bill with some containers and
things like that anyway there's one
other session otherwise please feel
welcome you stay there with us at its
core the very basic element of this
presentation today is it's really about
automation and platform a service that
we both work for platform as a service
company so this isn't in any way meant
to be a particular endorsement of our
company but on the conceptual level
we're all doing the same thing whether
we're implementing it differently in
using some different tools and things
like that
but we still come from the background of
really sort of embracing this process of
beginning automation where we're adding
some of the DevOps principles to DevOps
except some building DevOps tools and at
work and hopefully that's what that's
what we want to explain
how to make sense been in illness so
before we go too far though I know some
people here I don't know everybody here
but quick show of hands how many people
here would you consider yourselves to be
developers there's actually writing code
right now great so just you two guys
didn't raise your hands correct we're
doing show you what are you doing this
space isn't sales okay for a drew boldly
and what's your involvement specifically
a Drupal yeah we work with Drupal okay
cool
small Drupal shop
so where'd you consider yourself a
developer so you came in last person
yeah proposed from more strongly a site
builder okay cool so I think for a lot
of you this first anecdote might make
sense all right so this is the general
principle if you all yeah come on let me
know when to change the last quick all
right so this is just you know from
April 2017 global Internet use and
penetration the purpose of showing you
this slide and the sheer numbers of
people and people accessing the Internet
and things like that cuz actually I want
to I want to actually create an
anecdotal Association for you something
that can tie back to you towards the end
so if you consider like for these
numbers and this many people the
question I have is for the for the
overwhelming majority of these people
the experience of accessing Internet
happens without any of them ever needing
to know anything about the protocols
required to run an access network coding
software setting up servers etc right I
mean can you imagine how long it would
take to actually get this sort of
critical mass of users if people had to
understand things like tcp/ip or if we
want make it even easier than that for
people to tell you what tcp/ip
and means right so the technologies and
the the separation that goes into
creating systems for users versus people
that are building those systems there's
a there's a significant shift in the
mine stack the way that you approach I
have a being a user or being a developer
on that and so that brings us to the
next slide kind of is that this one yeah
as I said hopefully by the end of this
session we've been able to clarify more
about we hand the title develops and
data integrity but in its simplest form
what we really want to accomplish is to
demonstrate the advantage of automating
DevOps
away and before we can do that we don't
want to get too far ahead of ourselves
we just want to we don't even want to
think about DevOps at the moment first
let's go back to the story about people
accessing the Internet accessing
websites when let's think about websites
and layers right so when Aaron was sort
of explained the seeds of the idea this
talk and I was trying to get my heads or
a head around the seeds of the idea this
talk what a really kind of boil down to
for me is the concepts of you know
interface versus implementation and so
that last slide with the stats about how
many people are online and the
discussion about new HTTP is or a TCP or
any of the underlying sort of nuts and
bolts as far as how a user gets online
and interacts with the thing they're
trying to interact with you know you've
got the interface which is what people
are trying to do and what they're trying
to be done and you've got the
implementation which is the nuts and
bolts via underlying sort of structure
of all that so he we have sort of drip
you know kind of drawn up this matrix
here of functional and non functional
parts or application versus
implementation and so that's you know
thinking about it in sort of this way
the functional aspects of an application
would be like what is it you're trying
to get done like why are you users here
you know what is this thing that you're
trying to build how does it work
not necessarily how its built but how
does it work what does it do you know
I'm you know you've got an e-commerce
site and it's going to charge customers
and maybe it's a site like Etsy or
something like that where you know it's
a community oriented site so you know
you're gonna want to send out alerts
when somebody buy something from
somebody so they can ship it out you
might want to have a forum for allowing
your users to talk to each other these
are like the the y-your people are here
at your application as far as the
functional implementation of that this
is where you kind of get into the fun
stuff for the site builders and the
developers of us you know like what data
structures are you to use to bring it
like specifically into Drupal and what
fields are you gonna put on these nodes
what are the different types of news
you're gonna have or the different
pieces of content you're gonna have you
know upon a more of a UI level what
color menu buttons are you gonna choose
you know what fonts are you gonna use
these are like the sort of the
functional implementation of how you're
gonna get these things done over here in
the non-functional access these are like
the things that you know like you and
your users aren't really going to think
about these things these are like what
are you trying to get done here you want
a graphical user interface presumably if
you're building a web app you know like
the thing that people come to in a
browser is your GUI you want it to be
easier easy to use these are sort of
like just the concept that you that you
want to bring across in your app and
then down here this is the really nuts
and bolts stuff here nobody really wants
to think about how to get the bits onto
disk you know that your users are
reading and writing to your application
all day nobody wants to think about data
corruption or making sure that data is
consistent across you know not just your
production environment but say your
different development environments these
are the real nuts and the bolts that you
know that are maybe fun to think about
on a conceptual level and for some
people as a career path but for most of
us that are building applications on a
day to day basis just are things that
we've rather sort of
for Matt to somebody else or to another
service to take care of and so that's
what we're talking about as far as the
functional and non-functional aspects of
these two you know interface versus the
implementation okay how many people are
familiar with all of this okay so so
you've seen it before ish okay cool
that's if you work for a platform as a
service company you probably see this
graphical life yeah so I want to skip to
the next slide but just before I do real
quick
basically my development was really kind
of birth right around here right like
sure that there were some DevOps
practices have happening here but that
generally used to be system
administration right and that's sort of
where DevOps is gone with the event of
cloud and different cloud offerings so
just keep that in mind I'm still going
to talk about this a little bit more but
I like the next slide better this one
always makes it really easy for people
that aren't familiar with that this is
the as a service model and its really
great for the on-prem versus
infrastructure the service platform as a
service and software as a service so
this is back in the day some people here
maybe everybody here at least you know
at least some people here have the
experience of when they first started
creating web applications it was just
you know they had their own server
probably running in the closet or there
was a company server in the
you know plan to close it in another
closet where maybe the food was kept and
you know somewhere out of the way and
you had to do everything right you had
to set up all of the environments you
have to have your production environment
you had to think about this one stay
with you - yeah and this was in this one
and this was you know you could either
be a web developer and a system
administrator but as I think data would
show people would pretend to go one way
or the other either can your systems
engineer or developer because this is an
entirely different skill set right well
as part of that skill set started going
away you guys prefer the actual computer
model or is the pizza one phony so as as
some of this stuff started actually
going away and being managed outside the
service then you didn't need to have the
same level of expertise but you needed
to have a new level of expertise right a
new thing so if you're barely for me I
try not to read directly from slides
books the definition of DevOps from
Wikipedia DevOps is a clipped compound
of death development and operations is a
software engineering culture and
practice that aims at beautifying
software development and software
operations the main characteristic of
DevOps movement is to strongly advocate
automation and monitoring and all steps
of software construction from
integration testing releasing to
deployment infrastructure management
DevOps aims at shorter development
cycles increased development frequency
more dependable releases in close
alignment with business objectives great
that's so this a nice big mouthful but
literally what DevOps is is about
breaking down the information silos that
and IT teams prior to these models right
your system admins and your developers
and trying to treat your infrastructure
as code right so that the developers
could start having or the engineering
skills and then the system admins could
start being one of the developers son
trying to blend these two together
the thing is DevOps is it's not really
working out as it was intended right
DevOps just like system administration
before it has become its own unique and
complex set of skills with an
ever-growing set of tools now yeah for a
lot of people it's it's fun
all right at the end of the day it's
just it's a fun thing to be able to go
in and create docker make files and
start playing with all these different
pieces of the system that have really
really been enabled again by sort of the
more and more granular approach to
infrastructure with the client projects
going from actual dedicated machines to
virtual machines to containers but
they're all dis essential it's just
getting smaller but it is still doing
the same thing as before but now when
you get into these smaller pieces now
you have to have the micro services to
make them all work not that different
from what you were doing before was this
generator so yeah so generally it's fun
for some folks thank you but it's
starting to be shown that the time spent
orchestrating and configuring VMs
containers etc is just lost time on
developing
so and just go ahead and click through
with an ever-growing set of tools this
is nice
yeah this is similar Prezi let's leave
it there put a lot of time in this on me
yeah you don't believe me I mean yeah
this is just a small small like this is
just literally like the first
well other than lander that's not really
that longs to like have a patrol on the
ground so just what he didn't show up
because actually lend us more of this
automated process like we're talking
about but the rest of these they're all
great but that's a really small list you
know you just Google have ups tools and
all of a sudden yeah you're expected to
learn how to use each in one of these
and make them communicate and work
together so yeah reminding him where
were you supposed to do the development
where are you supposed to write code so
I think in the city
I think besides the time required to
learn to run all these systems
efficiently there is another really
major issue besides just knowing how to
use these systems and run them and the
major limiting factor
it is system integrity
quick quick again no there's more yeah
cuz up your system integrity first you
have to learn the tools then you have to
know how to make them work and then you
have to worry about the integrity of the
system so the data used and maintained
by the system so sorry if we break this
up into different parts of integrity we
start with data integrity
David integrity is just the data use and
maintained by the system are complete
correct and for your computations right
so how do you ensure that your data
stays complete and consistent all right
the next is behavioral integrity and
this is less about your data and the
environments that you're working in so
how many people have experience creating
a production environment and a staging
environment from scratch on a Linux box
yeah has your code always moved after
this sleep between those environments no
the other person said nope everybody
else here they had a heart attack
if so so that's the that's the
behavioral integrity of the system right
and this gets even more complex when you
move away from centralized systems which
is where you know servers want to be
ends and you're still doing everything
on a centralized to distributed systems
where you're not breaking out the
database over here and you're breaking
out the runtimes over here and you're
putting in your research and next thing
over here you have all these different
pieces and you can distribute those out
so now you take that one level further
and you put those all into containers
and you still want to make sure that
your data is intact which is just one of
those skills that you picked up while
you're playing with any number of those
DevOps tools and that each of those
environments that you're building and
working in are also intact so that they
can both work together and then security
oh I'm sorry I didn't get the definition
of behavioral integrity the system
behaves as intended and it's free of
logical errors very simple right but
again the point being that I ask is that
the case how often is that the case when
you're spending all of these things up
and you're distributing exactly and then
the security is just the system is able
to restrict access to its data and
functionality to authorized users only
so history shows that actually most
software failures such as loss of data
illogical behavior unauthorized access
are the result of violated system
integrity one of those breaks down for
this is nobody's not the only elements
but this is a key a key element a key
concept and I think that from the DevOps
world these are the things that make
when you can manage those aspects of the
system appropriately that's what enables
the concepts of continuous integration
and continuous delivery right you have
to get these boxes checked before you
can actually start working on CIC
so that brings us back to this moment
and
to be honest I forget what I put there
so back to pizza back to pizza alright
so the general idea this is starting
from the very very old school the DevOps
kind of came into play here and then our
argument is that the next progression to
actually improve everything this
automation and that format of servers at
its core is just simply the automation
of DevOps principles its abstracting
away all that work from those tools that
you have to learn and although that
might be fun on that it might be cool
it's taken away your need to be
kubernetes experts and doctor experts
and Jenkins experts and circle CI or any
of these other things you can just now
essentially become much like the web
users that we talked about at the very
beginning you can just become a user of
the system that you don't have to know
all of the protocols and implementation
factors that are happening behind the
scenes to take advantage of the
technology and a much more efficient and
effective kind of way
so yeah but pretty soon
why platform-as-a-service I said
pause and it's very core is an
automation of DevOps making DevOps into
limited ops or on really good system no
ops so there's the first part of the
title we've already covered the data
integrity so hopefully it's all kind of
a wall constructed pause manages not
only manage is not only the integrity of
the system for you but the complexity as
well and that is quartz easily and
essentially just software doing all of
the DevOps work for you it's just
another piece of software that you don't
need to know what's happening on the
back end to utilize that and make your
jobs in life better so if you consider
it in layers just like we did before for
the website users and we approach web
development as a user of a system rather
than a creator and maintainer of all
systems related to developing and
deploying code that allows you to focus
on what really matters or that John
would you yes you're so so we're back to
this matrix now you know the functional
and non-functional aspects of both well
the app application versus the
implementation the application I like I
said is beginning this talk I think of
more as the interface you know what are
the things that you are trying to do in
your job what is it the things that you
are trying to get done these are
questions you kinda have to ask upfront
that's in that part how are you going to
manage code are you going to FTP it to
the server are you going to commit it to
get and push it somewhere and then have
stuff happen in order for it to be
deployed how are you going to deploy new
features is it again is it gonna be a
process of ftp code somewhere or having
maybe you push it again and have jenkins
create some sort of build artifact and
then push that out into your development
environments how are you going to manage
those development environments are you
going to give each user their own
virtual machine in order to have them
banging on whatever it is they're
banging on that particular sprint or are
you going to create something a little
bit fancier where maybe each feature
that a set of developers are going to be
working on working on will have its own
development environment somehow the
implementation aspects of you know
funking like this is this is where you
get into like this gets a little closer
to the nuts and the bolts as far as you
know how are you gonna save the data you
know now nowadays as he talked about
earlier you know these these granules
that we had to think of as developers
and developers who are engaging in
DevOps processes just keep getting
smaller and smaller and smaller so in
the in the beginning we had a you know a
hearts you know a metal server that we
would deploy our code onto and
eventually we started using shared
servers probably at some point virtual
machines came along with that things
like Amazon Web Services and Linode most
of the server you know probably services
that a lot of us have used and then it
gets broken down into containers well
okay containers are a great thing great
thing for a number of reasons but they
also introduce a whole lot more
complexity so how are you going to
divide up that unit of work you know if
you're working on a Drupal site and you
want to deploy into a containerized
infrastructure are you going to just
throw everything Drupal the database the
solar server are you going to throw that
all into one container and deploy that
or are you going to split everything up
into a bunch of different containers
somehow Network them together you know
how are you going to specify what it is
you are actually trying to do and this
is getting more into the even further
into container orchestration you know
there's a variety of different container
orchestration platforms out there like
docker compose kubernetes etc they each
have their own requirements far as
telling them what to build at the end of
the day you know spontaneous development
environments maybe like I was saying
earlier each one in each feature or git
branch that you're working on will have
its own
environmentally wouldn't that be amazing
without having to actually create a VM
install the software on there create the
Jenkins job to watch this git branch and
push it over to that VM you know every
single time you want to work on a new
feature and the non-functional aspects
of all these things actually stay the
exact same you know like I don't these
are the things you don't really want to
think about the GUI it's each of course
it should be easy to use this is where
you know as earlier this is where the
rubber really meets the road as far as
you know how the thing gets built the
data storage data integrity the attack
vectors of this thing these are the
things you don't want to have to think
about you know so that's why in this day
and age you know a lot of people choose
to go with the platform as a service
DevOps it was is still a concept of
allowing operations and debt and
development to work together to increase
your develop your deployment cycles and
features that you're trying to get out
to your users but it introduces so much
complexity that it actually makes it
harder to fulfill that promise
and so farming some of those things out
like the you know the the electricity in
the oven and the gas for your actual for
your pizza oven that's where a platform
as-a-service can come in sort of
abstract some of the need to think about
every single thing in your system and so
that's what passed so something to wrap
things up first of all I think that the
proper title was no loss and system
integrity rather than data
because that's breaking they take me up
into those three different sections
those are the things that you have to
worry about to make a successful
deadlock system we're not here trying to
say that you know you shouldn't do that
option things like that rather argument
is DevOps is just in its it's the
progression of systems engineering
assistance administration and now it has
its own complexities and tool sets and
expertise that's required to fully do it
and if you're just one of those people
that loves doing it great you know I
mean that's that's cool I mean I spend
some time learning how to write demo
files myself and I don't do any other
sales guy I just thought it was cool to
be able to play with virtual you know
virtualization and so on but if you're
doing all that but you also code for a
living you know are you making your
hourly rate or your billing you know
what's it costing you as a developer to
learn this on their skill set if you do
it because you like it great but if it's
cutting into your bottom line and you
know that the blender solution out there
that's where the argument comes into
play of no loss and system integrity so
keep making great websites that's all we
have to talk about but we're here to
answer questions sorry is a bit short
this was our first time through my
actually
to share this life about an hour ago any
questions
yeah what are your feelings about why
not I mean you mentioned them a little
bit the end but for me it's sort of I
like to go out to eat meats analogy I
can't go out to you every night it's
more expensive in some ways anyway and
then like you sort of miss out so those
experiences learning how to be a better
cook you know I think there's some
innovation that you lose when you know
everyone starts using the same sort of
platforms and they're not creates the
new innovations on there and so how do
you like where do you draw the way kind
of the line really balance out which one
you think
human situation I think for me I usually
I would answer that is like the true
cost of ownership right I gave the true
cost of ownership answer there and
that's like what is it what is it
costing you from an opportunistic
standpoint you know what is the
opportunity cost and sometimes that
opportunity cost is directly your bottom
line right what is your client better
spent basically and well I wouldn't
disagree at all I think you know the
better you are and understanding all
that other stuff is probably going to
make you a more innovative and competent
developer and all you know Oh
well-rounded and in general I think
people in this industry tend to be the
type of people that also always want to
to level up right you want to be better
and I think that that's absolutely one
of the ways to do it but what is the
opportunity pops what is the trade-off
if you're there to make money if you're
running a team you want to see your
efficiencies maximized and you want to
you know cut into your bottom line from
both directions not only because you can
have rapid prototyping and shorter
iteration cycles but it's also costing
you less because you don't have to pay
people billable hours to configure your
infrastructure and micro services you're
saving a little bit so what does the
opportunity cost of what are you doing
it for but if you're doing it to level
up and to be an expert and that's what
you're calling in this industry is and
keep doing yeah I mean even using pieces
as example most people buy pizza they
don't necessarily make it home but those
that do become
and often like their own better than
what they combined so yeah developer
answer that I would give you is tagging
on do exactly that
you know you probably if you you might
have grandma's pizza crust recipe like
my mother-in-law makes an amazing pizza
crust and they never buy pizza because
hers is amazing you know so if that is
if you are able to roll precisely the
solution that you need for precisely
your business that might be one reason
why I've just camera on that real quick
and say hey you're selling that as a
service just exactly that's exactly the
best that's great then you're making
money doing that but if you're doing it
on your own I think that if your job is
as a pizza shop you're not be buying
pizzas from another place of shop and
then reselling into others you're gonna
make your own pizza you know there's
also and this is a case with Amy
platform-as-a-service you're going to
run into edge cases you know that the
platform-as-a-service probably doesn't
won't be able to support you know there
are plenty of use cases every day that
people come up with that we just can't
support yet because we're doubling this
thing over here or building that thing
over there and at the end of the day
everybody's application whether you
could take 12 drupal applications and
they would all have unique things about
them you know 95% of them things might
be the same and so it's when you run to
start running into those edge cases if
those edge cases are significant enough
to you in your application your business
that's when you might think about
rolling your own
I think I put it drupal context you got
the drupal learning curve which is you
can become a site builder you start to
understand some of the concepts and you
aren't quite at the best practices and
stuff you're kind of learning how to do
things and then you start wanting to
build better sites you start to learn
the programming and you get to the point
where no developer would ever want to
take your site from you because your
stuff is so crazy because you don't know
enough to actually do things the right
way and then you get to the standards
level you start understanding the best
practices and then your learning is in
the next stage where you're really
understanding how to do caching and
other things to deal with Drupal and
then you're at the Grand Master stairs
where you understand the front-end the
backend you're you're able to do all
those kind of steps and it's kind of
similar here with that if you just want
to set up a development environment
you're not worried about security you're
not worried about best practices you're
worried about just what works for you
and so you have that level of
understanding but when you're taking
into a production environment do you
want to be practicing this stuff where
you really need an expertise or your
site's going to get half or you know
whatever so it's kind of like how much
effort you want to put into learning it
compared to what level do you actually
want accomplish some solutions go all
the way to your desktop and help you
with the dev environment other solutions
are just here's a production and how
we're going to help you out with
production so it's kind of different
stages as far as what is your expertise
what what do you
learn you know if you're kind of
jack-of-all-trades master of song you
know maybe want to learn enough to get
to a certain level of doing things and
you want to run your own QA environment
but production and you're better off
leaving somebody else
I'm definitely conflicted because I
think there are moments where as a like
a team leader you want to build a team
that has capabilities of doing some of
these things and when the edge case
comes around they can sort of do it
right away
there are other instances where like if
there's a really high profile website or
something like that millions of users I
don't want people away happy like you're
saying so in that case it's probably
more radical to me to go with
platform-as-a-service something else
even the wrist is not loaded how big is
your team and even look at front-end
development okay you know we met
discussions about front and back in
development became the same developer do
both and stuff and it's late front end
just the appearance and stuff changes so
often there's so many things to come up
new technologies that you need to get
involved in stuff and it's the same
thing with security so much is happening
with security and performance and things
like that can you keep up if you're a
small like four person shout out can you
really afford somebody to understand
that level or you know I mean if you're
twenty person shots and yeah you kinda
have something that's doing an all time
but you mentioned like a really busy
website and maybe have somebody do it
then well that person with the expertise
is he going to get enough usage and
enough knowledge to be able to do it
keep track of all the changes and what's
happening and are you sure he's not
going to get hired off quit all the
skills and leave you with this legacy
system yeah any other questions
as an extra trisko vendor lock-in
because right you work with a platform
as a service and then abstract item
interface with all of your smaller
services like my sequence older so
you're learning how to interface with
those the pucker mystery amplify a
little bit different for aqua and
handgun and they runs these edge cases
were say you mean it's terrified of
storage on a server platform phone
really like that so you know go up to
AWS and now you're you know you have
your infrastructure and you're moving up
to a platform and you're gonna like the
issues that are eventually so is it
really worth it to work with a platform
and so just automating yourself well
that's that it just comes back to the
same the same question the same answer
right so of course platform is services
isn't no way meant to be an Asiya to
solve all the issues and cover all of
the you know different different aspects
so we say is it worth it to build it
yourself I don't know what is the
opportunity cost if I'm the one that's
managing the team and I have the
contract and I have a digital services
division and I have to think about like
you know one of you know what is the
critical path to get there first it's
like okay who on my team already knows
how to do this and then if it's say you
have somebody well how well do they
really know how right it is when they
know how to do that does that mean that
they play with VMs on their spare time
or they or have they gone through
AWS certification and training and
they've done all of that work like what
where are they at that in that level and
if they're not already top notch then ok
so what's it going to take to get them
there
realistic how many hours they're going
to be thirty hours of constant training
that I'm paying them to learn the system
they're going to be a hundred hours sir
you know I'm always thinking of it and a
dollars and cents perspective that's
probably why it says I'm not in
engineering because for me ultimately
that's that's what it is that's what the
money spent doing that is money that is
not spent building the project so what
is that investment and then what are
your assurances at the end that you're
one person that you invested all this
time into becoming an expert is able to
build a better system than something
that's been built by a team of experts
and had millions of dollars and
thousands of hours and work years put
into it and what are the chances sure
covering that use case you might be able
to figure out all of those elements and
security and all that well what did it
take to get you there and then what if
you leave there left with that system so
there are use cases where it's better to
do it yourself but they're they're less
and less and we actually it was things
all the time we're getting into bigger
opportunities with link let's just say
universities right and we have we've
been with a couple of universities that
are doing like a thousand plus sites
right and they start off with oh we're
going to use docker we're going to do it
ourselves
okay so
literally twelve months later when we
run into them at the next event hey
how's the doctor project coming along
yeah we need to talk to you guys because
building the system is scale this exact
fun to play with but actually doing that
just takes a lot of time a lot of effort
and you know something that's like this
this is a product but it is the product
ization of thousands about hours and
millions of dollars from a team of
experts my times out of 10 this is
probably gonna be the better approach
that one time out of ten would be your
edge you know like if you've got a
database it's a terabyte like which from
so you know we like terabyte databases
but they're really expensive so that's
yeah it's not that we can't prohibitive
images yeah right well I mean cheese is
storing that like is that really the
right solution to be using then yeah
like images specifically throw them up
on s3 or circumstance the high quality
because these customers I mean I will
say yes that's why that's why cloud
storage object stores that's why those
things were invented for exactly that
thanks for question yes
all right well thank you all for coming
I hope that this was interesting and we
have a table downstairs hello we're
going to we have a paper airplane game
that we like to do anything five minutes
per house so stop by CSA hello we're
also sponsoring the party tomorrow night
so here's on us into my mouth musical
pink Jackson say hello thank you all for
coming and thank you the question