KEMBAR78
Cloud Native Patterns with Bluemix Developer Console | PDF
InterConnect
2017
Patterns in Omni Channel
Cloud Application
Development
BM0 6321
Matthew Perrins
Brett King
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.
• What is Cloud Native
• Pattern Overview
• Use Case Example
• How to deliver it today
• Summary
Agenda
What is Cloud Native ?
99.99% + uptime (< 4 mins downtime/month)
1000s of devices support
Thousands of code deployments per day
70 Million members, 190 Countries, 125
Million hours of videos
Fault Tolerant Architecture
Built for Failure
Instant Auto-Scaling (infinite scale)
Cross-Geo Availability
Continuous Delivery
Continuous Integration
Loosely Coupled Services
…
Can’t handle Internet-scale load
Deployment cycles are long (complicated)
Operations is costly
Architecture is brittle and monolithic
Services are over-engineered/designed
Increasingly hard to find skills
Application Architecture: As-is
9
Agility, Speed Time to Market,
Fault Tolerant Apps
Developer Productivity, Using the
Right Tool for the Job, Retain and
Hire Talent
Cost Efficiency, Productivity,
Apps that Infinitely Scale
Innovation with Cognitive
Embrace Polyglot
Programming and Open
Adopt Microservices
Architecture & DevOps
Leverage a Cloud Platform
Designed for Cloud Native
The Cloud Native Approach
10
IBM Cloud contains out-of-the-box core, tested capabilities to Build a Cloud-Native Apps
faster. IBM Bluemix also has innovative components, such as Cognitive, Internet of Things,
Video, Cloud Data Services, and Blockchain so companies can differentiate Cloud-Native
Apps.
User-facing High ValueData/Storage
APIs
Integration
Compute
Authentication
Notifications
App Analytics
Watson
Weather Company
IoT Services
Video
Object Storage
Cloudant
Compose Enterprise
•Mongo
•Redis
•Elastic Search
•MySQL, PostgresSQL…
Big Insights / Hadoop
API Connect Cloud Foundry
Containers
Open Whisk
Most Cloud-Native
Applications use some or
multiple databases. IBM
offers a range data
services Transactional,
Analytical, Structured
and Unstructured data,
Object Storage (for
video et al) and
Managed Open Source
databases.
Ready-to-use Digital Capabilities
Domain
Services
Mobile Watson IoT
Block
Chain
Health Video
SecurityandCompliance
Methods&Services
Developer
Services
Data &
Analytics
Integration App Services
DevOps
Tooling
Containers Cloud Foundry Event-Driven
Infrastructure
Services
Compute Storage Network
Let talk about how Bluemix can support Cloud Native
IBM Bluemix, and it's set of domain services, developer services, infrastructure
services, partnered with IBM Bluemix Garage services and expertise are the key
offerings to help our clients succeed.
How patterns form
your Cloud Native
solution
12
Patterns
13 3/25/17
What are Patterns ?
In software engineering,
a software design pattern
is a general reusable
solution to a commonly
occurring problem within a
given context
in software design.
Design patterns are
formalized best practices
that the programmer can
use to solve common
problems when designing
an application or system.
https://en.wikipedia.org/wiki/Software_design_pattern
14
Some of the common patterns used in a Cloud Native solution
There are lots more , depending on your adoption of Cloud Native
• The following is a summary of the common app patterns for Bluemix this is not a complete list but a
starting point to level set on some basic architecture patterns that you build cloud native solutions
with.
• #1 Mobile to Service
• Entry level pattern where the Mobile device either Native or Hybrid mobile directly communicates with a High Value
Service.
• #2 Mobile or Web to Backend for Frontend
• Entry level pattern when a developer or project needs common logic or multi channel capabilities and abstracts with
REST
• #3 Server less Events
• The developer is now extending the features of their application and needs to use server less features for async
processing of integration of services.
• #4 API Connectivity with Micro Services
• The developer organization is moving to a Micro Service design and needs to manage the API releases and delivery of
the services.
• #5 Cognitive
• The organization is starting to integrate Cognitive features and APIs
• #6 Internet of Things
• The organization is starting to consume data in flight and analyze it with data in store
• #7 Async processing of Cloud Services
• The organization is and development teams are starting to apply enterprise patterns for cloud service management,
data offload and storage etc.
• #8 Four Tier Forester Architectures
• The organization is using mixed Public, Hybrid and Local and delivering complex Systems of Engagement and Systems
of Record
New Developers
Web Developers
Mutli Channel
New Patterns
early adopters
Extending new
business models
Traditional IBM
Customers
Enterprise Cloud
Behavior
Startups
Multi Team
A mobile app is a
software application developed
specifically for use on small,
wireless computing devices, such
as smartphones and tablets,
rather than desktop or laptop
computers.
• Apple and Google have the
largest market for Mobile
Operating Systems
• Often built using Native
programming toolset with iOS
and Android
What is a Mobile App ?
In computing, a web
application or web app is a
client–server
software application in which the
client (or user interface) runs in
a web browser
• Evolving to true multi channel
• Progressive Web Apps blur
user interaction between the
Desktop and Web
• Users start journeys from
multiple entry points
What is a Web App ?
Those were the patterns
you might recognize, we
use them everyday
Now we need to explain the patterns that make cloud native solutions become
amazing and give software engineers the most flexibility to deliver
A BFF is tightly coupled to a
specific user experience, and will
typically be maintained by the
same team as the user interface,
thereby making it easier to define
and adapt the API to the user
interface requirements.
• More flexibility for continuous delivery, no
centrally controlled API
• Enables digital channels to evolve quickly
and to business needs
• Contains transformational logic, integration
logic, app facing API, possibly RPC in
nature
What is a Backend for Frontend
Micro services is a specialization of an
implementation approach for service-
oriented architectures (SOA) used to build
flexible, independently deployable software
systems.
Services in a micro service architecture
(MSA) are processes that communicate
with each other over a network in order to
fulfill a goal
Individually managed and deployed and scale and
are loosely coupled in nature
Used for heavy lifting business logic
What is a Micro service
IBM is releasing coverage for a number of key Cloud Native patterns for Interconnect 2017
Simple Web App + Cloud services
(Java, Node, or Swift)
1
Simple Mobile + Cloud services
(iOS, Android, Xamarin, Cordova)
2
Web and Mobile Frontends + BFF + Backend services
Mobile clients: iOS, Android, Xamarin, Cordova
BFF: (Java, Node, or Swift) x (Whisk action, CF App, Containerized server)
3
Managed API Service (API Connect)
(Java, Node, Swift)
4
Microservice (container-based)
Java, Node, Swift via predefined docker images
Choice of orchestration framework
5
6
OpenWhisk-based Microservice
Actions implemented in Java, Node, Swift
Triggered by (whatever) service
Lets show these patterns in
an end to end example
Cloud native solutions evolve over time, often start out with just a few digital
channels and a few foundational micro services, as engineers become comfortable
with the software delivery model they extend and grow.
Example: Order Management Use Case
Generated SDK System SDK
Push
Notifications
IOS, tvOS, Mac (Swift)
Android (Java)
Cordova Hybrid
HTML5 (JavaScript)
Digital Channels
User Layer
Example Omni Channel application service different use end points and requirements , using Cloud Native Micro Services architecture
iOS
App
Web
App
Voice
App
Public
API
iOS
BFF
Edge Layer
Web
BFF
Chat
BFF
API
Connect
IBM Cloud
Product
Handling
(ms)
Business Logic
Layer
Foundational
Layer
Orders
(ms)
Stock
(ms)
Products
(ms)
Notification
Action
(event)
Order
Handling
(ms)
Cloud Native
Service
Cloudant
Elastic Search
Watson Conversation
Storage
REST API
Node.js, Swift, Java
Other polyglot
languages
Node.js, Swift, Java
Other polyglot
languages
AppIDAuthentication
AppIDAuthentication
Introducing the Bluemix
Developer Console
A fast way to start your journey towards cloud native application, enabling fast
creation of common patterns and integrating with local dev/test and deploy through
dev ops pipelines
24
Why are we doing this ?
Building cloud native apps with frameworks and services is hard !!
25
3/25/17
Starting from the
from the Catalog
With Bluemix
Developers Console
> 60 steps
> 2 days
Lots of Google
< 10 steps
< 5 mins
Guided experience
through UX and CLI
Runtime x Framework x Service + API = Lots of learn
Project
Generation
Bluemix Developer Console
Value for Bluemix developers
Bluemix
DevCLI
Bluemix Developer Console
1. Starts with…
Bluemix
Codes …
Check in to…
App
DevOps
Open Toolchains
Github
Kicks off…
Builds & Deploys…
Developer
Calls …
Generates …
Source Code
IDE
Orion, VSCode, Atom, Xcode…
Autoscale Logmet BAM
Integrates
with …
Provisions …
Local ContainerLocal container generation
and management
Local build and debug
Project scaffolding
SDK generation
Service provisioning
API Model generation
Swagger generation
Developer
push code into git
Micro	service	build	pipeline
Gather	feedback
Hourly
Hourly
Release
Hourly
Daily
Weekly
Deploy	to	Containers,	Clusters,	Cloud	Foundry	
or	Serverless
Select	Pattern,	Starter	and	Language,	
scaffold	your	starting	point	fast	
CI Build
Testing
Monitor
Automated	Testing	using	
various	frameworks	and	tools
Bluemix Developer Console
Developer Life cycle
Configure pipeline
NPS
Local
Dev/Text
Artefact	storage
Code	analysis
Cloud Native Patterns
Test	tools	and	frameworks
Example of how Micro services appear to 2 pizza teams
Dev Ops
Lets walk you through the
experience
IBM has integrated a set of tools and capabilities directly in the IBM Bluemix console
and delivered a comprehensive CLI tool to enable you to start your cloud native
story with IBM Cloud
29
3/25/17
Select Web and Mobile from Bluemix Menu
Select Web and
Mobile
Select Create
Project
Create a Project by selecting a pattern
Select a Starter, help to get you get a production ready starting point
16+ Starters
Select your pattern
Select your Starter
Complete Creating your Project
Select your
Language
Bluemix Development Experience + Services + Runtimes + Code Generators = ❤
SDKs
SDKs
APIs
Associate
Service Capabilities
with your project
34 3/25/17
Scaffold your working code , and run locally in minutes
Click to Generate
Code
Install local CLI
Run code in a local
container
Manage you associated capabilities directly in your project view
Create and Run with Dev CLI
bx dev createx
bx dev runx
Run code in a local
container
Running BFF
in minutes
Create Project
Quickly using
CLI
Client SDK ecosystem, automation and quality control
Demo
The following demo , will show a BFF being integrated with a Cloudant Database,
and exposing Order data in a OpenAPI (Swagger API) and then being integrated to a
Mobile iOS App, and displaying the data in a iOS View Controller , end to end in 20
mins using IBM Bluemix.
38
Summary
39
Bluemix Developer Console
Authentication
Analytics
APIManagement
Swagger
SDK
High Value Services
Dev Ops
Starters
(Templates)
Blueprints
SDKGenerator
Dev Ops
Digital Channel
Code DigitalHub
Backend
Code
Solution Patterns
Digital Channel
Developer
Whisk Operations
Enriched SDKs
Compute
CLI
Tools Integration
Digital Channel
Compute Code
Backend / Solution Pattern
Compute Code
Solution
Pattern
CF
Container
s
VMs
PushService
Pull High value Services into your Digital Channels
Increase speed to of delivery
Increase time to adoption of High Value Services
Backup :
Pattern Characteristics
What and how do these patterns work and what are the best cloud services for
them to integrate with ?
41
#1 Mobile to Service
Common App Pattern Design
Swagger
REST
App
SDKs
Dependency
Manager
Mobile
App
SDK Code Gen
Swagger
Generated SDK
System SDK
Service SDK
SDKs
Backend for
Front End
Bluemix System
SDks
Enriched Service SDKs
that cannot be code generated
SDK Generation
Public GIT
Swift Package Manager
Node Package Manager
Maven Central (Java)
IOS, tvOS, Mac
(Swift)
Android (Java)
Cordova Hybrid
HTML5
(JavaScript)
Enable Code Gen SDKs
Included API Connect and Mobile Foundation REST EndPoints
Development System & Service SDKs
System SDK Service SDK
Core Object Store
Authentication Weather
Analytics Push
Bluemix System level
Services that are applied to App
IPA/APK
REST End Points
APPIDAuthentication
Analytics
Bluemix Services
Authentication
Notifications
App Analytics
Mobile to Service
• This application pattern is often used to integrate backend services directly into mobile
solutions, they are not worried about common code or web app.
• This application pattern is only focused on delivering an app to the app store.
• The developer wants to add a small number of services into their mobile app, but are not
worried about code abstraction.
• They do want services to be optimized for the mobile developer experience
• They will want to use a dependency manager to pull in common code and service packages
• They will want to use some common MBaaS patterns.
• Authenticate with a trusted identity service OAuth, Google, Facebook, etc
• They want to trigger a Push notification
• They need to persist data seamlessly either connected or not connected
• They need to store binary information like images or documents
• They want to integrate some simple High value services, like Weather, Watson Dialog, Speech to
Text, Text to Speech with Dialog
• They want to collect analytics of the application usage
#2 Mobile and Web to Backend for Frontend
Common App Pattern Design
Swagger
REST
App
SDKs
Dependency
Manager
BFF
SDK Code Gen
Swagger
Generated SDK
System SDK
Service SDK
SDKs
Micro Services
Bluemix System
SDks
Enriched Service SDKs
that cannot be code generated
SDK Generation
Public GIT
Swift Package Manager
Node Package Manager
Maven Central (Java)
Node.js + Express
Swift + Kitura
Java + Liberty
Enable Code Gen SDKs
Development System & Service SDKs
Bluemix System level
Services that are applied to App
Runtime
REST End Points
Authentication
AnalyticsWeb Browser
Mobile
System SDK Service SDK
Core Object Store
Authentication Weather
Analytics Push
APPIDAuthentication
#3 Mobile or Web to Backend for Frontend
• This application pattern is a sign that a solution is maturing or a different set of requirements
are needing to be met. Pattern #1 easily breaks as you scale the number of Service integration
and when you need to do heavy integration logic which should not be done in the client OS
runtime.
• If a developer needs to deliver a Web experience or needs to abstract common business logic
into an application server or they need to support multi channel app patterns.
• The industry recognized way of doing this is with a REST endpoint that can be invoked from either a
Mobile App or from a Web Application using Ajax. This approach is agnostic of Server runtime
technology of Swift, Node or Java
• Using SDK Generation we can easily generate an SDKs from these REST endpoints.
• The requirement for service integration now means Bluemix services need to be integrated
easily and seamlessly into a Server runtime not just within the Mobile Client.
• As a developer I would expect to use the same SDK that I used in #1 Mobile pattern, it is
managing the integration to the high value service for me.
• As a developer I would expect to consume this SDK from the same Dependency manager for
either a Mobile Client implementation as a Server Implementation.
#3 Server less Event Handling
Common App Pattern Design
Swagger
REST
Service
SDKs
Dependency
Manager
Open
Whisk
SDK Code Gen
Swagger
Generated SDK
System SDK
Service SDK
SDKs
Micro Services
Bluemix System
SDks for MBaaS
Enriched Service SDKs
that cannot be code generated
SDK Generation
Public GIT
Swift Package Manager
Node Package Manager
Swift
JavaScript
Enable Code Gen SDKs
Development System & Service SDKs
Bluemix System level
Services that are applied to App
Runtime
REST End Points
APPIDAuthentication
Analytics
BFF
System SDK Service SDK
Core ObjectStore
Authentication Weather
Analytics Push
APPIDAuthentication
Server less Event
• A new emerging programming model is gaining interest in the market and its called Serverless
programming or Event programming
• This is a logical evolution for the cloud, you want to write a small snippet of code and
integrate with a Bluemix service and not worry about the scaling and load of this code, its
managed automatically by the Cloud Platform.
• IBM had started to deliver on this need with OpenWhisk
• Its still early days for IBM customers as they need to understand how it fits into existing programming
model
• Mobile App developers will want to use this as its enables simple and quick back ends to be created
• We believe that it is complimentary to Pattern #1 and #2 and will be used to manage a wide range of
Asynchronous processing.
• The management tools around scale of development are not in place at the moment to allow
large scale development teams to work with OpenWhisk, but this will mature quickly
• What is clear is from Open Whisk is another Server Pattern focused on Swift and JavaScript.
They need to access the same Bluemix Services as they would from a Mobile Pattern or Server
Pattern.
• Bluemix Mobile Services will extend the same System and Service SDKs from Mobile to be
compatible with Server integration.
#4 APIC and Micro Services
• As applications begin to scale in functionality or complexity and as more teams are formed to
delivery the solution. Micro Service patterns are now becoming a common approach to
delivering this within the Bluemix solution.
• The solution architecture may start to use different runtime technologies to solve the business
problem. Bluemix will offer three key language runtimes that are strategic.
• Swift as a modern day systems language to enable a very fast execution and span client and server
runtimes
• JavaScript in the form of a Node.js implementation, is often use for fast implementations User
Experiences and REST Services
• Java is still heavily used in the industry and has a deep and rich component and package support. It
is also has different characteristics to JavaScript as a Systems Language. So will not be going
anywhere soon, even thou its 20+ years old.
• Other Systems languages are starting to be considered as more experience of scaling micro service
architectures are understood, including Go and C#
• API Connect is IBM Bluemix offering to manage all these micro service teams into packages of
API than can be managed and released, so they can be consumed in either Pattern #1 or
Pattern #2 Bluemix App Patterns.
API Connect with Micro Services
Common App Pattern Design
Swagger
REST
Service
SDKs
Dependency
Manager
API
Connect
SDK Code Gen
Swagger
Generated SDK
System SDK
Service SDK
SDKs
Bluemix
Services
Bluemix System
SDks
Enriched Service SDKs
that cannot be code generated
SDK Generation
Public GIT
Swift Package Manager
Node Package Manager
Java Maven Central
NodeJS Express Loopback
Swift Kitura
Java Liberty
Enable Code Gen SDKs
Included API Connect and Mobile
Foundation REST EndPoints
Development System & Service SDKs
Bluemix System level
Services that are included in Micro Service
API Management
REST End Points
APPIDAuthentication
Analytics
BFF
System SDK Service SDK
Core ObjectStore
Authentication Weather
Analytics Push
Micro
Service
Micro
Service
Micro
Service
APPIDAuthentication
InterConnect
2017
50 3/25/17

Cloud Native Patterns with Bluemix Developer Console

  • 1.
    InterConnect 2017 Patterns in OmniChannel Cloud Application Development BM0 6321 Matthew Perrins Brett King
  • 2.
    Please note IBM’s statementsregarding 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.
  • 3.
    • What isCloud Native • Pattern Overview • Use Case Example • How to deliver it today • Summary Agenda
  • 4.
    What is CloudNative ?
  • 6.
    99.99% + uptime(< 4 mins downtime/month) 1000s of devices support Thousands of code deployments per day 70 Million members, 190 Countries, 125 Million hours of videos
  • 7.
    Fault Tolerant Architecture Builtfor Failure Instant Auto-Scaling (infinite scale) Cross-Geo Availability Continuous Delivery Continuous Integration Loosely Coupled Services …
  • 8.
    Can’t handle Internet-scaleload Deployment cycles are long (complicated) Operations is costly Architecture is brittle and monolithic Services are over-engineered/designed Increasingly hard to find skills Application Architecture: As-is
  • 9.
    9 Agility, Speed Timeto Market, Fault Tolerant Apps Developer Productivity, Using the Right Tool for the Job, Retain and Hire Talent Cost Efficiency, Productivity, Apps that Infinitely Scale Innovation with Cognitive Embrace Polyglot Programming and Open Adopt Microservices Architecture & DevOps Leverage a Cloud Platform Designed for Cloud Native The Cloud Native Approach
  • 10.
    10 IBM Cloud containsout-of-the-box core, tested capabilities to Build a Cloud-Native Apps faster. IBM Bluemix also has innovative components, such as Cognitive, Internet of Things, Video, Cloud Data Services, and Blockchain so companies can differentiate Cloud-Native Apps. User-facing High ValueData/Storage APIs Integration Compute Authentication Notifications App Analytics Watson Weather Company IoT Services Video Object Storage Cloudant Compose Enterprise •Mongo •Redis •Elastic Search •MySQL, PostgresSQL… Big Insights / Hadoop API Connect Cloud Foundry Containers Open Whisk Most Cloud-Native Applications use some or multiple databases. IBM offers a range data services Transactional, Analytical, Structured and Unstructured data, Object Storage (for video et al) and Managed Open Source databases. Ready-to-use Digital Capabilities
  • 11.
    Domain Services Mobile Watson IoT Block Chain HealthVideo SecurityandCompliance Methods&Services Developer Services Data & Analytics Integration App Services DevOps Tooling Containers Cloud Foundry Event-Driven Infrastructure Services Compute Storage Network Let talk about how Bluemix can support Cloud Native IBM Bluemix, and it's set of domain services, developer services, infrastructure services, partnered with IBM Bluemix Garage services and expertise are the key offerings to help our clients succeed.
  • 12.
    How patterns form yourCloud Native solution 12 Patterns
  • 13.
    13 3/25/17 What arePatterns ? In software engineering, a software design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system. https://en.wikipedia.org/wiki/Software_design_pattern
  • 14.
    14 Some of thecommon patterns used in a Cloud Native solution
  • 15.
    There are lotsmore , depending on your adoption of Cloud Native • The following is a summary of the common app patterns for Bluemix this is not a complete list but a starting point to level set on some basic architecture patterns that you build cloud native solutions with. • #1 Mobile to Service • Entry level pattern where the Mobile device either Native or Hybrid mobile directly communicates with a High Value Service. • #2 Mobile or Web to Backend for Frontend • Entry level pattern when a developer or project needs common logic or multi channel capabilities and abstracts with REST • #3 Server less Events • The developer is now extending the features of their application and needs to use server less features for async processing of integration of services. • #4 API Connectivity with Micro Services • The developer organization is moving to a Micro Service design and needs to manage the API releases and delivery of the services. • #5 Cognitive • The organization is starting to integrate Cognitive features and APIs • #6 Internet of Things • The organization is starting to consume data in flight and analyze it with data in store • #7 Async processing of Cloud Services • The organization is and development teams are starting to apply enterprise patterns for cloud service management, data offload and storage etc. • #8 Four Tier Forester Architectures • The organization is using mixed Public, Hybrid and Local and delivering complex Systems of Engagement and Systems of Record New Developers Web Developers Mutli Channel New Patterns early adopters Extending new business models Traditional IBM Customers Enterprise Cloud Behavior Startups Multi Team
  • 16.
    A mobile appis a software application developed specifically for use on small, wireless computing devices, such as smartphones and tablets, rather than desktop or laptop computers. • Apple and Google have the largest market for Mobile Operating Systems • Often built using Native programming toolset with iOS and Android What is a Mobile App ?
  • 17.
    In computing, aweb application or web app is a client–server software application in which the client (or user interface) runs in a web browser • Evolving to true multi channel • Progressive Web Apps blur user interaction between the Desktop and Web • Users start journeys from multiple entry points What is a Web App ?
  • 18.
    Those were thepatterns you might recognize, we use them everyday Now we need to explain the patterns that make cloud native solutions become amazing and give software engineers the most flexibility to deliver
  • 19.
    A BFF istightly coupled to a specific user experience, and will typically be maintained by the same team as the user interface, thereby making it easier to define and adapt the API to the user interface requirements. • More flexibility for continuous delivery, no centrally controlled API • Enables digital channels to evolve quickly and to business needs • Contains transformational logic, integration logic, app facing API, possibly RPC in nature What is a Backend for Frontend
  • 20.
    Micro services isa specialization of an implementation approach for service- oriented architectures (SOA) used to build flexible, independently deployable software systems. Services in a micro service architecture (MSA) are processes that communicate with each other over a network in order to fulfill a goal Individually managed and deployed and scale and are loosely coupled in nature Used for heavy lifting business logic What is a Micro service
  • 21.
    IBM is releasingcoverage for a number of key Cloud Native patterns for Interconnect 2017 Simple Web App + Cloud services (Java, Node, or Swift) 1 Simple Mobile + Cloud services (iOS, Android, Xamarin, Cordova) 2 Web and Mobile Frontends + BFF + Backend services Mobile clients: iOS, Android, Xamarin, Cordova BFF: (Java, Node, or Swift) x (Whisk action, CF App, Containerized server) 3 Managed API Service (API Connect) (Java, Node, Swift) 4 Microservice (container-based) Java, Node, Swift via predefined docker images Choice of orchestration framework 5 6 OpenWhisk-based Microservice Actions implemented in Java, Node, Swift Triggered by (whatever) service
  • 22.
    Lets show thesepatterns in an end to end example Cloud native solutions evolve over time, often start out with just a few digital channels and a few foundational micro services, as engineers become comfortable with the software delivery model they extend and grow.
  • 23.
    Example: Order ManagementUse Case Generated SDK System SDK Push Notifications IOS, tvOS, Mac (Swift) Android (Java) Cordova Hybrid HTML5 (JavaScript) Digital Channels User Layer Example Omni Channel application service different use end points and requirements , using Cloud Native Micro Services architecture iOS App Web App Voice App Public API iOS BFF Edge Layer Web BFF Chat BFF API Connect IBM Cloud Product Handling (ms) Business Logic Layer Foundational Layer Orders (ms) Stock (ms) Products (ms) Notification Action (event) Order Handling (ms) Cloud Native Service Cloudant Elastic Search Watson Conversation Storage REST API Node.js, Swift, Java Other polyglot languages Node.js, Swift, Java Other polyglot languages AppIDAuthentication AppIDAuthentication
  • 24.
    Introducing the Bluemix DeveloperConsole A fast way to start your journey towards cloud native application, enabling fast creation of common patterns and integrating with local dev/test and deploy through dev ops pipelines 24
  • 25.
    Why are wedoing this ? Building cloud native apps with frameworks and services is hard !! 25 3/25/17 Starting from the from the Catalog With Bluemix Developers Console > 60 steps > 2 days Lots of Google < 10 steps < 5 mins Guided experience through UX and CLI Runtime x Framework x Service + API = Lots of learn
  • 26.
    Project Generation Bluemix Developer Console Valuefor Bluemix developers Bluemix DevCLI Bluemix Developer Console 1. Starts with… Bluemix Codes … Check in to… App DevOps Open Toolchains Github Kicks off… Builds & Deploys… Developer Calls … Generates … Source Code IDE Orion, VSCode, Atom, Xcode… Autoscale Logmet BAM Integrates with … Provisions … Local ContainerLocal container generation and management Local build and debug Project scaffolding SDK generation Service provisioning API Model generation Swagger generation
  • 27.
    Developer push code intogit Micro service build pipeline Gather feedback Hourly Hourly Release Hourly Daily Weekly Deploy to Containers, Clusters, Cloud Foundry or Serverless Select Pattern, Starter and Language, scaffold your starting point fast CI Build Testing Monitor Automated Testing using various frameworks and tools Bluemix Developer Console Developer Life cycle Configure pipeline NPS Local Dev/Text Artefact storage Code analysis Cloud Native Patterns Test tools and frameworks
  • 28.
    Example of howMicro services appear to 2 pizza teams Dev Ops
  • 29.
    Lets walk youthrough the experience IBM has integrated a set of tools and capabilities directly in the IBM Bluemix console and delivered a comprehensive CLI tool to enable you to start your cloud native story with IBM Cloud 29 3/25/17
  • 30.
    Select Web andMobile from Bluemix Menu Select Web and Mobile Select Create Project
  • 31.
    Create a Projectby selecting a pattern Select a Starter, help to get you get a production ready starting point 16+ Starters Select your pattern Select your Starter
  • 32.
    Complete Creating yourProject Select your Language
  • 33.
    Bluemix Development Experience+ Services + Runtimes + Code Generators = ❤ SDKs SDKs APIs Associate Service Capabilities with your project
  • 34.
    34 3/25/17 Scaffold yourworking code , and run locally in minutes Click to Generate Code Install local CLI Run code in a local container
  • 35.
    Manage you associatedcapabilities directly in your project view
  • 36.
    Create and Runwith Dev CLI bx dev createx bx dev runx Run code in a local container Running BFF in minutes Create Project Quickly using CLI
  • 37.
    Client SDK ecosystem,automation and quality control
  • 38.
    Demo The following demo, will show a BFF being integrated with a Cloudant Database, and exposing Order data in a OpenAPI (Swagger API) and then being integrated to a Mobile iOS App, and displaying the data in a iOS View Controller , end to end in 20 mins using IBM Bluemix. 38
  • 39.
  • 40.
    Bluemix Developer Console Authentication Analytics APIManagement Swagger SDK HighValue Services Dev Ops Starters (Templates) Blueprints SDKGenerator Dev Ops Digital Channel Code DigitalHub Backend Code Solution Patterns Digital Channel Developer Whisk Operations Enriched SDKs Compute CLI Tools Integration Digital Channel Compute Code Backend / Solution Pattern Compute Code Solution Pattern CF Container s VMs PushService Pull High value Services into your Digital Channels Increase speed to of delivery Increase time to adoption of High Value Services
  • 41.
    Backup : Pattern Characteristics Whatand how do these patterns work and what are the best cloud services for them to integrate with ? 41
  • 42.
    #1 Mobile toService Common App Pattern Design Swagger REST App SDKs Dependency Manager Mobile App SDK Code Gen Swagger Generated SDK System SDK Service SDK SDKs Backend for Front End Bluemix System SDks Enriched Service SDKs that cannot be code generated SDK Generation Public GIT Swift Package Manager Node Package Manager Maven Central (Java) IOS, tvOS, Mac (Swift) Android (Java) Cordova Hybrid HTML5 (JavaScript) Enable Code Gen SDKs Included API Connect and Mobile Foundation REST EndPoints Development System & Service SDKs System SDK Service SDK Core Object Store Authentication Weather Analytics Push Bluemix System level Services that are applied to App IPA/APK REST End Points APPIDAuthentication Analytics Bluemix Services Authentication Notifications App Analytics
  • 43.
    Mobile to Service •This application pattern is often used to integrate backend services directly into mobile solutions, they are not worried about common code or web app. • This application pattern is only focused on delivering an app to the app store. • The developer wants to add a small number of services into their mobile app, but are not worried about code abstraction. • They do want services to be optimized for the mobile developer experience • They will want to use a dependency manager to pull in common code and service packages • They will want to use some common MBaaS patterns. • Authenticate with a trusted identity service OAuth, Google, Facebook, etc • They want to trigger a Push notification • They need to persist data seamlessly either connected or not connected • They need to store binary information like images or documents • They want to integrate some simple High value services, like Weather, Watson Dialog, Speech to Text, Text to Speech with Dialog • They want to collect analytics of the application usage
  • 44.
    #2 Mobile andWeb to Backend for Frontend Common App Pattern Design Swagger REST App SDKs Dependency Manager BFF SDK Code Gen Swagger Generated SDK System SDK Service SDK SDKs Micro Services Bluemix System SDks Enriched Service SDKs that cannot be code generated SDK Generation Public GIT Swift Package Manager Node Package Manager Maven Central (Java) Node.js + Express Swift + Kitura Java + Liberty Enable Code Gen SDKs Development System & Service SDKs Bluemix System level Services that are applied to App Runtime REST End Points Authentication AnalyticsWeb Browser Mobile System SDK Service SDK Core Object Store Authentication Weather Analytics Push APPIDAuthentication
  • 45.
    #3 Mobile orWeb to Backend for Frontend • This application pattern is a sign that a solution is maturing or a different set of requirements are needing to be met. Pattern #1 easily breaks as you scale the number of Service integration and when you need to do heavy integration logic which should not be done in the client OS runtime. • If a developer needs to deliver a Web experience or needs to abstract common business logic into an application server or they need to support multi channel app patterns. • The industry recognized way of doing this is with a REST endpoint that can be invoked from either a Mobile App or from a Web Application using Ajax. This approach is agnostic of Server runtime technology of Swift, Node or Java • Using SDK Generation we can easily generate an SDKs from these REST endpoints. • The requirement for service integration now means Bluemix services need to be integrated easily and seamlessly into a Server runtime not just within the Mobile Client. • As a developer I would expect to use the same SDK that I used in #1 Mobile pattern, it is managing the integration to the high value service for me. • As a developer I would expect to consume this SDK from the same Dependency manager for either a Mobile Client implementation as a Server Implementation.
  • 46.
    #3 Server lessEvent Handling Common App Pattern Design Swagger REST Service SDKs Dependency Manager Open Whisk SDK Code Gen Swagger Generated SDK System SDK Service SDK SDKs Micro Services Bluemix System SDks for MBaaS Enriched Service SDKs that cannot be code generated SDK Generation Public GIT Swift Package Manager Node Package Manager Swift JavaScript Enable Code Gen SDKs Development System & Service SDKs Bluemix System level Services that are applied to App Runtime REST End Points APPIDAuthentication Analytics BFF System SDK Service SDK Core ObjectStore Authentication Weather Analytics Push APPIDAuthentication
  • 47.
    Server less Event •A new emerging programming model is gaining interest in the market and its called Serverless programming or Event programming • This is a logical evolution for the cloud, you want to write a small snippet of code and integrate with a Bluemix service and not worry about the scaling and load of this code, its managed automatically by the Cloud Platform. • IBM had started to deliver on this need with OpenWhisk • Its still early days for IBM customers as they need to understand how it fits into existing programming model • Mobile App developers will want to use this as its enables simple and quick back ends to be created • We believe that it is complimentary to Pattern #1 and #2 and will be used to manage a wide range of Asynchronous processing. • The management tools around scale of development are not in place at the moment to allow large scale development teams to work with OpenWhisk, but this will mature quickly • What is clear is from Open Whisk is another Server Pattern focused on Swift and JavaScript. They need to access the same Bluemix Services as they would from a Mobile Pattern or Server Pattern. • Bluemix Mobile Services will extend the same System and Service SDKs from Mobile to be compatible with Server integration.
  • 48.
    #4 APIC andMicro Services • As applications begin to scale in functionality or complexity and as more teams are formed to delivery the solution. Micro Service patterns are now becoming a common approach to delivering this within the Bluemix solution. • The solution architecture may start to use different runtime technologies to solve the business problem. Bluemix will offer three key language runtimes that are strategic. • Swift as a modern day systems language to enable a very fast execution and span client and server runtimes • JavaScript in the form of a Node.js implementation, is often use for fast implementations User Experiences and REST Services • Java is still heavily used in the industry and has a deep and rich component and package support. It is also has different characteristics to JavaScript as a Systems Language. So will not be going anywhere soon, even thou its 20+ years old. • Other Systems languages are starting to be considered as more experience of scaling micro service architectures are understood, including Go and C# • API Connect is IBM Bluemix offering to manage all these micro service teams into packages of API than can be managed and released, so they can be consumed in either Pattern #1 or Pattern #2 Bluemix App Patterns.
  • 49.
    API Connect withMicro Services Common App Pattern Design Swagger REST Service SDKs Dependency Manager API Connect SDK Code Gen Swagger Generated SDK System SDK Service SDK SDKs Bluemix Services Bluemix System SDks Enriched Service SDKs that cannot be code generated SDK Generation Public GIT Swift Package Manager Node Package Manager Java Maven Central NodeJS Express Loopback Swift Kitura Java Liberty Enable Code Gen SDKs Included API Connect and Mobile Foundation REST EndPoints Development System & Service SDKs Bluemix System level Services that are included in Micro Service API Management REST End Points APPIDAuthentication Analytics BFF System SDK Service SDK Core ObjectStore Authentication Weather Analytics Push Micro Service Micro Service Micro Service APPIDAuthentication
  • 50.