the app evolution continues

24
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.

Upload: paula-pena

Post on 14-Apr-2017

62 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: The App Evolution Continues

Welcome to DevConnect 2016

Before we beginDownload 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.

Page 2: The App Evolution Continues

Morning SessionsRegistration + 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 BluemixLUNCH

IBM DeveloperConnect Workshop Agenda

Afternoon SessionsBREAKOUT 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!

Page 3: The App Evolution Continues

The App Evolution Continues

Cloud Centric DesignWhat has changed?

Page 4: The App Evolution Continues

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 featuresApplication 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?

Page 5: The App Evolution Continues

Bimodal IT

Page 6: The App Evolution Continues

Understanding Bimodal IT

Page 7: The App Evolution Continues

Brief review

Code

Data

Runtime

Middleware

OS

Compute

Code

Data

Runtime

Middleware

OS

Compute

Custom Managed

Platform Managed

Code

Data

Runtime

Middleware

OS

Compute

Bare metal

Code

Data

Runtime

Middleware

OS

Compute

Containers

On Premises / Cloud Enabled Cloud Native

Platform as a Service

Infrastructureas a Service

Code

Data

Runtime

Middleware

OS

Compute

Serverless

Page 8: The App Evolution Continues

Architectural patterns Components, Platforms & Products Methods & Approaches

2. Standards Platforms Containers NoSQL DBs Languages

1. The 12 factor app Reactive frameworks Microservices APIs

3. Design Thinking Agile DevOps Hybrid Cloud Self service & Automation

Page 9: The App Evolution Continues

I. Codebase One codebase tracked in revision control, many deploys

II. DependenciesExplicitly declare and isolate dependencies

III. ConfigStore config in the environment

IV. Backing ServicesTreat backing services as attached resources

V. Build, release, runStrictly separate build and run stages

VI. ProcessesExecute the app as one or more stateless processes

VII. Port bindingExport services via port binding

VIII. ConcurrencyScale out via the process model

IX. DisposabilityMaximize robustness with fast startup and graceful shutdown

X. Dev/prod parityKeep development, staging, and production as similar as possible

XI. LogsTreat logs as event streams

XII. Admin processesRun admin/management tasks as one-off processes

I. ResponsiveThe system responds in a timely manner if at all possible. Responsiveness is the cornerstone of usability and utility, but more than that, responsiveness means that problems may be detected quickly and dealt with effectively.

II. ResilientThe system stays responsive in the face of failure. This applies not only to highly-available, mission critical systems — any system that is not resilient will be unresponsive after a failure.

III. ElasticThe system stays responsive under varying workload. Reactive Systems can react to changes in the input rate by increasing or decreasing the resources allocated to service these inputs.

IV. Message drivenReactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation, location transparency, and provides the means to delegate errors as messages.

12 factor appmanifesto

The Reactive manifesto

http://12factor.net/ http://www.reactivemanifesto.org/

Page 10: The App Evolution Continues

Microservices Application architected as a suite of small services,

each running in its own process, and communicating with lightweight mechanisms

Monolithic Microservices

01010101110101010101010101010101010101010101011010101101010101010

01010101110101010101010101010101010101010101011010101101010101010

API

API

Page 11: The App Evolution Continues

Microservices Application architected as a suite of small services,

each running in its own process, and communicating with lightweight mechanisms

Monolithic Microservices

01010101110101010101010101010101010101010101011010101101010101010

01010101110101010101010101010101010101010101011010101101010101010

01010101110101010101010101010101010101010101011010101101010101010

Scaling

01010101110101010101010101010101010101010101011010101101010101010

01010101110101010101010101010101010101010101011010101101010101010

01010101110101010101010101010101010101010101011010101101010101010

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

Page 12: The App Evolution Continues

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 APIConsumer driven

Defined by ConfigurationSelf ServiceFast, Easy

Fine-grained, Does one thingFocus 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

AP

I Con

sum

erA

PI P

rovi

der

ApplicationsA Consuming Application uses one or more APIs

API’sAn API productizes specific tasks of a service

Multiple APIs can be “leveraged” from the same service

ServicesA Service exposes a function of an Business Asset

Multiple Services can be “derived” from a Business Asset

Business AssetsCan provide multiple functions

Attributes of a ServiceProvider driven

Defined by CodingOn-boarding

Managed Change, StabilityMedium-Grained, Does several things

Focus on connectivity, reuseExpose Functions for broad use

Page 13: The App Evolution Continues

Architectural patterns Components, Platforms & Products Methods & Approaches

2. Standards Platforms Containers NoSQL DBs Languages

1. The 12 factor app Reactive frameworks Microservices APIs

3. Design Thinking Agile DevOps Hybrid Cloud Self service & Automation

Page 14: The App Evolution Continues

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 PacksService

Connector

Messaging

Cloud Foundry BOSH

NovaCompute node

KeyStoneIdenity service

SwiftObject Store

NeuronNetworking

GlanceImage Store

CinderVolume service

HorizonDashboard

https://www.openstack.org/

https://www.cloudfoundry.org

Page 15: The App Evolution Continues

OAuth

Standards (continued)

Page 16: The App Evolution Continues

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

WatsonMobile

DevOps

Web

Applications

IoTIntegration

Big

Dat

a

DataManagement

Secu

rity

Business Analytics

Check the service catalog online:https://console.ng.bluemix.net/?direct=classic/#/store/cloudOEPaneId=store

More information:https://console.ng.bluemix.net/

Page 17: The App Evolution Continues

Containers Containers are relatively new concept allowing for

convenient packaging your developments and „shipping” them to any destination.

Build

ShipRunAny App

Anywhere

What is a Container?

AppA

AppA’

AppB

Bins / Libs

Bins / Libs

Bins / Libs

Guest OS

Guest OS

Guest OS

Hypervisor (Type 2)

Host OS

Server

App A

Bins / Libs

Bins / Libs

Host OS

Server

App A’

App B

’’

App B

App B

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/

Page 18: The App Evolution Continues

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

010101011101010101010101010101010101010101010110101011

Documents

Graphs

Key-Value

.swift

Page 19: The App Evolution Continues

Architectural patterns Components, Platforms & Products Methods & Approaches

2. Standards Platforms Containers NoSQL DBs Languages

1. The 12 factor app Reactive frameworks Microservices APIs

3. Design Thinking Agile DevOps Hybrid Cloud Self service & Automation

Page 20: The App Evolution Continues

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 ThinkingIt 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.

AgileIt 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.

DevOpsIt 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/

Page 21: The App Evolution Continues

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 & ITPros:• Full control• Advanced management• Strong security

IBM PoV: Hybrid CloudThe 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+

Clou

d bu

rstin

g

Clou

d m

igra

tion

Clou

d in

tegr

atio

n

While developing for the cloud do consider:

Page 22: The App Evolution Continues

Self service and AutomationCloud heavily relays on automation. Now developers can use many toolsfor 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…

Page 23: The App Evolution Continues

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.”

Page 24: The App Evolution Continues

Thank you!