Should I Build

Or Should I Not

Your Host Tonight

Alex Fernández
Senior Developer at MediaSmart Mobile

What We Will See

A Story for Builders

Some Case Studies

Rational? Arguments

Emotional? Arguments

A Third Way


A Story for Builders


Decision Method for Managers

Run a detailed Total Cost of Ownership (TCO) study


And then promptly throw it away

You may be missing

crucial factors!

Some Case Studies

Continuous Deployment

Probably the most important practice in DevOps

Continuous Integration: tested on integration env

Continuous Delivery: tested on several envs

Continuous Deployment: go all the way and deploy!

Use dark launches, feature flags, canary deployments

Deployment Infrastructure

A simple bash script to start

Built for (and with) Node.js packages

Held together with some custom Node.js scripts

Recently migrated to StriderCD

Now with a Graphical Interface!

Nginx Balancer

Previously using Amazon's Elastic Load Balancer

Eating up to 20% of our monthly bill

Replaced by an Nginx balancer

DNS balancer in Node.js

Custom Lua logging

Some Numbers

Peaks of 325 krps

Average of 200 krps

16 billion requests per day

30 million daily impressions

Traffic Dashboard


Amazon CloudWatch: CPU usage

Custom systems monitoring:

memory, disk usage, database

Custom online monitoring:

servers up, site up

Custom business alerts:

ad exchanges, CTR, revenue

Business Partners

Not always appreciate our custom infrastructure

Would rather prefer standard packages

Household brands:

Jenkins, Icinga, Puppet, Chef

(We have evaluated those, didn't like)



Rational Arguments

Rational thought is not "natural":

It needs to be learned and cultivated

"Rational" arguments are often emotional in disguise

Humans tend to act and then rationalize

Some deconstruction may be required


Commercial solutions are robust

Managers will probably nod wisely

Software developers will look at this with suspicion

Most commercial software is held together

with bailing wire and duct tape


Maintaining a bunch of custom code
hacked together by your predecessor is hard

Ugly code is everywhere

Companies go out of business all the time

Products are orphaned every day

Technical Debt

Once you start a software project,
you start accruing technical debt

Good teams have less technical debt

Do you have a good team?

Better than your vendor?

Otherwise, go out and get a good team!



Emotional Arguments

Even more contentious than those before

Do not expect answers! Not from me

At most, some uncomfortable questions

The Joy of Building Things

People build things because they love to

Starting a green field project can be exhilarating

Helps attract and keep elusive talent

Someone had to build first!

Why let them have all the fun?

Primitive Technology

NIH Syndrome

"Not Invented Here":

Distrust products offered by third parties

Joel Spolsky:

If it is a core business function

do it yourself, no matter what.

As easy as identifying core business functions


Core Business Functions

Banks: outsourcing IT

Google: self-driving cars

Facebook: providing Internet access

Apple: music distribution, watches

Reinventing the Wheel

Does the world really need a new testing library?

I don't know or care

If I need it, I will surely build it

$7600 Tesla Wheels

Learning, the Easy Way

The best way to learn is by building

DevOps is not just installing a package

Make infrastructure a first-class citizen

Installing a package can be simple if you know how

The best way to learn infrastructure is by building it

Against Craftmanship

Software devs are artisans practicing their craft

Artisans may get carried away

and build too much

Use modules as standard parts

Maintaining software can be hard

and expensive

A Third Way

Customizable Solutions

Middle ground between building and installing

Install product, then customize

Plugins, extensions, APIs, hooks

SAP, Siebel, Fidelity Profile

Open Source Software

The logical continuation

Software as a community

Build custom extensions

and share them!

E.g.: send diffs by email

using StriderCD

Joining the Pieces

Combine several packages into a larger entity

Continuous deployment requires:

  • code repos
  • test library
  • notification tools
  • distributed deployment

May require glue code


Choose Your Path

There is not a universal path for all destinations


  • Are you building a state-of-the-art project?
  • Which options is more cost-effective?
  • Which option is more likely to succeed?
  • What is the cost of switching?
  • Which option is more fun?

So, Should I Build or Should I Not

The answer to every interesting yes/no question is: "it depends".

Adapted from @msanjuan

Strike a Balance

Must have fun

Must have profits

Try to have both!



Should I Build or Should I Not

By Alex Fernández

Should I Build or Should I Not

DevOps Pro 2016 Presentation, 2016-05-26

  • 3,623