►
From YouTube: npmCamp 2016 - Ember.js, DevOps, and You: Lessons Learned From... by Iheanyi Ekechukwu
Description
Ember.js, DevOps, and You: Lessons Learned From Building an Ember Addon by Iheanyi Ekechukwu
A
A
A
So
you're,
probably
wondering
who
the
heck
is
this
guy,
and
why
is
he
talking
about
DevOps
that
we're
talking
about
NPM?
But
my
name
is
a
Hanukkah
cuckoo
I'm,
a
software
engineer
at
digital
ocean
in
New,
York
City
and
you
can
see
that's
my
Twitter
handle
right
there.
So
question
of
the
day.
What
is
DevOps
like
aren't
too
specialized
people
for
that?
Why
should
I
even
really
care
about
that?
Whenever
I
really
see
the
word,
DevOps
I
kind
of
have
this
reaction
like
because
you
know
right
so
yeah
DevOps.
A
What
DevOps
is
is
actually
a
clip
compound
of
the
words
development
and
operations.
So,
looking
at
these
two
words,
what
you
can
do
is
break
down
the
definition
into
well-defined,
get
as
DevOps
being
the
income
processes
around
how
you
build
your
products
and
also
how
you
deliver
them
to
your
end,
users,
and
at
first
I
thought.
Devops
was
just
like
deploying,
you
know,
like
karoku
get
push,
but
it's
actually
more
nuanced
than
that.
A
In
addition
to
deploying
DevOps
is
also
provisioning
or
the
configuration
of
your
servers
to
run
the
necessary
software,
so
your
application
can
run
it's
also
versioning,
so
controlled
releases
of
your
application.
You
should
be
able
to
track
each
release
of
your
application
and
roll
back
to
an
older
version
in
case
something
goes
wrong
and
the
scent
and
it's
complicated,
because
since
it
encompasses
the
processes
around
how
you
ship
your
products
and
build
your
products,
that's
going
to
differentiate
from
person
to
person
company
to
company
so
from
continuous
integration.
A
The
code
reviews
there's
so
many
different,
like
processes
that
can
fall
under
DevOps.
So
it's
really
hard
given
a
concrete
definition,
but
one
in
a
real
part
of
DevOps
is
automation.
Its
key
and
while
automation
is,
is
the
normally.
You
have
manual
tasks
that
you
do
in
order
to
deploy
an
application,
but
with
automation
you
can
translate
those
tasks
to
code,
and
normally
you
can
do
that.
A
We're
like
IT
automation,
software
like
chef
or
puppet
or
ansible,
but
the
importance
of
automation
is
that
since
you
can
see
what
your
code
is
actually
going
to
do,
it
leaves
less
room
for
human
error
unless
you
mess
like
up
the
code,
but
you
can
test
that,
so
that's
nice.
So
what
do
ember.js
and
DevOps
really
have
to
do
it
one
another.
A
Rather
than
is
manually,
deploying
it
in
SC
paying
files
onto
a
remote
server.
You
could
just
type
in
ember
deploy
production
and
you're
good
to
go
and
like
most
ember
plugins
AC
adapter
plat
pattern
and
I
originally
started
delving
into
DevOps
with
the
Ember
applications,
because
I
wanted
to
build
a
number
see
a
light
employee
plug-in
to
deploy
fast,
booted
ember
applications
to
digital
ocean
droplets
and
fastboot
is
the
library
that
allows
you
to
surrender
your
ember
applications
for
that
SEO
juice.
A
So,
let's
talk
about
the
internals
of
an
ember
CLI
deploy
plugin,
so
a
number
CLI,
an
employee
plug-in,
can
implement
up
to
11
hooks
here
at
the
11
hooks
that
you
can
implement
with
it.
It's
actually
missing
one
and
it's
did
deploy,
which
is
activated
at
the
very
end,
so
technically
ember
CLI
deploy
doesn't
only
just
deploy
it
can
provision
in
a
creative
way.
If
you
did
it
in
the
configure
step,
it
can
also
build
your
application
before
you
deploy
it
and,
of
course
you
can
deploy
due
to
activation
flag.
A
You
can
manage
your
releases
and
so
I
really
don't
really
like
the
name.
Ember
CLI
deploy
I
kind
of
told
Luke,
like
hey,
you
should
probably
name
an
ember
CLI
DevOps,
but
that
didn't
really
go
over
so
hot,
but
yeah.
Now
that
we
have
an
intro
I'm
gonna
talk
about
my
experience,
actually
building
a
plug-in.
A
A
Then
you
can
CD
into
that
newly
created
project.
Then
you
can
npm
install
the
ember
CLI
deploy
base
plug
in
the
beauty
of
this
base.
Plugin
is
like
those
lips
I
mentioned
earlier.
You
would
have
to
like
reimplement
them
from
hand
if
you
wanted
to
build
a
plug-in,
but
actually
through
installing
this
base.
Plugin,
all
you
have
to
do
is
extend
it
and
you
get
access
to
all
those
hooks,
so
it
cuts
out
my
boiler
plate.
A
The
next
step
was
actually
manually,
deploying
the
application
and
taking
note
of
every
single
step
and
I'm
really
serious.
Whenever
I
say
every
single
step,
so
let's
actually
run
through
what
these
steps
were
to
get
a
fast
food
application
running
on
a
droplet.
So
yeah
first
step
create
the
droplet.
A
Next
you
want
to
SSH
into
the
droplet
whenever
you
I'm,
while
association
to
the
droplet,
you
want
to
install
the
relevant
software
that
you
needed
so
enter
next
node
and
mpm,
and
then
I'm
professor
boot
server
on
your
local
machine
in
your
ember
application.
You
want
to
build
the
application
and
install
its
dependencies,
and
then
you
need
to
SCP
the
bill.
Temper
application
onto
the
droplet
dandy
guy
go
back
into
the
machine,
go
to
the
upload
app
and
run
the
fast
food
application.
A
A
So
when
it
comes
to
automation,
I
kind
of
like
to
break
you
down
into
either
like
problems
and
then
solve
those
problems,
one
by
one,
so
a
series
of
task,
so
the
first
problem
was:
how
do
I
create
a
droplet
for
the
user?
You
can
like
using
digital
oceans
API,
you
actually
can
programmatically
create
a
droplet
and
I
create
an
ember
command,
allowed
you
to
create
a
droplet
with
the
relevant
software,
or
even
go
into
an
already
created
droplet
to
install
the
relevant
software
dependencies
and
all
that.
A
So,
in
order
to
do
this,
you
need
to
create
an
access
token
from
the
cloud
control
panel
export
to
an
environment
variable.
Then
you
can
run
the
command
ember
do
provision
which
shows
you
which
walks
you
do
is
wizard
about.
What
you
want
to
do,
and
the
first
step
actually
is
just
create
a
new
droplet
or
list
one
to
re
exist.
A
Environment
would
be
like
actually
to
deploy
target
that
you
wanted
to
do
and
yeah
all
the
other
stages
are
like
things
that
you'll
see
in
the
actual
control
panel
online.
I
guess
like
you,
should
be
a
disclaimer
actually
start
building
this
before
I
started
working
at
do
so.
This
is
not
like
some
viral
marketing
type
gig,
but
yeah,
and
then
the
next
problem
was,
but
I
guess,
like
the
last
command,
was
kind
of
a
misnomer
in
the
sense
that
didn't
install
any
of
the
software
dependencies
with
it.
A
So
we
actually
need
to
provision
the
software
to
server
properly.
On
my
team,
we
actually
used
chef
for
provisioning,
so
we
just
like
designate
like
the
cookbooks
and
recipes
of
test
run,
so
you
have
a
primary
server
that
has
all
the
configuration
and
once
that
changes
it
alerts
all
the
secondary
server
is
connected
to
it
like
hey,
I,
changed
so
rerun
your
task
again
or
whenever
it's
deployed
so
yeah,
it's
nice
to
have
that
with
like
chef,
puppet
ansible
and
all
those
are
ones.
A
But
you
really
don't
have
that
what
ember
so
yeah
before
fastboot,
meaning
a
regular
member
application,
that's
rendered
on
the
client
side.
You
really
just
had
one
like
software
dependency
and
I
was
just
like
a
web
server
like
n
genetics
or
Apache
to
serve
up
your
static
assets,
but
now
with
fastboot,
you
have
more
dependencies.
It's
not
only
engine
X.
We
now
need
node
mpm
and
also
like
the
fast
food
application
itself
and
another
solution
that
I
figured
out
from
like
just
stuff
that
we
had
internally
was
our
one
click.
A
Install
images
I'll
be
able
to
use
like
the
node
image
to
help
install
the
node
in
mpm
dependencies
and
then
for
like
actually
installing
other
software.
You
can
just
SSH
into
the
droplet
and
execute
commands.
10
sod
rest
of
the
dependencies,
so
yeah
like
I,
was
mentioning
yet
a
one-click
install
app
of
on
the
node
for
no
DJ
s
and
you
can
actually
access
all
of
these
one-click
install
images
from
the
API,
so
I
just
figured
out
what
the
idea
of
it
was
and
used
it
in
the
provision
command
from
earlier
and
then
inside.
A
The
ssh
configuration
for
my
inside
my
code
whenever
you
do
create
a
droplet,
you
can
designate
ssh
keys.
So
with
that
you
need
to
set
the
environment
variable,
say:
okay,
here's
where
my
private
key
is
stored
and
also
here's
the
pass
phrase
in
order
to
get
into
it
and
it's
Frankenstein
code,
because
I
haven't
refactored
it
yet
but
yeah.
This
was
swollen
current,
like
the
will
upload
hook
before.
We
even
think
about
uploading
the
app
and
just
connect
to
server
update
to
dependencies
and
also
or
install
relevant
dependencies.
It's
kind
of
drinky,
but
it
works.
A
I'll,
actually
talk
more
about
how
this
could
be
improved
later
and
so
like
with
the
provisioning
finished.
Now
we
need
to
figure
out
how
to
actually
build
my
number
application
and
get
it
on
to
the
droplet
and
the
beauty
of
ember
CLI
deploys
that
you
don't
really
have
to
reinvent
the
wheel
for
certain
functionality
because
of
like
the
plug-in
system.
So
you
can
use
ember
CLI
deploy,
build
to
actually
build
the
application.
A
Then
you
can
mpm
saw
the
dependencies
locally
and
as
a
PS
CP,
all
the
files
onto
the
droplet
and
yeah
just
handles
all
the
building
for
you.
So
I
don't
have
to
really
worry
about
running
that
command
to
build
the
application
and
here's
an
ftp
client
for
to
actually
uploaded
dist
directory
of
a
built,
ember
application,
and
before
you
upload
the
files,
we
will
need
to
install
the
NPM
dependencies
locally
for
fast
boot.
A
Best
moods
actually
changed
a
lot,
so
the
step
may
not
be
necessary
anymore,
but
I'm
still
trying
to
like
catch
up
and
update
my
application
or
plugin
for
it,
and
then
we
will
actually
upload
the
built
files
onto
the
server
and
upload
it
to
an
ember,
app
directory
on
the
remote
server
and
remember
how
I
mentioned
ember
CLI,
deploy
build
earlier
on.
This
variable
context
at
distr
gives
any
add-on
access
to
the
files
that
were
built
by
the
ember
CLI
deploy
build
plugin.
So
like
that's,
why?
A
What,
if,
like
your
server
restart
or
something
goes
wrong
like
how
do
I
make
sure
that
app,
the
fastboot
application
will
stay
up
and
running
so
in
order
to
keep
server
running,
you
can
use
boom
tues
up
starting
this
system
to
configure
applications
on
the
server
I
really
had
no
idea
that
Linux,
this
administration
stuff
was
so
difficult.
I
like
actually
reading
our
tutorials
to
figure
out
most
of
the
stuff,
but
this
like
do
creating
this
upstart
service.
A
I'll
always
be
up
and
running
and
then
using
that
off,
like
SCP,
SCP,
client,
again
I
just
over
I,
just
added
it
to
the
NIT
folder
and
that
put
down
automatically
put
that
service
and
the
server's
event
system.
And
then
the
last
problem
to
solve
is
how
do
you
make
sure
that
the
application
is
up
and
the
user
can
see
it
and
one
like
just
like
the
upstart
stuff
that
we
just
did?
One
can
actually
create
a
custom
and
your
next
template
to
upload
to
the
server
and
in
place
of
the
default
engine.
A
X
engine
X
configuration
and
is
like
a
snippet
of
the
engine,
X
config
for
the
Emperor
application
and
then
similar
to
the
upstart
service.
We
just
directly
upload
it
to
the
droplet
as
an
engine
next
on
cough
file
and
then,
after
everything
is
said
and
done,
we
can
restart
or
actually,
in
this
case,
probably
reload
to
end
your
next
config
and
theoretically.
A
step
may
not
be
necessary
so
long
anymore,
but
I
just
did
as
a
safeguard
and
we're
finally
done.
Automating
yeah.
A
So
yeah
there's
one
small
mpm
trick
that
made
building
deploy,
pluck
like
this
deploy
plugin
way
easier
and
it
was
hidden
the
documentation,
but
it's
like
em
p.m.
link
so
before
I
was
like
man
how
to
actually
test
this
and
like
mice,
like
application,
I'd
have
to
like
publish
it
to
NPM.
Every
single
time
wanted
to
test
something.
A
But
with
this
you
can
actually
use
NPM
link
in
order
to
use
NPM
link
on
the
plug-in
directory
from
any
amber
project
and
you
what
will
do
is
it
will
install
the
installed
like
package
from
your
local
file
system
into
your
other
project,
but
you
don't
really
have
to
keep
on
installing
it
every
single
time.
You
make
a
change.
It
keeps
up
with
the
changes
in
real
time,
so
it's
pretty
nice
to
be
able
to
see
like
the
changes
I'm
making
immediately,
and
it's
really
simple,
like
you
can
like
run
it
this
way.
A
Just
by,
like
you
know,
do
an
MPN
link
the
project
name
and
then
relink
it
in
another
directory
or
shorthand
just
go
to
the
project
you
want
and
then
using
NPM
linked
to
the
absolute
file
path
of
the
JavaScript
package.
You
can
also
do
that
as
well
to
save
time
and
yeah,
so
we
went
from
being
a
remember
flames
to
like
figure
out
the
slizz,
so
it
takes
so
much
time
on
touching
the
addon.
A
Pretty
clutch
like
gonna
lie
so
yeah
you
can
check
out
the
repo
here,
it's
with
the
source
codes
at
try
and
do
some
more
work
on
it
right
now
and
improve
upon
it
and
like
water
plug
in
the
dope
it
kind
of
habit.
It
does
have
it
short
the
shortcomings
for
one.
This
is
really
no
way
to
deploy
to
multiple
servers.
At
the
moment.
Like
I
said
earlier,
like
chef,
you
just
have
one
primary
server
and
then
the
secondary
server
is
communicate
with
that
primary
one.
A
But
you
know
JavaScript
right
now,
so
not
really
having
that
right
now
and
I.
Think
the
importance
of
having
multiple
servers
is
mostly
from,
like
you
know,
a
load
balancing
perspective,
so
that
would
be
kind
of
crucial,
but
may
not
be
as
big
of
a
deal
breaker
for
some
individuals
or
small
projects
and
a
way
to
plugins
coated
right
now
there
are
provisioning
tests.
Are
that
get
rerun
unnecessarily?
A
That's
ready
for
fast
poo
is
create
Watchers.
That
alerts
the
server
whenever
a
new
version
is
created
so
using
symlinks
on
a
base
directory
and
concatenated.
Like
each
version
on
to
the
end,
you
just
have
to
switch
up
the
directory
for
the
server
and
once
those
files
change
it
will
restart
so
yeah,
that's
cool
and
but
yeah
I
can't
do
that
until
I
get
rid
of
the
old,
fast
food
serving
logic.
A
So,
like
I
said
it's
hard
kind
of
keeping
up
with
the
community
and
how
things
move
really
fast
in
web
Lin,
and
even
the
last
like
one
year,
but
like
so
yeah
I'm,
hopefully
going
to
get
to
use
fastboot
app
server
in
place
of
the
old,
fast
food
logic
serving
logic.
So
yeah
and
I
definitely
have
ideas
for
future
enhancements.
A
Like
I
mentioned
earlier,
zero
downtime
deploys
be
pretty
nice
and
I
think
it's
once
a
migrating
fast
food
app
server,
since
it's
running
a
clustered
it
like
spins
up
16
processes
or
something
like
that
and
restart
someone
one
process
at
a
time
it
should
have
with
zero
downtime
deploys
if
I
can
get
that
strategy
like
ironed
out,
get
it
more
closely
and
get
it
working
and
ssl
support.
A
You
know
I'd
feel
like
it'd,
be
dope
their
automated
support
for
SSL
or
TLS
wet,
let's
encrypt
and
just
automatic
renewal
of
the
certificate,
because
it'd
be
nice
to
just
be
able
to
ship
your
application.
She's,
like
oh,
hey,
sorry
got
like
ssl
set
up
for
me.
Cuz.
Nobody
really
wants
to
set
that
up.
A
Every
single
dime-
and
you
know
today
before
today,
and
never
really
knew
how
to
define
semantic
versioning
I
just
saw
it
a
lot
on
the
Internet
I
was
like
yeah
cool,
get
makes
sense,
you
know,
but
really
it's
important
to
have
a
semantically
versioned
library,
especially
when
it
comes
to
something
like
as
business
critical
as
deploying
because
you
don't
want
like
have
a
breaking
change
like
unexpectedly.
A
What
exactly
is
the
future
of
DevOps
there's
a
lot
of
talk
about
docker
and
docker
containers
and,
like
you
know,
the
lightweight,
and
they
really
allow
for
a
rapid
deployment
of
like
applications
and
even
marrying
like
a
production
environment
that
closely
to
your
development,
environment
and
I'm,
like
what's
the
future
of
dr.
number,
together
I'm
kind
of
like
I'm,
trying
to
explore
how
we
could
container
eyes
a
number
of
fast
food
application
to
or
how
the
two
play
together
and
I'm
actually
like
I'm
wondering?
Is
that
really
even
possible
and
I
had
no
idea?
A
So,
oh
yeah,
so
yeah,
just
a
couple,
Danks
Tom
Dale
he's
helped
me
allow
a
lot
would
like
thinking
through
the
logic
of
what
I'm
doing
and
just
all
his
fastboot
work.
Luke
Melia
he's
got
a
created,
ember
CLI,
deploy.
He
answered
a
lot
of
my
questions.
I
had
around
the
deploy,
plug-in
and
like
contributing
so
I
really
appreciate
him
David
pets
in
our
amber
developer.
He
was
11
the
few
individuals
that
tested
out
the
application
or
the
plug-in
on
a
side
project
and
getting
real-time
feedback
and,
of
course,
digitalocean
for
like
hell.