►
Description
Ujwal walks us through the process of modernizing monolithic applications into a modern cloud native architecture.
A
A
A
A
It
is
taking
this
legacy
application
in
and
updating
that
with
newer
software
principles.
Newer
technology,
like
recent
most
recent
programming
languages
like
go
or
newer
version
of
python
and
upgrading
the
databases
and
also
utilizing
the
latest
infrastructure
like
cloud
or
containers,.
A
A
There
is
a
big
evolution
in
databases,
as
well
like
nosql
is
is,
is
an
example
where
you
can
store
large
amounts
of
unstructured
data
at
higher
speeds
and
retrieve
data
at
faster
rate,
compared
to
a
sql
database,
and,
and
there
are
several
applications
that
need
that
can
leverage
nosql
instead
of
sql
from
from
from
a
legacy,
application
standpoint
and
adopting
automation,
using
devops
principles.
A
A
So
the
the
big
question
is:
why
do
companies
or
engineering
leaders,
modernize
apps,
one
of
the
key
drivers
for
the
engineering
leaders
is
to
leverage
new
technology
like
cloud
platforms
like
if
an
engineering
leader
wants
to
leverage
cloud
and
his
application
his
current
legacy
application
does
not
support
it.
He
is
losing
out
on
a
lot
of
operational
efficiency,
gain
that
he
could
bring
to
the
company
by
not
leveraging
cloud.
A
So
one
of
the
key
elements
of
or
the
benefits
of
application
modernization
journey
is
to
leverage
new
technology
leveraging
technologies
like
cloud
containers,
increases
the
operational
efficiency
of
the
developers
and
the
ops,
engineers
and
and
other
platform
management,
and
it
engineering
team
also
to
improve
reliability.
An
older
requires
new
integrations
and
new
upgrades.
A
A
Lower
cost
using
technologies
like
serverless,
app
serverless
technology
on
the
cloud
and
pay
as
you
go,
kind
of
a
model
services
reduces
the
infrastructure
and
platform
cost
by
a
a
huge
percentage.
So
allowing
those
technologies
to
be
leveraged
is
one
of
the
key
benefits
as
well
of
an
application.
Modernization
journey
so
overall,
the
the
last,
but
not
the
least,
is
when
an
application
is
being
run
on
the
latest
infrastructure
with
high
reliability,
high
security
and
and
higher
efficiency.
A
The
customer
experience
is
automatically
improved.
A
customer
might
feel
better
response
times
when
he
is
looking
up
for
a
report
or
or
even
browsing
through
an
e-commerce
site.
When
he's
able
to
see
that
customer
experience
it's
better
for
the
business.
So
these
are
some
of
the
key
benefits
of
modernizing
an
application.
A
A
So
what
is
lift
and
shift
lift
and
shift
is
an
intensive
pro
is
a
less
intensive
approach
where
you
need
to
to
do
almost
no
changes
to
the
application
or
its
code
base.
It
simply
moved
from
an
older
infrastructure
and
moved
on
to
a
newer
infrastructure
like
like
a
cloud
virtual
machine
from
a
from
an
older
machine
on
in
within
a
data
center
right.
So
it's
simply,
as
the
name
suggests,
lifting
the
application
as
is,
and
upgrading
its
infrastructure
and
running
it
on
a
on
a
newer
infrastructure.
A
A
For
example,
peeling
out
services
from
a
monolithic
application
and
running
them
as
individual
microservices
within
containers
is,
is
a
re,
is
a
re-engineering
project
right
or
thinking
as
an
api
first
design,
where
some
of
the
apis
are
serverless
apis
running
on
cloud
infrastructure
with
the
front
end
running
as
well
on
the
cloud,
so
a
complete
redesign
of
the
application
from
the
architectural
and
code
standpoint
is
is
basically
re-engineering,
which
is
the
which
is
very
intensive
application.
Modernization
journey
that
requires
a
lot
of
planning
a
lot
of
homework
before
going
into
this
journey.
A
A
A
A
In
in
this,
this
is
a
very
important
aspect
of
a
application
modernization
journey
on
what
are
the
objects
that
the
teams
are
agreeing
on
like?
Is
this
monolithic
service
now
being
broken
down
into
micro
services?
If
so,
how
many
micro
services
are
being
agreed
upon?
Is
it
three
services,
two
services,
five
services,
and
what
are
these
services?
A
A
So
even
within
the
development
stream,
there
is
a
detailed
analysis
of
requirements
for
each
microservice,
so
each
microservice
now
needs
to
have
a
design
document
in
which
you
would
define
what
are
some
of
the
apis
that
that
this
microservice
would
would
present
what
are
some
of
the.
What
are
the
pa?
What
is
what
would
the
payload
look
like?
What
is
the?
A
What
are
some
of
the
methods
that
will
be
going
in
to
these
microservices
and
each
of
this
micro
service
will
have
a
design
document
that
will
be
created,
so
that
is
the
first
step
of
the
development
stream
and
the
second
step
of
the
development
stream
is
api,
development
or
and
testing
right,
for
example,
here
I'm
I'm
taking
four
services
into
account:
a
login
service,
a
payment
service,
an
authentication
service
and
a
rules,
engine
kind
of
service
right.
A
A
A
A
You
need
container
orchestrators
like
kubernetes,
so
setting
up
a
hardened
well
well,
protected
kubernetes
platform
is
one
of
the
key
requirements
of
a
of
a
platform
setup.
A
A
Service
endpoints
and
to
manage
the
authentication
and
the
routing
of
the
calls
from
the
front
end
to
the
back
end.
Api
gateway
plays
a
major
role
in
in
being
that
middleman
and
gatekeeper
for
every
call
that
is
coming
into
your
back
end
services
that
you're
going
to
develop
so
setting
up
api
gateway
is
a
very
critical
aspect
as
well.
A
A
lot
of
the
micro
services
that
are
going
that
you're
going
to
develop
will
require
secrets
to
to
be
part
of
the
application
like,
for
example,
a
database
username
and
password
an
api
authentication
key.
These
are
some
of
the
secrets
that
are
required
within
your
application,
but
storing
these
secrets
within
the
code
base
or
within
your
code
repository
is
a
very
bad
practice
and
it
causes
exposure
to
to
people
that
are
not
supposed
to
see
this
secret
so
having
secret
management
like
hashicorp
vault
or
your
cloud
native
secret
management
services
like
aws
secret
manager.
A
Setting
up
a
a
predefined
detox
process
to
pull
the
latest
versions
of
your
microservices
onto
your
development
and
and
your
higher
environments
like
q,
quality
assurance
environment
or
performance
test,
environment
or
production
environment
is
very
critical
for
an
application.
Modernization
journey,
so
git
ops
is
a
process
in
which
you
are
storing
all
the
configurations
of
the
platform
in
your
version
control
system
and
which
will
act
as
the
source
of
truth
for
enabling
configuration
changes
to
the
platform
and
also
whenever
a
developer
makes
a
change.
A
Devops
practice
and
git
ops
enables
that
setup.
So
having
a
matured
well
thought
through
github
setup
is
a
mandate
for
enabling
application
modernization
journey
database
setups,
so
for
all
the
applications
that
are
being
developed.
If
these
applications
are
using
databases
having
those
databases
set
up
with
any
schemas
that
are
pre
are
are
ready,
is
is
also
the
responsibility
of
the
platform
team
to
to
be
able
to
use
automation,
to
spin
up
these
databases
and
to
set
up
backups
and
recovery
systems
associated
with
the
databases
and
set
up
alarms
around
databases.
A
If
you're,
not
monitoring,
then
you're,
not
you,
don't
know
what
is
happening
within
your
system.
So
there
are
three
kinds
of
monitoring:
one
is
application,
performance,
mode,
monitoring,
infrastructure
monitoring
and
your
log
monitoring,
which
is
also
called
centralized,
login
setup.
A
So
you
would
want
to
measure
your
response
times.
You
want
to
measure
your
of
your
applications
and
of
your
apis.
You
want
to
monitor
your
cpu
utilization
of
infrastructure
memory.
Utilization
of
your
infrastructure,
as
well
as
any
degradation
of
your
infrastructure
needs
to
be
monitored
and
alert.
So
there
are
different
tools
available.
Some
of
the
open
source
tools
are
prometheus
grafana
for
logging.
There
is
elasticsearch
a
logstash
and
kibana,
and
there
are
some
other
tools
like
datadog
and
splunk.
A
It
is
important
to
have
the
right
dashboards
in
place
and
right
visibility
for
for
both
devops
teams,
as
well
as
development
teams,
to
see
what
is
the
what
is
happening
within
within
the
application.
A
Then
the
actual
setup
of
the
production
environment,
where
you
are
going
to
serve
your
applications
to
your
customers
right,
typically,
all
the
platform
setup
that
we
just
talked
about
needs
to
be
automated
anything
that
is
automated.
A
You
can
repeat
the
exact
setup
so
that
way
there
are.
There
is
no
configuration
drift
between
your
development
environment
and
your
production
environment
so
and
and
anytime
there
is
less
configuration
drift
between
your
non-production
environments
and
production
environments.
Then
there
is
less
chances
of
bugs
getting
into
production.
So
if
you
test
some
software
that
is
exactly
similar
to
your
production
environment,
then
you
can
be
confident
that
the
testing
is
successfully
done
right.
Obviously,
replicating
production
load
and
production
data
will
will
be
a
continuous
challenge,
but
there
are
tools
and
and
frameworks
to
overcome
those.
A
So
a
production
setup
is
highly
recommended
to
be
a
replica
of
your
non-production
setup
and
that
replication
can
only
be
done
at
at
a
faster
efficient
way
through
automation.
A
If
you
are
using
cloud,
there
are
several
cloud:
automation,
infrastructure,
automation,
tools
like
terraform
or
cloud
formation
for
aws
or
azure
templates
or
for
azure
infrastructure,
but
I
personally
prefer
terraform,
which
provides
great
leverage
and
providers
for
individual
cloud
environments,
and
it
also
has
several
providers
for
kubernetes
for
docker
for
even
grafana
and
prometheus
setup.
A
There
are
different
providers
that
that
that
you
can
leverage
using
terraform
and
terraform
also
has
a
great
community
of
engineers
who
can
support
with
any
any
bugs
or
or
issues
that
you
might
face.
A
A
So
you
have
certain
level
of
benchmarks
that
you
can
come
up
either
by
using
the
the
legacy
application
metrics
or
by
estimating
some
numbers
for
a
brand
new
application,
and
you
can
set
up
some
benchmarks
and
reach
those
benchmarks
through
these
different
testing
practices
that
are
in
place
once
the
system
testing
is
done.
Typically,
you
don't
go
all
out
with
the
application
when
you're
launching
it
after
a
modernization
process.
You
typically
do
a
pilot
launch
in
the
pilot
launch.
A
So
once
as
the
number
of
customers
increase,
you
will
make
sure
that
your
system
is
able
to
handle
the
traffic.
It
is
able
to
handle
the
different
scenarios
as
well
as
the
load
that
that
is
built
over
over
your
new
modern
infrastructure,
as
well
as
the
application.
So
this
is
the
overall
journey
of
the
of
an
application
modernization
process,
some
of
the
key
things
of
optimizing,
this
process,
which
is
a
little
bit
of
an
advanced
topic,
but
I
would
still
want
to
add
a
few
things
here.
A
While
you
are
developing
these
micro
services,
there
are
several
things
that
can
be
done
done
in
parallel.
As
you
can
see
the
timeline
like
the
cloud
setup,
the
cloud
networking
setup
can
be
done
in
parallel.
The
the
base
database
is
set
up
the
infrastructure
for
your
micro
services
like
kubernetes,
api
gateway,
the
messaging
services
like
kafka
and
secret
management.
All
of
these
can
be
set
up
while
your
applications
are
being
developed
by
the
development
teams.
A
So
these
both
streams
can
run
in
parallel
instead
of
running
in
a
serial
waterfall
method
and
save
a
lot
of
time
and
the
the
other
important
factor,
especially
in
the
platform
stream,
is,
is
leveraging
automation,
so
building
automation
packages
like
an
automation
package
for
base
network
setup,
an
automation
package
for
a
kubernetes
deployment,
an
automation
package
or
a
terraform
module
for
an
api
gateway,
setup
kafka,
setup,
setting
up
git
ops
process,
using
tools
like
argo,
cd
or.
A
So
automation
is
key
when
you're
working
with
platform
engineering.
A
And
testing
testing
is
another
important
factor
having
automated
tests
in
place
for
for
functional
testing
having
api
testing
suit
in
place,
incorporating
the
cicd
to
enable
testing
with
for
every
comment
of
the
developer.