the app evolution

21
App Development Evolution What has changed?

Upload: devevents

Post on 16-Apr-2017

68 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: The App Evolution

App Development EvolutionWhat has changed?

Page 2: The App Evolution

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 3: The App Evolution

Bimodal ITThe practice of managing two separate but coherent styles of work, one focused on predictability and the other on exploration Source: Gartner (April 2015)

System of Engagement

System of Record

3

Page 4: The App Evolution

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 5: The App Evolution

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 6: The App Evolution

12 factor appmanifesto

The Reactive manifesto

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

Page 7: The App Evolution

MicroservicesApplication 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

Page 8: The App Evolution

MicroservicesApplication 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

Page 9: The App Evolution

APIsAPIs 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

API C

onsu

mer

API 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 10: The App Evolution

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 11: The App Evolution

Standards: OpenStack & CloudFoundryCloud 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

HirizonDashboard

https://www.openstack.org/

https://www.cloudfoundry.org

Page 12: The App Evolution

OAuth

Standards (continued)

Page 13: The App Evolution

Platforms: Bluemix & other PaaSPaaS 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 14: The App Evolution

ContainersContainers are relatively new concept allowing for

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

RunAny 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 15: The App Evolution

NoSQL & LanguagesNew 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

.java

.js

.go

.php

.rb

.py

.net

.swift

Page 16: The App Evolution

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 17: The App Evolution

MethodsCloud 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 18: The App Evolution

Hybrid CloudHybrid 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 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+

Clo

ud b

urst

ing

Clo

ud m

igra

tion

Clo

ud in

teg

rati

on

While developing for the cloud do consider:

Page 19: The App Evolution

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 monitoringexecutions 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 20: The App Evolution

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 21: The App Evolution

Thank you!