PaaS
Enterprise
makeover
change
organizational
SSICSI
ESI Heroku
cloud-native
progressive
enhancement
integration
12factorREST
deployment pipeline
lean
startup
enterprise
de
continuous
delivery
Web
automation
http://upload.wikimedia.org/wikipedia/commons/0/02/Canterbury_Cathedral_-_Portal_Nave_Cross-spire.jpeg
http://upload.wikimedia.org/wikipedia/commons/6/6e/Matejko_Wernyhora.jpg
http://upload.wikimedia.org/wikipedia/commons/thumb/8/80/ESB.png/601px-ESB.png
http://upload.wikimedia.org/wikipedia/commons/0/02/Canterbury_Cathedral_-_Portal_Nave_Cross-spire.jpeg
http://upload.wikimedia.org/wikipedia/commons/8/8b/Hyderabad_Street_Market.jpg
http://pixabay.com/static/uploads/photo/2010/12/13/10/12/belly-2473_640.jpg
Continuous
Delivery
Organizational
change
RESTful
*services
Once upon a time...
http://upload.wikimedia.org/wikipedia/commons/d/d9/Carlo_Dolci_-_St_Catherine_Reading_a_Book_-_WGA06372.jpg
Part 2/10
CMS
Content
Management
System
Content
Management
System
presentation
architecture:
logic in JSP
infrastructure:
shared test environments
performance:
slooooow and unstable
Attention,
code freeze!
I’m
deploying!
http://upload.wikimedia.org/wikipedia/commons/e/e6/Kazanie_Skargi.jpg
CMS
Web Frontend
CMS
Web Frontend
Change pattern:
Low hanging fruit
Change pattern:
Right Time
Hackday
Prototype
Web Frontend
5 times faster
30
deployments
in one day
http://pixabay.com/static/uploads/photo/2013/10/10/14/56/traffic-lights-193658_640.jpg
From: http://paulhammant.com/2013/07/14/legacy-application-strangulation-case-studies/
Use the Web,
don’t abuse it
Part
3/10
Resources
and
representations
header
articles list
most read
articles list
footer
ad
resource
resource
resource
resource
resource
header
articles list
most read
articles list
footer
ad
as media type
header
articles list
most read
articles list
footer
ad
as media type
URL
header
articles list
most read
articles list
footer
ad
as media type
URL
cache-control
in-process
and
over HTTP microservice
microlib
reversibledecisions
Web integration
Server Side Include
http://upload.wikimedia.org/wikipedia/commons/5/53/Server-multiple.svg
Edge Side Include
http://upload.wikimedia.org/wikipedia/commons/5/53/Server-multiple.svg
https://openclipart.org/image/300px/svg_to_png/16073/kml-Document.png
<esi:include src=”http://mywebsite.com/mostRead” />
SSI
with
ESI tags
move ESI
processing between
backend and proxy server
reversibledecisions
Client Side Include
article video
article text
link - sport widget
core content
article text
<a role="widget"
class="widget-link"
href=”//example.com/sportWidget”>
sport widget
</a>
link - sport widget
read URL
article video
article text
link - sport widget
article text
HTTPGET
article video
article text
link - sport widget
article text
HTML + (CSS) + (JS)
article video
article text
sport widget
article text
HTML only
HTML+CSS+JS
Multitracking
reversibledecisions
Why not
Single Page App
integration?
Part 4/10
Based on: Nicholas Zakas: Enough With The JavaScript Already!
Based on: Nicholas Zakas: Enough With The JavaScript Already!
Based on: Nicholas Zakas: Enough With The JavaScript Already!
Based on: Nicholas Zakas: Enough With The JavaScript Already!
Based on: Nicholas Zakas: Enough With The JavaScript Already!
+
+ =
Elevator
http://upload.wikimedia.org/wikipedia/commons/5/54/240_Sparks_Elevators.jpg
http://upload.wikimedia.org/wikipedia/commons/f/f8/Escalator,_Va%C5%88kovka,_Brno_(3).jpg
Escalator
Progressive
enhancement
http://realgamernewz.com/wp-content/uploads/2014/06/GameDev-Denis-Rozaj-of-IzBoot-Abusing-Applicants.jpg
http://sportsradiopd.com/wp-content/uploads/2014/10/phoneyeller.jpg
http://pixabay.com/static/uploads/photo/2012/02/28/15/40/adult-18377_640.jpg
empty cache
http://realgamernewz.com/wp-content/uploads/2014/06/GameDev-Denis-Rozaj-of-IzBoot-Abusing-Applicants.jpg
http://sportsradiopd.com/wp-content/uploads/2014/10/phoneyeller.jpg
http://pixabay.com/static/uploads/photo/2012/02/28/15/40/adult-18377_640.jpg
500kB of JS
HTML+CSS
http://realgamernewz.com/wp-content/uploads/2014/06/GameDev-Denis-Rozaj-of-IzBoot-Abusing-Applicants.jpg
http://sportsradiopd.com/wp-content/uploads/2014/10/phoneyeller.jpg
http://pixabay.com/static/uploads/photo/2012/02/28/15/40/adult-18377_640.jpg
curl
wget
bot
view-source:http://mypage.com
“PhantomJS can be CPU and memory intensive (and randomly crashes or freezes)”
http://sorcery.smugmug.com/2013/12/17/using-phantomjs-at-scale/
http://upload.wikimedia.org/wikipedia/commons/5/51/Indian_Macaques_grooming.jpg
http://upload.wikimedia.org/wikipedia/commons/1/14/Fortune_teller,_Albert_Anker,_1880.png
https://c1.staticflickr.com/1/94/270901614_89153a815f.jpg
Part5/10
http://upload.wikimedia.org/wikipedia/commons/5/51/Indian_Macaques_grooming.jpg
http://upload.wikimedia.org/wikipedia/commons/1/14/Fortune_teller,_Albert_Anker,_1880.png
https://c1.staticflickr.com/1/94/270901614_89153a815f.jpg
http://upload.wikimedia.org/wikipedia/commons/5/51/Indian_Macaques_grooming.jpg
http://upload.wikimedia.org/wikipedia/commons/1/14/Fortune_teller,_Albert_Anker,_1880.png
https://c1.staticflickr.com/1/94/270901614_89153a815f.jpg
http://upload.wikimedia.org/wikipedia/commons/1/1d/Pietro_Longhi_021.jpg
Scientific method
http://upload.wikimedia.org/wikipedia/commons/b/be/Abacus_4.jpg
every 2 weeks
6 times a
day
http://upload.wikimedia.org/wikipedia/commons/b/be/Abacus_4.jpg
http://pixabay.com/static/uploads/photo/2013/07/12/18/30/stopwatch-153398_640.png
Lead time: 5-8 minutes
IDE is my layout tool
Build Continuous
Deliverability in
Part6/10
no
dev|test|prod.properties
in the app codebase
treat you code like
an open source library
in-memory
HttpSession
is the root of
all deployment evil
run apps as
stateless processes
VCS
cron
logging
business logic
ssh + tail
ssh + tail
ssh + tail
?
http://upload.wikimedia.org/wikipedia/commons/7/79/Operation_Upshot-Knothole_-_Badger_001.jpg
log to stdout
and pipe it to
modern log
analysis tool
"Installing software is like a first date: if it
can't be polite, smart, and generous, what
should I expect later?" - Scott Berkun
create fast,
disposable and
self-contained
services
<build_tool> build
<build_tool> run
Part
7/10
cloud-
native
yo!
http://upload.wikimedia.org/wikipedia/commons/f/f7/EES_(Namibian_rapper).jpg
can’t display ad
personal data
compromised
can’t display ad
someone dies
personal data
compromised
can’t display ad
someone dies
personal data
compromised
can’t display ad
Why did we choose Heroku?
https://c2.staticflickr.com/4/3362/3546059144_64e632801c.jpg
our apps
PaaS IaaS for this app
diff
diff
< PORT
---
> OPENSHIFT_NODEJS_PORT
diff
< PORT
---
> OPENSHIFT_NODEJS_PORT
reversibledecisions
our users
our users
EU backend
US backup
backend
our users
EU backend
US backup
backend
Varnish
self-service envs
Part8/10
self-service envs
http://pixabay.com/static/uploads/photo/2013/07/12/14/48/cursor-148819_640.png
trial!
we may outgrow
Heroku one day
we may outgrow
Heroku one day
Orchestration
Part9/10
manually
git push/pull origin master
http://upload.wikimedia.org/wikipedia/commons/d/d4/Devicetemplates_laptop-01.png
run build with tests
git push heroku_test master
heroku pipeline:promote
heroku pipeline:promote
CI/CD
as a service
self-hosted
CI tools
“An opportunity opens up to transform your
software into something more expressive and
versatile than you expected. This can mean
new features or it can just mean the
replacement of a big chunk of rigid code with
a simple, flexible expression of a deeper model. While
this does not happen every day, it is so
valuable when it does come up that the
opportunity needs to be recognized and grasped.”
“An opportunity opens up to transform your
software into something more expressive and
versatile than you expected. This can mean
new features or it can just mean the
replacement of a big chunk of rigid code with
a simple, flexible expression of a deeper model. While
this does not happen every day, it is so
valuable when it does come up that the
opportunity needs to be recognized and grasped.”
“An opportunity opens up to transform your
software into something more expressive and
versatile than you expected. This can mean
new features or it can just mean the
replacement of a big chunk of rigid code with
a simple, flexible expression of a deeper model. While
this does not happen every day, it is so
valuable when it does come up that the
opportunity needs to be recognized and grasped.”
“An opportunity opens up to transform your
software into something more expressive and
versatile than you expected. This can mean
new features or it can just mean the
replacement of a big chunk of rigid code with
a simple, flexible expression of a deeper model. While
this does not happen every day, it is so
valuable when it does come up that the
opportunity needs to be recognized and grasped.”
Pipeline as code
shape the path
Part10/10
shape the path
communicate changes
and
build good PR
be nice to people
Summary
• Consider using the Web before you start
reimplementing it
• Consider designing for replaceability and
deployability
• Consider automating boring things including
PaaS setup and deployment pipelines
• Consider using different change patterns for
your context
Summary
• Consider using the Web before you start
reimplementing it
• Consider designing for replaceability and
deployability
• Consider automating boring things including
PaaS setup and deployment pipelines
• Consider using different change patterns for
your context
Summary
• Consider using the Web before you start
reimplementing it
• Consider designing for replaceability and
deployability
• Consider automating boring things including
PaaS setup and deployment pipelines
• Consider using different change patterns for
your context
Summary
• Consider using the Web before you start
reimplementing it
• Consider designing for replaceability and
deployability
• Consider automating boring things including
PaaS setup and deployment pipelines
• Consider using different change patterns for
your context
Thank you
Mateusz Kwaśniewski
“The purpose of an organization
is to enable ordinary human
beings to do extraordinary
things” - P.Drucker
Continuous
Delivery
Organizational
change
RESTful
*services
ReadingList

Enterprise makeover. Be a good web citizen, deliver continuously and change your organisation