Leveraging Serverless Architecture
To Gently Break Apart Your Monolith

Linda Nichols
@lynnaloo


Norfolk.js
norfolkjs.org


RevolutionConf
Virginia Beach, VA

www.eta.im

@etechadvisor





The Monolith
@lynnaloo


The Monolith
@lynnaloo

-
Single-tiered
-
Performs all tasks
-
Not modular
-
Legacy technology
-
On-premises/On a Mainframe
-
Expensive to host/maintain
The Monolith
@lynnaloo



The Monolith?
@lynnaloo


The Monolith Onion
@lynnaloo


@lynnaloo

-
Long-lasting, yet perishable
-
Contains many layers
-
Difficult to modularize
-
Messy when applied directly to bare metal
-
There can be a "smell"
The Monolith Onion
@lynnaloo


The Monolith Onion
BREAKING APART the monolith
@lynnaloo

-
Separate the application tiers
-
Create microservices
-
Upgrade legacy technology
-
Re-write application code
-
Move to "the cloud"
refactoring is expensive
@lynnaloo


legacy stays legacy
@lynnaloo

Patching is cheap.
works "just fine" now.

containers, containers, containers...
@lynnaloo


breaking apart the monolith
@lynnaloo


what is serverless
@lynnaloo

Serverless Architecture is an event-driven system that uses remote functions (via a BaaS or a FaaS product) without concern for the operations of the containers that execute the code.
Example: AWS with Aws Lambda
serverless functions
@lynnaloo

-
No Ops required*
-
Developers focus on code
-
Triggered by internal or external events
-
Built-in API Gateway
-
Costs nearly nothing
serverless functions
@lynnaloo


serverless functions
@lynnaloo

'use strict';
const catNames = require('cat-names');
function getCatName(event, context, callback) {
callback(null, { payload: `Your cat name is ${catNames.random()}.` });
}
module.exports.getCatName;
Functions are microservices
@lynnaloo

-
Responsible for one specific task
-
Lightweight and fast
-
Re-usable
-
Deployed independently
-
Stateless
-
Not dependent on other services
gently break apart the monolith
@lynnaloo


@lynnaloo

Look for functionality that has the fewest dependencies executable by an event:
-
Cron jobs
-
Background services
-
Calls to APIs
-
Maintenance scripts
-
Logging/analytics
-
Message bus
break off serverless microservices
@lynnaloo

break off serverless microservices

conclusion
@lynnaloo

As more functionality is removed, less compute power is needed for the monolith. Re-engineering a small core is now more manageable and less expensive.
conclusion
@lynnaloo

Modernization doesn’t have to be a one-time effort.
Serverless architecture facilitates gradual changes and results in a more immediate reduction in complexity and cost.
Thank You!

@lynnaloo

Photo Credit
@lynnaloo


@PaulCHINJR

Leveraging Serverless Architecture to Gently Break Apart Your Monolith
By Linda Nichols
Leveraging Serverless Architecture to Gently Break Apart Your Monolith
6/23 DCFullStack Summit
- 1,677