The Art of Business Value

art-of-biz-valueA review of The Art of Business Value by Mark Schwartz

Business value, the north star of Agile, Lean and DevOps champions, is often more difficult to determine than one would imagine. This book takes the reader on a journey to discover that value while along the way, creating helpful mental models, challenging preconceived notions and proposing some creative ways to transform an organization.

The author does a great treatment of ROI (Return on Investment – does anyone ever really measure that?), NPV (Net Present Value), MVA (Market Value Added) and SVA (Shareholder Value Added). I especially enjoyed the humorous practical example that revealed a surprising truth that acquiring an MBA can easily have a negative NPV (in other words, a bad investment!) So save your money and pay attention to the author’s “four-paragraph MBA” (p. 20) that unpacks the main two principles learned in an MBA: 1) There is time value of money and 2) A business venture needs a sustainable competitive advantage.

Legacy IT architecture and bureaucracy are often considered negatives and obstacles to progressive competitive relevance but the author brings a refreshing perspective on the “value” of that complex hairball of legacy and rules and the right way to polish and transform them.

On Agile…

“The purpose of an Agile team is to self-organize and meet the underlying business need in the best way possible, often by cutting through the bureaucracy.” (p 55)

On DevOps…

“The DevOps model…looks to break down the silos that have resulted from technical specialization over the last few decades. But the DevOps spirit goes further looking to eliminate the conflicting incentives of organizational silos and the inhumane behaviors that can result from those conflicting incentives.” (p 48)

On Bureaucracy…

“Bureaucracy delivers business value. Just sometimes not enough.” (p 59)
…”developers are bureaucrats by nature. We have a tendency to solve problems by creating standard processes rather than by relying on human judgment.” (p 54)
“The pipeline is an automated bureaucracy: it applies its rules in a rigorous, unemotional way, sine ira et studio. That does not mean that the software development process is unemotional; it means that the tools are unemotional and the passion is brought to the process by the people.” (p 105)

And on Business Value…

“Business value is a hypothesis held by the organization’s leadership as to what will best accomplish the organization’s ultimate goals or desired outcomes.” (p 90)

I highly recommend this book to IT leaders, digital executives, strategic managers, and anyone seeking to make their organization more agile, effective, relevant, competitive and humane.

Docker + Mesos + Marathon in AWS EC2

I wanted to see if I could get a Docker + Mesos + Marathon platform up and running quickly in AWS EC2 using t2.micro instances.  I found this great article by Gar (@gargar454) where he has put all the components in docker containers and provides a simple  tutorial which I paste below with some minor edits:

Create a Docker Host on EC2

Create your EC2 instances (Amazon AMI t2.micro will work), set it up in your private VPC and auto-assign a public IP so you can test.  You will need to open TCP ports 5050 and 8080 in  your security group from your workstation if you want to see the Mesos and Marathon UIs.   Run these commands to set up a docker host:

sudo yum update -y
sudo yum install -y docker
sudo service docker start
# grant ec2-user ability to run docker commands without sudo
sudo usermod -a -G docker ec2-user
# you must exist to refresh user rights
exit
  1. Export out the local host’s IP
    • HOST_IP=`wget -qO- http://instance-data/latest/meta-data/local-ipv4`
  2. Start Zookeeper
    docker run -d \
    -p 2181:2181 \
    -p 2888:2888 \
    -p 3888:3888 \
    garland/zookeeper
  3. Start Mesos Master
    docker run --net="host" \
    -p 5050:5050 \
    -e "MESOS_HOSTNAME=${HOST_IP}" \
    -e "MESOS_IP=${HOST_IP}" \
    -e "MESOS_ZK=zk://${HOST_IP}:2181/mesos" \
    -e "MESOS_PORT=5050" \
    -e "MESOS_LOG_DIR=/var/log/mesos" \
    -e "MESOS_QUORUM=1" \
    -e "MESOS_REGISTRY=in_memory" \
    -e "MESOS_WORK_DIR=/var/lib/mesos" \
    -d \
    garland/mesosphere-docker-mesos-master
  4. Start Marathon
    docker run \
    -d \
    -p 8080:8080 \
    garland/mesosphere-docker-marathon --master zk://${HOST_IP}:2181/mesos --zk zk://${HOST_IP}:2181/marathon
  5. Start Mesos Slave in a container
    docker run -d \
    --name mesos_slave_1 \
    --entrypoint="mesos-slave" \
    -e "MESOS_MASTER=zk://${HOST_IP}:2181/mesos" \
    -e "MESOS_LOG_DIR=/var/log/mesos" \
    -e "MESOS_LOGGING_LEVEL=INFO" \
    garland/mesosphere-docker-mesos-master:latest
  6. Goto the Mesos & Marathon Web pages
    # You can find your EC2 instance public IP address with:
    wget -qO- http://instance-data/latest/meta-data/public-ipv4

    Mesos Web Page

  7. http://<public-ip>:5050

Marathon Web Page

http://<public-ip>:8080

Create an App (+ New App button) on the Marathon page to see the task get assigned to a Mesos slave and executed.

Marathon New App - test1

Log in to the slave container and watch the file grow:

docker exec -it mesos_slave_1 /bin/bash

tail -f /tmp/running.out