2. Notices and Disclaimers
Copyright Š 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without
written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of
the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS
DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY
DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF
PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they
are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how
those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating
environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in
all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All
materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any
individual participant or their specific situation.
It is the customerâs responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification
and interpretation of any relevant laws and regulatory requirements that may affect the customerâs business and any actions the customer may need to take to
comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance
with any law
3. Notices and Disclaimers cont.
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available
sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other
claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not
warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBMâs products. IBM EXPRESSLY DISCLAIMS
ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or
other intellectual property right.
â˘IBM, the IBM logo, ibm.com, AsperaÂŽ, Bluemix, Blueworks Live, CICS, Clearcase, CognosÂŽ, DOORSÂŽ, EmptorisÂŽ, Enterprise Document Management
Systemâ˘, FASPÂŽ, FileNetÂŽ, Global Business Services ÂŽ, Global Technology Services ÂŽ, IBM ExperienceOneâ˘, IBM SmartCloudÂŽ, IBM Social BusinessÂŽ,
Information on Demand, ILOG, MaximoÂŽ, MQIntegratorÂŽ, MQSeriesÂŽ, NetcoolÂŽ, OMEGAMON, OpenPower, PureAnalyticsâ˘, PureApplicationÂŽ,
pureClusterâ˘, PureCoverageÂŽ, PureDataÂŽ, PureExperienceÂŽ, PureFlexÂŽ, pureQueryÂŽ, pureScaleÂŽ, PureSystemsÂŽ, QRadarÂŽ, RationalÂŽ, RhapsodyÂŽ,
Smarter CommerceÂŽ, SoDA, SPSS, Sterling CommerceÂŽ, StoredIQ, TealeafÂŽ, TivoliÂŽ, TrusteerÂŽ, UnicaÂŽ, urban{code}ÂŽ, Watson, WebSphereÂŽ, WorklightÂŽ,
X-ForceÂŽ and System zÂŽ Z/OS, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and
service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark
information" at: www.ibm.com/legal/copytrade.shtml.
4. Please Note:
â˘IBMâs statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBMâs sole
discretion.
â˘Information regarding potential future products is intended to outline our general product direction and it should not be relied
on in making a purchasing decision.
â˘The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver
any material, code or functionality. Information about potential future products may not be incorporated into any contract.
â˘The development, release, and timing of any future features or functionality described for our products remains at our sole
discretion.
â˘Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The
actual throughput or performance that any user will experience will vary depending upon many factors, including
considerations such as the amount of multiprogramming in the userâs job stream, the I/O configuration, the storage
configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results
similar to those stated here.
⢠IBMâs statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBMâs sole
discretion. Information regarding potential future products is intended to outline our general product direction and it should
not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a
commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future
products may not be incorporated into any contract. The development, release, and timing of any future features or
functionality described for our products remains at our sole discretion.
5. ď§ Journey and transformation to build Cloud-first software
â Current trends, and best practices around building
Cloud-first software
ď§ Session for anyone interested to learn about some of the
transformations currently ongoing within IBM, social
offering âŚ
â But also in the industry in general
ď§ Technical point of view
â Explore more about some or all of what is described in
this session for your own solutions
ď§ Business perspective
â Transparent about the changes we are currently making
â Influence the way we're delivering capabilities
What is this session about?
6. ď§ Taking existing on-premises applications and deploying
them on a Cloud environment
â Fastest path to offer applications on the Cloud
â Requires only a few updates to software (multitenancy)
and processes
ď§ That approach works perfectly fine! ⌠up to a certain extent:
â Slow and disruptive process to update the
software. Requires a monthly maintenance of several
hours downtime to upgrade the application.
â Does not scale linearly with number of users
â Further reliability goals are difficult to reach with on-
premises technologies
ď§ SLA: never enough 9s...
Why do we need to change?
7. ď§ We want an architecture, technology stack
and processes that allow us:
â To scale lineraly
ď§ From several millions to several
hundreds millions
â With as little downtime as possible
ď§ No downtime for upgrades of new
versions
ď§ Resilience: No downtime due to failure of
some of the underlying services
â To establish a continuous feedback
loop with end-users
High level goals on Cloud
Hypothesis
Develop
Test
Deploy
Capture
metrics
Insights
8. ď§ Going through the loop as fast as possible
is key to innovation:
â Ensure building what end-users needs,
as opposed to what we think they need
â Reduce risk of changes
â Simplify definition of âdoneâ: released to
production
ď§ Cloud enables us to tighten the feedback
loop
â Control development + infrastructure +
deployment + metrics gathering
Delivering at the âSpeed of Cloudâ
Tighten the
feedback
loop
Hypothesis
Develop
Test
Deploy
Capture
metrics
Insights
9. ď§ Historical context
â Cloud characteristics
â Importance of continuous feedback loop
ď§ Organization culture
ď§ Software Architecture for Cloud
ď§ Continuous delivery and automation
ď§ Modern UI stack
Agenda
11. ď§ Many technology changes on Cloud
â Releasing faster requires an organization change as
much as technical changes
â Technical changes can help organization to change and
evolve
ď§ Devops: establishing an organization culture to enable more
frequent deployment to production in a reliable and
sustainable way
Importance of organization culture changes
Better collaboration
between all actors involved
in the delivery
Automation of delivery
processes
Faster iterations, more
frequent deployments
12. On-premises (2006 - ...)
ď§ Clear separation of development
of application from operations
â Development is IBM
â Deployment and operation
handled by customer
purchasing software from IBM
13. Early Cloud releases (ca 2010 - ...)
ď§ Apply same âwinningâ patterns as
on-premise: separate development
organization from operation
organization
ď§ Not specific to IBM
â Similar organization
documented by other major
actors on Cloud (Netflix,
Facebook, Amazon, ...)
ď§ Main effects:
â Similar release cycles as on-
premise: once every few
months
â Obstacles to accelerate
release cycles to a daily /
weekly basis
14. Conflicting interests within same organization
Development teams Operations
Deployed
Software
Adapt software to user/market demands
by making code changes
to add functionalities
=> Seek frequent changes
Responsible for stability of deployed
software
=> Seek to minimize changes
15. Front end
dev team
Server
Side
dev team
Product
Mgm
team
DBA
team
QA team
(Functional)
QA team
(Perf.)
UX
team
Net
Admin
SAN
admin
team
Single application
Technical and schedule coordination across multiple large teams
Requirements / stories
The whole organization is siloed â not just dev and ops
16. Effects of segregated teams on release velocity
Fear of deploying
changes
High cost of deploying
individual change
Large batch of
changes
delivered to production
Higher risks
(that sth goes wrong)
More coordination
needed between
teams
Less frequent
deliveries of
changes
Segregated teams
25. ď§ Increasing architecture trend in the industry
â Netflix, Amazon.com, Facebook
ď§ Small, independent, loosely coupled runtime
components that work together
â Exhibit strict boundaries (through network
interface)
â Composed together to produce overall solution /
product
â Unix philosophy: âdo one thing and do it wellâ
â Independent deployment unit
ď§ How small?
â âApplication that fits in your headâ James Lewis,
Thoughtworks
Microservices
26. Example - functional decomposing
âTraditionalâ monolithic app Microservices based app
27. Example - Different runtime
âTraditionalâ monolithic app Microservices based app
29. The 3 axis of scalability
From theartofscalability.com
Y axis â functional
decomposing
Split different things
Z axis â data partitioning
(âshardingâ)
Split similar thingsX axis â horizontal
duplication
Cloning app (WAS
clustering)
30. Common aspects of microservices
Discoverability
Observability
Configuration
Single entry point
(routing,
aggregation,
common API)
31. Advantages ...
Autonomous
teams around microservices
Eliminate long term commitments
to single technology stack
Faster to build
Deploy independently
Small: easier to understand
end to end
Scale independently
Fault isolation
Enable a âre-orgâ
Surface code to
production faster
Scalability / resilience
benefits
Fast rollforward
33. ď§ Essentially similar challenges as for any
distributed applications but...
â Number of documented design patterns to
tackle those challenges
â Frameworks are emerging and getting
mature simplify inherited distributed
complexity
ď§ One example: circuit breaker pattern
â Remote calls can fail for various reasons
â Wrap any remote call in âcircuit breakerâ
object. Detects errors and prevent them
from happening constantly
â Circuit breaker âtripsâ based on threshold of
failures (associated with monitoring)
â Netflix Hystrix is an opensource Java
implementation of this pattern
Challenges
37. Continuous integration (CI) pipeline
Commit stage Build Unit tests
Acceptance
tests
Continuous integration
Promote
binaries
ď§ CI aims at preventing integration
problems between code
deliveries from multiple
developers
ď§ Everybody delivers to the same
branch âtrunkâ on a daily basis
ď§ To avoid quality issues, quality
checks are automatically run
for every delivery in a pipeline
38. Continuous integration (CI) pipeline
Commit stage Build Unit tests
Acceptance
tests
Continuous integration
Promote
binaries
ď§ Many tools to support CI
implementation appeared over
the years
ď§ Feedback: âStop the lineâ
approach.
Problems with a code delivery
are surfaced immediately to the
team and should be fixed as top
priority
ď§ Increase visibility of the build,
test processes
39. Final mile to production
Production
Bunch of
manual steps
The final mile
Commit stage Build Unit tests
Acceptance
tests
Continuous integration
Promote
binaries
Slow, manual, error-prone,
infrequent and inconsistent
deployments
40.
41. Walking back from production
Production
Commit stage Build Unit tests
Acceptance
tests
Fetch
binaries
Automated
application
deployment
Manual steps
to improve
quality
Continuous integration
Automate deployment of software and its dependencies
Introduce configuration management
Makes deployment repeatable on any environment
Promote
binaries
42. Automated consistent deployment
Rollback support
Dashboard for clear visibility
of what is deployed where Integrated with middleware,
provisioning and
service virtualization
Orchestration of
changes across servers
Try it out:
https://developer.ibm.com/urbancode/products/urbancode-deploy/
43. Continuous delivery pipeline
Production
Commit stage Build Unit tests
Acceptance
tests
Fetch
binaries
Promote
binaries
Deploy on
test server
(UDeploy)
Capacity
testing
Resilience
testing
Chaotic
testing
Automatic
application
deployment
Manual steps
to improve
quality
Extensive automated system
and performance testing:
how does the app behave
under load
44. Continuous delivery pipeline
Production
Commit stage Build Unit tests
Acceptance
tests
Fetch
binaries
Promote
binaries
Manual
Exploration
testing
Deploy on
test server
(UDeploy)
Capacity
testing
Resilience
testing
Chaotic
testing
Automatic
application
deployment
Human centric testing cannot be
eliminated:
Exploration testing (usability), pen
testing
It can be minimized however
45. Automated delivery pipeline
Commit stage
Unit
and functional
testing
System
testing
Publish
binaries to
central repo
Deploy to
pre-prod
Continuous integration Continuous delivery
Manual
Exploration
testing
Release to
production
Less than 24 hours
47. Feature flags
ď§ Corner piece of continuous integration:
â Developers deliver every day to trunk (no feature
branches)
â The code can end up in production in 24 hours with
continuous delivery
â Thus, need a mechanism to hide new features being
built from end-users
ď§ Conditional statement (âflagsâ) hiding capabilities from end-
user
â Developer can enable a feature through configuration
changes
ď§ Pushing further, flags can also be used in production for
further technical and user experience testing
â Number of tooling, framework available for feature
toggles
â http://www.beautifulbuilds.com/feature-toggle-frameworks
-list/
48. Using feature flags for testing in production
ď§ Canary testing â beta testing in production
â Make a feature available to a subset of
users
â Monitor errors / issues, track discovered
bugs
ď§ A/B testing
â 2 variants of same feature are made
available to 2 groups of users
â Measure / get feedback on best variant
ď§ Progressive rollout
â Make a new feature available progressively
overtime (ie: a week)
â Measure performance impact over time
49. Measuring
ď§ Key to understand whether you're heading in the
right direction (=delivering a delightful
experience to users)
ď§ Technical metrics (performance / system)
â Usual system centric (uptime, heap,
memoryâŚ)
â Often forgotten: trace back errors affecting
specific users, including client-side errors
ď§ End-user usage patterns metrics
â Capture events on most end-user
interaction with the product
ď§ Transform discrete events into insights through
analytics
â Distinguish technical obstacle to adoption
from actual user experience issues
â Feed into design thinking process as input
Why?
Technical issues? Usability issues?
Out of all user doing action A,
how many users are doing action B?
Fix it!
Adjust priority of
Defect based on
Actual end-user impact
Feed into design thinking:
* Diverge/converge
to generate ideas
* Test ideas through
A/B testing
51. Overview
ď§ Where we are
ď§ Understand the gaps
ď§ How we can change!
ď§ Frameworks to support
52. Where we are - Presentation Layer
ď§ Current Scenario, J2EE application layer produces JS bundles and bootstraps UI with Java/Struts
ď§ Below shows the topology of a Connections Screen rendering for one Application - Homepage
Common
Java Servlet
Aggregation of
CSS/JS Modules
Homepage
Java Struts
Bootstrap HTML
Browser
JS/CSS
J2EE WebSphere
API server
53. Understand the gaps â pain points
ď§ Large deployment topology
ď§ Less optimal developer experience
ď§ UI frameworks evolved at different speeds between applications â lack of consistency
ď§ UI tightly bound to API/Backend layer
ď§ Slower feedback from customers
ď§ Fear of change!
ď§ All the above leaves us feeling like thisâŚ..
54. Change 1 â Get closer to our runtime
ď§ The Web Browser is our runtime OS, JavaScript is its language, lets make it a first class part of our
deployment
55. ď§ Run the presentation server layer on NodeJS, which itself is a lightweight JavaScript runtime.
â Low footprint, can scale horizontally easily.
â Speed up feature development and prototyping by using first class tooling. Automate build
and run in JavaScript
â Reduce context switching between Java and JavaScript
â Shared JavaScript context between browser and server. Isomorphic applications
56. Strongloop
ď§ StrongLoop is an IBM company which provides enterprise grade management of NodeJS servers
via Process Manager
â Supports automated deployment services for NodeJS inc containers
â Remote management of servers (inc aggregated logging, cluster management â auto
horizontal scaling)
â Integrated monitoring and profiling.
57. Javascript is everywhere
ď§ Truly universal language
â Desktop
â Mobile Web
â Mobile Native
â Server
â Browser
58. Isomorphic (Universal) JS
ď§ Share the same JavaScript on NodeJS server and Browser
â Render visible elements on the server and send to client, major performance boost on 'time to
first load'
â Client takes over and bootstraps current state. Achievable with React and Flux architecture
Client
Browser
Server
NodeJS
Universal JS
API
59. Change 2 â Consolidation
ď§ Decouple Presentation layer from J2EE stack and consolidate and share resources, render Single
Page architecture.
NodeJS
Browser
Services (JSON Graph)
60. JSON Graph Query Libraries
ď§ There has been an emerging trend in Graph Query languages two notable
ones are
â Netflix with Falcor. https://github.com/Netflix/falcor
â Facebook with Relay/GraphQL. https://facebook.github.io/relay/
ď§ Both define a JSON Schema language that can combine multiple data
sources
ď§ Provide a JS library to declare data fetching requirements
ď§ Benefits to developers and 3rd parties
â Single interface to many data sources, meaning client code only has to
program to one interface
â Network is hidden â simply declare your dependencies where needed
and let the framework fetch resources. Including handling de-duplication
efficiently.
â Fetch only the API payload you really need by declaring your
dependencies.
â Allows API to be updated independently from the client code.
62. JSON Graph Query API â Relay/GraphQL
Plain React Component
GraphQL query to
schema
Results auto bound to
props in React
Component
63. Change 3 â Deploy fast and Fail fast
ď§ Decoupled Presentation layer is deployed independently and frequently
ď§ Rapid prototyping is supported to get design feedback
ď§ A/B testing and metrics used to get closer to the customer and help us ensure successful outcome.
64. Design First - Features
PrototypeDesign
Development
React
Component
Library Feature
Gatekeeper Metrics
NewRelic
65. Change 4 - Eliminate risk of change
ď§ Automation is vital to Cloud first delivery
â Build with NodeJS and Gulp
â Deployment via Containers
â Jenkins pipeline from developer to production
ď§ Automated testing is central to everything and is pervasive
â Selenium based Webdriver tests (DVT, BVT, FVT)
â Jasmine unit testing with Karma runner.
â Rational Performance Test for AVT accessibility compliance scans
â Security and Ethical hacking
ď§ A/B testing
â All features are progressively disclosed via gatekeeper process
â All code is infused with metrics (New Relic) to relate back real-time analysis of features
66. Presentation layer â Tools and Frameworks
î React â Web components
î Flux/Redux â State management architecture
î SASS â CSS library
î NodeJS / StrongLoop â deployment
î Gulp/Webpack â JS Build automation
î Multi-Channel â Responsive Web development
î Graph Query Language â Falcor/Relay GraphQL
67. React and Flux
ď§ React is a modern web component library created by Facebook
ď§ Flux is an architecture which dictates uni-directional flow of state in the
application from back to front. Update entire dom anytime the state
changes. This sounds expensiveâŚ. How is this managed? React
virtual Dom!
ď§ React eco-system is flourishing in OSS
ď§ Learn more - https://facebook.github.io/react/index.html
68. Responsive Web Design â Multi Channel
ď§ All Web-UI should adhere to Responsive Web Design principals and support multiple channels
through usage of
â SASS and media queries (device detection)
â Fluid grids
â CSS3 Flexbox
69. Main takeaways
ď§ Shortening the feedback loop requires a organization culture change (re-org)
ď§ Deep architecture change with microservices can help push the re-org
ď§ Microservices also helps with:
â Scalability
â Resilience
â Continuous delivery
ď§ Microservices are for âtall-enoughâ applications
â To justify the extra cost of distributed application development and deployment
ď§ Number of emerging modern UI framework and tooling
â Performing UI stack
â Enable truly automated continuous delivery of front-end elements
71. Your Feedback Is Important!
Based upon your session attendance, a customized list of
surveys will be built for you.
Please complete your surveys via the conference kiosks or any
web enabled device at https://www.connectsurveys.com or
through IBM Event Connect.