1. Welcome to DevConnect 2016
Before we begin
Download our event application to plan your day, participate in on-site
activity and more: http://ibm.biz/dcmobile
Labs have been emailed in a GoogleDoc and can also be accessed by
the app. Please note the pre-reqs for the Build Your Own Cognitive App
this afternoon.
2. Morning Sessions
Registration + Breakfast
Welcome + Intro
The App Evolution Continues
Building Next Gen Applications and Microservices
DEMO LAB: Getting familiar with Cloud Foundry and
the Bluemix platform
BREAK
Practical DevOps in a Hybrid World
DEMO LAB: Using DevOps Services on Bluemix
LUNCH
IBM DeveloperConnect Workshop Agenda
Afternoon Sessions
BREAKOUT SESSIONS
Room #1 INSTRUCTOR LED LABL
Build your own Cognitive App
with Watson and Node.js
Room #2 Roadmap to optimize the app evolution
– IBM Design Thinking
BREAK
Horizon Watch: Swift
DEMO LAB: Write, build, and deploy using Containers
Open Q&A
CLOSING – THANK YOU FOR JOINING US!
4. Cloud not ready
Cloud light
Cloud centric
Cloud native
Cloud enabled
Intended for the cloud. Using
highly specific cloud features
Application moved to the
cloud but uses minimal
cloud features
Application with
increases utilization of
cloud features
Born on the cloud.
Maximizes features of the
cloud.
Applications tied to legacy
infrastructures, runtimes
and designs
Levels of apps
‘cloudification’
How well your application fits the cloud?
10. Microservices
Application architected as a suite of small services,
each running in its own process, and communicating with lightweight mechanisms
Monolithic Microservices
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
API
API
11. Microservices
Application architected as a suite of small services,
each running in its own process, and communicating with lightweight mechanisms
Monolithic Microservices
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
Scaling
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
API
API
Scaling
Why Microservices?
Agility
• Services evolve independently and at difference speeds
• Easier to adopt new technology and evolve architecture
• Enables continuous delivery
Resilience
• Use services boundaries for fault tolerance and isolation
• Design for failure
Runtime scalability
• Stateless services designed for horizontal scalability
• Services can be scaled independently
Dev organization scalability
• Easier to develop services in parallel
• Smaller working set for each developer
12. APIs
APIs allows for easy, quick and dynamic access to the business content of your application.
API is a glue between Microservices.
Attributes of an API
Consumer driven
Defined by Configuration
Self Service
Fast, Easy
Fine-grained, Does one thing
Focus on ease of consumption
Easy access to Tasks / Data
Business Asset Owner
Service Intent:
How can I effectively expose
data / functions of my Business
Asset
Application Designer
API Intent:
How can I quickly and
easily access specific data
APIConsumerAPIProvider
Applications
A Consuming Application uses one or more APIs
API’s
An API productizes specific tasks of a service
Multiple APIs can be “leveraged” from the same service
Services
A Service exposes a function of an Business Asset
Multiple Services can be “derived” from a Business Asset
Business Assets
Can provide multiple functions
Attributes of a Service
Provider driven
Defined by Coding
On-boarding
Managed Change, Stability
Medium-Grained, Does several things
Focus on connectivity, reuse
Expose Functions for broad use
14. Standards: OpenStack & CloudFoundry
Cloud related standards allow for interoperability, portability, automation and
easier maintenace and development of the cloud applications.
Applications
Data
Runtime
Middleware
O/S
Virtualization
Servers
Storage
Networking
Software to manage compute,
network, and storage for cloud
The foundation of IBM’s IaaS
interoperability
Over 20k participants, 400
companies: Larger than Linux
Built on a highly scalable
distributed architecture
The basis for IBM Bluemix
De facto open PaaS platform
Foundation established Dec. 2014; DEA Pools
Router
User Authentication &
Authorization
Cloud
Controller
Health
Manager
Service
Gateway Apps
Build Packs
Service
Connector
Messaging
Cloud Foundry BOSH
Nova
Compute node
KeyStone
Idenity service
Swift
Object Store
Neuron
Networking
Glance
Image Store
Cinder
Volume service
Horizon
Dashboard
https://www.openstack.org/
https://www.cloudfoundry.org
16. Platforms: Bluemix & other PaaS
PaaS aims at make cloud developer life easier. It handles many requirements automatically
allowing developer to focus on coding business logic.
An implementation of IBM's Open
Cloud Architecture based on
Cloud Foundry
Delivers enterprise-level services
that can easily integrate with your
cloud applications without you
needing to know how to install or
configure them.
Enables organizations and
developers to quickly and easily
create, deploy, and manage
applications on the cloud.
What is Bluemix? Bluemix features Bluemix services
Containers
Buildpacks
Boilerplates
Virtual Machines
Monitoring
Management Console
API Management
Auto scaling
DevOps support
Lots of services from IBM & 3rd parties
Watson
Mobile
DevOps
Web
Applications
IoT
Integration
Big
Data
Data
Management
Security
Business Analytics
Check the service catalog online:
https://console.ng.bluemix.net/?direct=classic/#/store/cloudOEPaneId=store
More information:
https://console.ng.bluemix.net/
17. Containers
Containers are relatively new concept allowing for
convenient packaging your developments and „shipping” them to any destination.
Run
Any App
Anywhere
What is a Container?
App
A
App
A’
App
B
Bins /
Libs
Bins /
Libs
Bins /
Libs
Guest
OS
Guest
OS
Guest
OS
Hypervisor (Type 2)
Host OS
Server
AppA
Bins /
Libs
Bins /
Libs
Host OS
Server
AppA’
AppB’’
AppB
AppB’
Docker
Containers are isolated but share OS and,
where appropriate, bins/libraries.
It results in significantly faster deployment, much less
overhead, easier migration & faster restart
Docker
VMs
Image repository
Image authoring
Multi-container deployment
Image signing
Image Distribution
Declarative model for deploy
Container relationships
Deploy/Manage containers
Engine monitoring
Image lifecycle management
Business policy for deployment
https://www.docker.com/
18. NoSQL & Languages
New tools and programming languages increasing productivity,
responsiveness and easiness of development.
NoSQL Languages
NoSQL (also translated as Not Only SQL)
are the databases which allows you to
store other structures than
records/columns.
GeoSpacial data
010101011
101010101
010101010
101010101
010101010
110101011
Documents
Graphs
Key-Value
.swift
20. Methods
Cloud development is about speed, agility and user experience.
Waterfall is not enough anymore…
Requirements Design Delivery OperationsGAP! GAP! GAP!
How to „discover” & capture the real
users requirements?
Is the list of a 1000+ functional
requirements useful?
„ 400 features? No human would be able to use
software with that level of complexity” - Dilbert
How to assure that the developer’s
understanding of requirements is aligned
with the end user?
How to include user feedback into
development process?
How to make sure that bugs are fixed
almost instantly?
How to make your solution „alive” and
responsive to the new requirements?
Design Thinking
It is a formal method for practical,
creative resolution of problems and
creation of solutions, with the intent of
an improved future result.
It focuses on user and the way how the
solution will be used rather then on
requirements.
Agile
It is a group of software development
methods in which requirements and
solutions evolve through collaboration
between self-organizing, cross-
functional teams. It allows for bringing
the user into the development process.
DevOps
It is a software development method
that stresses communication,
collaboration, integration, automation, &
measurement of cooperation between
development & operations team. It
brings together people who build with
people who run the solution.
https://design.ibm.com/thinking.html https://en.wikipedia.org/wiki/Agile_software_development http://www.ibm.com/ibm/devops/us/en/
21. Hybrid Cloud
Hybrid cloud demands portable architecture.
Cloud apps should be able to run everywhere.
Cloud is not a specific solution,
platform nor product.
Cloud is a new way in which IT solutions
are delivered & consumed by Business.
Private Cloud & IT
Pros:
• Full control
• Advanced management
• Strong security
IBM PoV: Hybrid Cloud
The best features from both worlds
Maximization of investment
Matching infrastructure with application
Balance between security and elasticity
Equalized investment (Capex vs. Opex)
Shorter innovation cycles
Pros:
• Low entry costs
• Pay-per-use,
• Elasticity
Off-premises / Public Cloud
Dynamic Hybrid
Hybrid Cloud+
Cloudbursting
Cloudmigration
Cloudintegration
While developing for
the cloud do consider:
22. Self service and Automation
Cloud heavily relays on automation. Now developers can use many tools
for automated provisioning, management and deployment of their code.
One of the most well-known cloud infrastructure
automation tools, Chef delivers configuration
management and continuous delivery. By turning
infrastructure into code, Chef helps cloud engineers
and IT professionals automate infrastructure build,
deployment, and management.
Puppet is the configuration management system that
enables cloud engineers and IT professionals to
define the state of their IT infrastructure and then
automatically enforces the correct state. Puppet
automates time-consuming manual tasks.
Some other tools are described here: https://blog.profitbricks.com/48-best-cloud-tools-for-infrastructure-automation/
Jenkins is an application that monitors executions of
repeated jobs, such as building a software project or
jobs run by cron. It helps with building/testing
software projects continuously and monitoring
executions of externally-run jobs.
UrbanCode is a tool for automating application
deployments through your environments. It is
designed to facilitate rapid feedback and continuous
delivery in agile development while providing the
audit trails, versioning and approvals needed in
production.
IBM Cloud Orchestrator provides cloud management
for your IT services, allowing you to accelerate the
delivery of software and infrastructure. Based on
open standards, it reduces the number of steps to
manage public, private and hybrid clouds by using
an easy-to-use interface.
Bluemix Delivery Pipeline service automates builds
and deployments, test execution, configure build
scripts, and automate execution of unit tests.
And many many more…
23. Is your application cloud centric/native/ready?
If you are not sure… use Chaos Monkey –
if your overall solution survives this encounter, you are good to go!
https://github.com/Netflix/SimianArmy/wiki/Chaos-Monkey
„Chaos Monkey is a service
which identifies groups of
systems and randomly
terminates one of the systems
in a group.”
I. Codebase :: One codebase tracked in revision control, many deploys
II. Dependencies :: Explicitly declare and isolate dependencies
III. Config :: Store config in the environment
IV. Backing services :: Treat backing services as attached resources
V. Build, release, run :: Strictly separate build and run stages
VI. Processes :: Execute the app as one or more stateless processes
VII. Port binding :: Export services via port binding
VIII. Concurrency :: Scale out via the process model
IX. Disposability :: Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity :: Keep development, staging, and production as similar as possible
XI. Logs :: Treat logs as event streams
XII. Admin processes :: Run admin/management tasks as one-off processes