SlideShare une entreprise Scribd logo
1  sur  88
Télécharger pour lire hors ligne
Power Lunch Series –
How to Architect & Develop Cloud Native
Applications, Part 1: Design Patterns
Sufyaan Kazi
Trusted partner for IT innovation and digital transformation
New mode for cloud-computing – open and enterprise ready
Gold standard for modern software development
3© 2016 Pivotal Software, Inc. All rights reserved.
Who are Pivotal? http://bit.ly/2cmRm9m
4© 2016 Pivotal Software, Inc. All rights reserved.
Who are Pivotal? http://bit.ly/2cmS86h
5© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Sufyaan Kazi
skazi@pivotal.io
@sufyaan_kazi
6© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Introduction
7© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Topics in the Power Lunch Series
Why Cloud Native?
18 August 2016
How to Architect & Develop Cloud Native Applications? (Part 1 & 2)
20 September & 4 October 2016
How to Modernise Legacy Applications
25 October 2016
How to enable Continuous Delivery of Software into Production
10 November
How to Operate Cloud Native Applications
6 & 20 December 2016
8© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
How quickly can you react to
customer changes or
the speed of your market?
Can you experiment with ideas,
learn from
mistakes and
identify patterns that work?
Cloud Native describes the patterns of high performing organizations delivering
software faster, consistently and reliably at scale
9© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Testing
10© 2016 Pivotal Software, Inc. All rights reserved.
“I have an absolutely brilliant idea ……”
Now let’s build it!
11© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Write your tests first - TDD
@Test
public void testNotClever() throws Exception {
assertEquals(true, “You’re silly person” == cleverCode.giveMeACleverResponse(null));
}
public boolean giveMeACleverResponse() {
………………….
}
12© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Style
13© 2016 Pivotal Software, Inc. All rights reserved.
Code Hospitality
14© 2016 Pivotal Software, Inc. All rights reserved.
Code Hospitality
public int getNextDate(int anInt, int otherInt) {
return temp.getRandomInRange(anInt, otherInt);
}
What is this class ???
What are these numbers ???
15© 2016 Pivotal Software, Inc. All rights reserved.
Code Hospitality
public int getNextBillingDate(int anInt, int OtherInt) {
return temp.getRandomInRange(anInt, OtherInt);
}
16© 2016 Pivotal Software, Inc. All rights reserved.
Code Hospitality
https://www.youtube.com/watch?v=U3XcUrupcYg
17© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Architecture
18© 2016 Pivotal Software, Inc. All rights reserved.
What happens to software over time?
“In a connected system, elements are highly available to each other (via global state, for example). A
modular design has connections deliberately kept to a minimum.
….
During the takeoff phase, the team is constantly trying to add value by increasing the chance of survival.
During the cruise phase, reducing costs adds the most value. A different mix of activities goes into achieving
these different goals.”
Kent Beck August 12th, 2009 in Responsible Development, Startups
19© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Big Application Ailments
Big budgets
Gold plated
with many
unused
features
Slow
payback of
return on
investment
Source of
conflict
between IT &
business
Drag on
business
model
innovation
Expensive to
change
Long release
cycles & big
delays
Difficult to
scale
20© 2015 Pivotal Software, Inc. All rights reserved.
Not Traditional (ESB-centric) SOA
Enterprise Service Bus
Service Service Service Service
Service Service Service Service
UI UI
21© 2015 Pivotal Software, Inc. All rights reserved.
Why Microservices?
• A Distributed System creates reusable services
• So, it’s just like SoA - ?
• NO -> It’s SoA done right. Single function, single data domain
• Interconnectivity using common transport but stateless communication
• A microservice can run on it’s own (low coupling) and provides it’s own
business value (high cohesion)
• Anti-fragility
• Distributed Systems with defined responsibilities are better by design:
• Individual services can be scaled separately
• Individual services can be managed in separate runtimes
• Interconnection is less rigid
• Code can be released faster but safely
22© 2015 Pivotal Software, Inc. All rights reserved.
DEFINE: Microservice
Loosely coupled service oriented
architecture with bounded
contexts
If every service has to be updated in concert,
it’s not loosely coupled!
If you have to know about surrounding
services you don’t have a bounded context.
23© 2015 Pivotal Software, Inc. All rights reserved.
DEFINE: Microservice
24© 2015 Pivotal Software, Inc. All rights reserved.
But Microservices!
25© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Pivotal
26© 2015 Pivotal Software, Inc. All rights reserved.
Anatomy of a cloud native framework
Application coordination boilerplate patterns
Application configuration boilerplate patterns
Enterprise application boilerplate patterns
Runtime Platform, Infrastructure Automation boilerplate patterns
(provision, deploy, secure, log, data services, etc.)
CloudDesktop
Spring Boot
Spring IO
Pivotal Cloud Foundry
Spring Cloud
+ BOSH
27© 2016 Pivotal Software, Inc. All rights reserved.
Cloud Native Power Lunch Series
Use 12 factor app principles to create cloud
ready applications
➢ A set of best practices for
developing and deploying
cloud-native software.
➢ Practices translate into
platform features and
workflow requirements.
Codebase Dependencies Config
Backing
Services
Build,
Release,
Run
Processes
Port
Binding
Concurrency
Disposability
Dev/Prod
Parity
Logs
Admin
Processes
Source: “The Twelve-Factor App.”
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
29© 2016 Pivotal Software, Inc. All rights reserved.
30© 2016 Pivotal Software, Inc. All rights reserved.
Demo
31© 2016 Pivotal Software, Inc. All rights reserved.
Two Apps, each with their own
codebase:
https://github.com/skazi-pivotal/spring-boot-cities-service
https://github.com/skazi-pivotal/spring-boot-cities-ui
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
33© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Dependencies
– Packaged as jars (Java), RubyGems, CPAN (Perl)
– Declared in a manifest
• Maven POM, Gemfile / bundle exec, etc.
– Don't rely on implicit dependencies from the deployment environment
I. Codebase
One codebase tracked in SCM, many
deploys
II. Dependencies
Explicitly declare and isolate
dependencies
III. Configuration
Store config in the environment
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
35© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Configuration
– Anything that varies by deployment should not be hard-coded
– Environment variables or configuration server recommended
I. Codebase
One codebase tracked in SCM, many
deploys
II. Dependencies
Explicitly declare and isolate
dependencies
III. Configuration
Store config in the environment
36© 2015 Pivotal Software, Inc. All rights reserved.
37© 2015 Pivotal Software, Inc. All rights reserved.
Why Spring Boot?
• “MICRO” doesn’t mean small
• It means to decompose
• Separate distinct components (sort, tail …..)
• Easy to build, test and DEPLOY
• Microservices should perform one thing and perform it well
• Typically concise codebase
• Ship everything they need
• Can deployed standalone or in the cloud, singly reducing operations overhead
• Spring Boot:
• Is Opinionated
• Gets you up and running quickly
38© 2015 Pivotal Software, Inc. All rights reserved.
Enhanced Application with Spring Bootpackage hello;
import java.util.Arrays;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(SBootCitiesServiceApplication.class, args);
}
}
MAGIC!!
• Tags the class as a
source for Spring
Beans
• Asks Boot to
automatically add
beans based on
classpath
• Tell Spring to look for
other components,
configs etc. in the
same package
39© 2015 Pivotal Software, Inc. All rights reserved.
DB Connection: From Local to Bean
@Configuration
@ConfigurationProperties(prefix="spring.datasource")
public class DataSourceConfig {
private String driverClassName;
private String url;
private String username;
private String password;
public DataSourceConfig() {
super();
}
@Bean
public DataSource dataSource() {
SimpleDriverDataSource dataSource = null;
try {
Class.forName(this.driverClassName);
dataSource = new SimpleDriverDataSource();
dataSource.setDriver(DriverManager.getDriver(this.url));
dataSource.setUrl(this.url);
dataSource.setUsername(this.username);
dataSource.setPassword(this.password);
Logger.INSTANCE.log("Connected to: " + this.url);
} catch (Exception e) {
throw new IllegalStateException("An Exception occurred initialising datasource", e);
}
return dataSource;
}
Load Connection
Properties from local file
40© 2015 Pivotal Software, Inc. All rights reserved.
DB Connection: From Local to Bean
Load Connection
Properties from local file
spring:
profiles: local
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1/ccmdemo
username: suf
password: password
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
42© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Backing Services
– Service consumed by app as part of normal operations
• DB, Message Queues, SMTP servers
• May be locally managed or third-party managed
– Services should be treated as resources
• Connected to via URL / configuration
• Swappable (change in-memory DB for MySQL)
VI. Processes
Execute app as stateless processes
V. Build, Release, Run
Strictly separate build and run stages
IV. Backing Services
Treat backing services as attached
resources
Cities - Service
{
"_embedded" : {
"cities" : [ {
"name" : "Aaron's Hill",
"county" : "Surrey",
"stateCode" : "SU9543",
"postalCode" : "GU7 2",
"latitude" : "51.18277",
"longitude" : "-0.63502",
"_links" : {
"self" : {
"href" :
"http://cities-service-recognisable-wrongheadedness.cfapps.io/cities/2"
},
"city" : {
"href" :
"http://cities-service-recognisable-wrongheadedness.cfapps.io/cities/2"
}
}
}, {
"name" : "Abbey Mead",
……………………….
/cities
Local Profile
City Microservice - @SpringBootApplication
In-Memory DB
Spring Boot Magic!
Cloud Profile
Spring Boot & Cloud Magic!
45© Copyright 2013 Pivotal. All rights reserved.
Router
CELL Rep
Executor
CELL Rep
Executor
CELL Rep
Executor
ACCESS
APP
Managed Service
cf create-service
p-mysql 512mb MyDB
Create Connection:
"VCAP_SERVICES": {
"MyDB": [
{
"credentials": {
"hostname": "mysql.local.pcfdev.io"
"jdbcUrl":
"jdbc:mysql://mysql.local.pcfdev.io:3306
]
}
Access a Connection:
cf bind MyApp MyDB
Expose Connection to App:
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
47© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Build, Release, Run
– Build stage – converts codebase into build (version)
• Including managed dependencies
– Release stage – build + config = release
– Run – Runs app in execution environment
• In Cloud Foundry, these stages are clearly separated with cf push
VI. Processes
Execute app as stateless processes
V. Build, Release, Run
Strictly separate build, release and run
stages
IV. Backing Services
Treat backing services as attached
resources
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
49© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Processes
– The app executes as one or more discrete running processes
– Stateless
• Processes should not store internal state
– Share nothing
• Data needing to be shared should be persisted
– Any necessary state is externalized as a backing service
VI. Processes
Execute app as stateless processes
V. Build, Release, Run
Strictly separate build and run stages
IV. Backing Services
Treat backing services as attached
resources
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
51© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Port Binding
– The app is self-contained
• For example, Tomcat is included in the droplet
– Apps are exposed via port binding (including HTTP)
• Every app instance is accessed via a URI and port number
– One app can become another app's service
IX. Disposability
Maximize robustness with fast startup
and graceful shutdown
VIII. Concurrency
Scale out via the process model
VII. Port binding
Export services via port binding
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
53© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Concurrency
– Achieve concurrency by scaling out horizontally
• Scale by adding more app instances
– Individual processes are free to multithread
IX. Disposability
Maximize robustness with fast startup
and graceful shutdown
VIII. Concurrency
Scale out via the process model
VII. Port binding
Export services via port binding
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
55© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Disposability
– Processes should be disposable
• Remember, they're stateless!
– Should be quick to start
• Enhances scalability and fault tolerance
– Should exit gracefully / finish current requests
IX. Disposability
Maximize robustness with fast startup
and graceful shutdown
VIII. Concurrency
Scale out via the process model
VII. Port binding
Export services via port binding
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
57© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Development, staging, production should be similar
– This enables high quality, continuous delivery
XII. Admin processes
Run admin / mgmt tasks as one-off
processes
X. Dev/prod parity
Keep dev, staging, prod as similar as
possible
XI. Logs
Treat logs as event streams
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
59© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Logs are streams of aggregated, time-ordered events
– Apps are not concerned with log management
• Just write to stdout
– Separate log managers handle management
• Logging as a service
• Can be managed via tools like Papertrail, Splunk ...
– Log indexing and analysis
XII. Admin processes
Run admin / mgmt tasks as one-off
processes
X. Dev/prod parity
Keep dev, staging, prod as similar as
possible
XI. Logs
Treat logs as event streams
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Latency Analysis Of Microservices
Microservice architectures are often a graph of components distributed across a network
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Dapper Paper By Google is where it started
This paper described Dapper, which is Google’s production distributed systems
tracing infrastructure
Design Goals :
• Low overhead
• Application-level transparency
• Scalability
Based on :
Concept of Traces and Spans
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Distributed Tracing (Theory)
Distributed Tracing is a process of collecting end-to-end latency graphs in near
real time.
As a request flows from one microservice to other in a system through ingress
and egress, we need a way to trace it and provide info such as how much time
it took for a request to complete? Which microservice was responsible for the
delay?
Distributed Tracing Systems are often used for this purpose. An example of
such a system is Zipkin.
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Tracers (Theory)
• As a request is flowing from one microservice to another, tracers add logic to create
unique trace ID.
• Trace ID is generated when the first request is made.
• As a request arrives at one microservice in it’s journey, a new Span ID is assigned
for that service and added to the trace.
• Tracers execute in your production apps! They are written to not log too much
• Tracers have instrumentation or sampling policy to manage volumes of traces and
spans
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Traces and Spans (Theory)
• A trace represents the entire journey of a request, from one microservice to another
• A span represents a single operation call to a microservice
• If a microservice calls another microservice, then the calling span is known as parent
span
• A span contains timestamped records which encode the span’s start and end time,
any RPC timing data, and zero or more application-specific annotations
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Example Trace – Graph of spans
Frontend Request (Trace id: 1, Span id : 1)
Trace id : 1
Parent id : 1
Span id : 2
Trace id : 1
Parent id : 3
Span id : 4
Trace id : 1
Parent id : 3
Span id : 5
Trace id : 1
Parent id : 1
Span id : 3
Time
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Example Span – An individual operation
Operation
Events
Tags
Server Received Server Sent
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Tracing Systems
Tracing systems collect, process and present data reported by tracers.
• aggregate spans into trace trees
• provide query and visualization for latency analysis
• have retention policy (usually days)
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Zipkin is a distributed tracing system(Theory)
• Zipkin is a tracing system and was created by Twitter in 2012
• It is open sourced and it’s implementation is based on Dapper Paper by Google
• Adrian Cole (Spring Cloud) is the main contributor
• In 2015, OpenZipkin became the primary fork
Goals :
Aggregate spans into trace trees
Provide query and visualization for latency analysis
Have retention policy
https://github.com/openzipkin https://gitter.im/openzipkin/zipkin
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Zipkin Architecture
• Tracers collect timing data and transport it over HTTP or Kafka
• Collectors store spans in MySQL or Cassandra
• Users query for traces via Zipkin’s Web UI or Api
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Zipkin UI Example from Spring Trader app
© Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved.
Spring Cloud Sleuth is a Zipkin-Compatible tracer
• Spring Cloud Sleuth sets up useful log formatting for you that prints the trace ID and the
span ID
• It includes instrumentation for Spring Boot, and a streaming collector
• Reports to zipkin via HTTP by depending on spring-cloudsleuth-zipkin
• Transparent to application developer
1. Include starter BOM on app build system
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
2. Specify “sampler”
@Bean
public AlwaysSampler defaultSampler() {
return new AlwaysSampler();
}
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
73© Copyright 2016 Pivotal. All rights reserved.
12-Factor Application
• Admin processes / management tasks run as one-off processes
– Run admin processes on the platform
• Leverages platform knowledge and benefits
– DB migrations, one time scripts, etc.
– Use the same environment, tools, language as application processes
XII. Admin processes
Run admin / mgmt tasks as one-off
processes
X. Dev/prod parity
Keep dev, staging, prod as similar as
possible
XI. Logs
Treat logs as event streams
74© 2015 Pivotal Software, Inc. All rights reserved.
• Eureka
• Hystrix + Turbine
• Ribbon
• Feign
• Zuul
http://netflix.github.io
75© 2015 Pivotal Software, Inc. All rights reserved.
Example Distributed System: Minified
76© 2015 Pivotal Software, Inc. All rights reserved.
Example: Spring Cloud Services + Netflix OSS
77© 2016 Pivotal Software, Inc. All rights reserved.
https://github.com/pivotal-bank/cf-SpringBootTrader
78© 2015 Pivotal Software, Inc. All rights reserved.
Config Server
79© 2015 Pivotal Software, Inc. All rights reserved.
Fault Tolerance – Circuit Breakers
@SpringBootApplication
@EnableCircuitBreaker
@EnableDiscoveryClient
public class CustomerApp extends RepositoryRestMvcConfiguration {
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration
config) {
config.exposeIdsFor(Customer.class);
}
public static void main(String[] args) {
SpringApplication.run(CustomerApp.class, args);
}
}
80© 2015 Pivotal Software, Inc. All rights reserved.
Fault Tolerance – Circuit Breakers
81© 2015 Pivotal Software, Inc. All rights reserved.
@HystrixCommand(fallbackMethod = "defaultLink")
public Link getStoresByLocationLink(Map<String, Object> parameters) {
URI storesUri = URI.create(uri);
try {
ServiceInstance instance = loadBalancer.choose("stores");
storesUri = URI.create(String.format("http://%s:%s",
instance.getHost(), instance.getPort()));
}
catch (RuntimeException e) {
// Eureka not available
}
Traverson traverson = new Traverson(storesUri, MediaTypes.HAL_JSON);
Link link = traverson.follow("stores", "search", "by-location")
.withTemplateParameters(parameters).asLink();
return link;
}
Enabling a Circuit Breaker
Client-Side Load Balancing
82© 2015 Pivotal Software, Inc. All rights reserved.
83© 2015 Pivotal Software, Inc. All rights reserved.
Service Registration/Discovery
@SpringBootApplication
@EnableCircuitBreaker
@EnableDiscoveryClient
public class CustomerApp extends RepositoryRestMvcConfiguration {
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration
config) {
config.exposeIdsFor(Customer.class);
}
public static void main(String[] args) {
SpringApplication.run(CustomerApp.class, args);
}
}
84© 2015 Pivotal Software, Inc. All rights reserved.
Service Registration/Discovery
© Copyright 2014 Pivotal. All rights reserved.
The Twelve Factor App
http://12factor.net
86© 2016 Pivotal Software, Inc. All rights reserved.
CI/CDwith Concourse (http://concourse.ci/)
87© 2016 Pivotal Software, Inc. All rights reserved.
Q&A
How to Architect and Develop Cloud Native Applications

Contenu connexe

Tendances

Building Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringBuilding Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringKenny Bastani
 
Building a University Community PaaS Using Cloud Foundry (Cloud Foundry Summ...
Building a University Community PaaS Using Cloud Foundry (Cloud Foundry Summ...Building a University Community PaaS Using Cloud Foundry (Cloud Foundry Summ...
Building a University Community PaaS Using Cloud Foundry (Cloud Foundry Summ...VMware Tanzu
 
Unlock your VMWare Investment with Pivotal Cloud Foundry (VMworld 2014)
Unlock your VMWare Investment with Pivotal Cloud Foundry (VMworld 2014)Unlock your VMWare Investment with Pivotal Cloud Foundry (VMworld 2014)
Unlock your VMWare Investment with Pivotal Cloud Foundry (VMworld 2014)VMware Tanzu
 
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewPivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewVMware Tanzu
 
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...VMware Tanzu
 
LIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryLIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryVMware Tanzu
 
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewPivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewVMware Tanzu
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overviewcornelia davis
 
LIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryLIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryVMware Tanzu
 
Pivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow KeynotePivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow Keynotecornelia davis
 
James Watters - PCF Roadshow@Seoul
James Watters - PCF Roadshow@SeoulJames Watters - PCF Roadshow@Seoul
James Watters - PCF Roadshow@Seoulseungdon Choi
 
Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...
Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...
Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...cornelia davis
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native JourneyMatt Stine
 
Declarative Infrastructure with Cloud Foundry BOSH
Declarative Infrastructure with Cloud Foundry BOSHDeclarative Infrastructure with Cloud Foundry BOSH
Declarative Infrastructure with Cloud Foundry BOSHcornelia davis
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native JourneyVMware Tanzu
 
Pivotal Cloud Foundry 2.5: A First Look
Pivotal Cloud Foundry 2.5: A First LookPivotal Cloud Foundry 2.5: A First Look
Pivotal Cloud Foundry 2.5: A First LookVMware Tanzu
 
Spring Boot Whirlwind Tour
Spring Boot Whirlwind TourSpring Boot Whirlwind Tour
Spring Boot Whirlwind TourVMware Tanzu
 
Pivotal Cloud Foundry 1.10: First Look - Windows at Scale, Network Isolation
Pivotal Cloud Foundry 1.10: First Look - Windows at Scale, Network IsolationPivotal Cloud Foundry 1.10: First Look - Windows at Scale, Network Isolation
Pivotal Cloud Foundry 1.10: First Look - Windows at Scale, Network IsolationVMware Tanzu
 
PaaS on Openstack
PaaS on OpenstackPaaS on Openstack
PaaS on OpenstackOpen Stack
 
Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)
Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)
Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)VMware Tanzu
 

Tendances (20)

Building Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringBuilding Cloud Native Architectures with Spring
Building Cloud Native Architectures with Spring
 
Building a University Community PaaS Using Cloud Foundry (Cloud Foundry Summ...
Building a University Community PaaS Using Cloud Foundry (Cloud Foundry Summ...Building a University Community PaaS Using Cloud Foundry (Cloud Foundry Summ...
Building a University Community PaaS Using Cloud Foundry (Cloud Foundry Summ...
 
Unlock your VMWare Investment with Pivotal Cloud Foundry (VMworld 2014)
Unlock your VMWare Investment with Pivotal Cloud Foundry (VMworld 2014)Unlock your VMWare Investment with Pivotal Cloud Foundry (VMworld 2014)
Unlock your VMWare Investment with Pivotal Cloud Foundry (VMworld 2014)
 
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewPivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
 
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
Pivotal Web Services - a Real World Example of Running Cloud Foundry at Scale...
 
LIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryLIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud Foundry
 
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical OverviewPivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overview
 
LIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud FoundryLIVE DEMO: Pivotal Cloud Foundry
LIVE DEMO: Pivotal Cloud Foundry
 
Pivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow KeynotePivotal Cloud Platform Roadshow Keynote
Pivotal Cloud Platform Roadshow Keynote
 
James Watters - PCF Roadshow@Seoul
James Watters - PCF Roadshow@SeoulJames Watters - PCF Roadshow@Seoul
James Watters - PCF Roadshow@Seoul
 
Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...
Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...
Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
Declarative Infrastructure with Cloud Foundry BOSH
Declarative Infrastructure with Cloud Foundry BOSHDeclarative Infrastructure with Cloud Foundry BOSH
Declarative Infrastructure with Cloud Foundry BOSH
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
Pivotal Cloud Foundry 2.5: A First Look
Pivotal Cloud Foundry 2.5: A First LookPivotal Cloud Foundry 2.5: A First Look
Pivotal Cloud Foundry 2.5: A First Look
 
Spring Boot Whirlwind Tour
Spring Boot Whirlwind TourSpring Boot Whirlwind Tour
Spring Boot Whirlwind Tour
 
Pivotal Cloud Foundry 1.10: First Look - Windows at Scale, Network Isolation
Pivotal Cloud Foundry 1.10: First Look - Windows at Scale, Network IsolationPivotal Cloud Foundry 1.10: First Look - Windows at Scale, Network Isolation
Pivotal Cloud Foundry 1.10: First Look - Windows at Scale, Network Isolation
 
PaaS on Openstack
PaaS on OpenstackPaaS on Openstack
PaaS on Openstack
 
Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)
Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)
Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)
 

Similaire à How to Architect and Develop Cloud Native Applications

[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - PivotalOpenStack Korea Community
 
Cloud native pitch-younjin-20150925-v2
Cloud native pitch-younjin-20150925-v2Cloud native pitch-younjin-20150925-v2
Cloud native pitch-younjin-20150925-v2Younjin Jeong
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316Jupil Hwang
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 
[OpenStack Day in Korea 2015] Track 2-2 - OpenStack for PaaS: Why it's Hot
[OpenStack Day in Korea 2015] Track 2-2 - OpenStack for PaaS: Why it's Hot[OpenStack Day in Korea 2015] Track 2-2 - OpenStack for PaaS: Why it's Hot
[OpenStack Day in Korea 2015] Track 2-2 - OpenStack for PaaS: Why it's HotOpenStack Korea Community
 
What's new in Pivotal Cloud Foundry 1.6
What's new in Pivotal Cloud Foundry 1.6What's new in Pivotal Cloud Foundry 1.6
What's new in Pivotal Cloud Foundry 1.6dektlong
 
DevOps on Oracle Cloud
DevOps on Oracle CloudDevOps on Oracle Cloud
DevOps on Oracle CloudMee Nam Lee
 
Oracle Ravello Presentation 7Dec16 v1
Oracle Ravello Presentation 7Dec16 v1Oracle Ravello Presentation 7Dec16 v1
Oracle Ravello Presentation 7Dec16 v1Kurt Liu
 
Accelerate Spring Apps to Cloud at Scale
Accelerate Spring Apps to Cloud at ScaleAccelerate Spring Apps to Cloud at Scale
Accelerate Spring Apps to Cloud at ScaleAsir Selvasingh
 
Accelerate Spring Apps to Cloud at Scale—Discussion with Azure Spring Cloud C...
Accelerate Spring Apps to Cloud at Scale—Discussion with Azure Spring Cloud C...Accelerate Spring Apps to Cloud at Scale—Discussion with Azure Spring Cloud C...
Accelerate Spring Apps to Cloud at Scale—Discussion with Azure Spring Cloud C...VMware Tanzu
 
Concevoir et déployer vos applications a base de microservices sur Cloud Foundry
Concevoir et déployer vos applications a base de microservices sur Cloud FoundryConcevoir et déployer vos applications a base de microservices sur Cloud Foundry
Concevoir et déployer vos applications a base de microservices sur Cloud FoundryVMware Tanzu
 
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoToshiaki Maki
 
Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Mee Nam Lee
 
Documentum Spring Data
Documentum Spring DataDocumentum Spring Data
Documentum Spring DataMichael Mohen
 
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonPCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonVMware Tanzu
 
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016Amazon Web Services
 
The New Possible: How Platform-as-a-Service Changes the Game
 The New Possible: How Platform-as-a-Service Changes the Game The New Possible: How Platform-as-a-Service Changes the Game
The New Possible: How Platform-as-a-Service Changes the GameInside Analysis
 
Using Infrastructure as an Accelerator of DevOps Maturity
Using Infrastructure as an Accelerator of DevOps MaturityUsing Infrastructure as an Accelerator of DevOps Maturity
Using Infrastructure as an Accelerator of DevOps MaturityJosh Atwell
 
Perth DevOps Meetup - Introducing the IBM Innovation Lab - 12112015
Perth DevOps Meetup - Introducing the IBM Innovation Lab - 12112015Perth DevOps Meetup - Introducing the IBM Innovation Lab - 12112015
Perth DevOps Meetup - Introducing the IBM Innovation Lab - 12112015Christophe Lucas
 

Similaire à How to Architect and Develop Cloud Native Applications (20)

[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
 
Cloud native pitch-younjin-20150925-v2
Cloud native pitch-younjin-20150925-v2Cloud native pitch-younjin-20150925-v2
Cloud native pitch-younjin-20150925-v2
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
[OpenStack Day in Korea 2015] Track 2-2 - OpenStack for PaaS: Why it's Hot
[OpenStack Day in Korea 2015] Track 2-2 - OpenStack for PaaS: Why it's Hot[OpenStack Day in Korea 2015] Track 2-2 - OpenStack for PaaS: Why it's Hot
[OpenStack Day in Korea 2015] Track 2-2 - OpenStack for PaaS: Why it's Hot
 
What's new in Pivotal Cloud Foundry 1.6
What's new in Pivotal Cloud Foundry 1.6What's new in Pivotal Cloud Foundry 1.6
What's new in Pivotal Cloud Foundry 1.6
 
DevOps on Oracle Cloud
DevOps on Oracle CloudDevOps on Oracle Cloud
DevOps on Oracle Cloud
 
Oracle Ravello Presentation 7Dec16 v1
Oracle Ravello Presentation 7Dec16 v1Oracle Ravello Presentation 7Dec16 v1
Oracle Ravello Presentation 7Dec16 v1
 
Accelerate Spring Apps to Cloud at Scale
Accelerate Spring Apps to Cloud at ScaleAccelerate Spring Apps to Cloud at Scale
Accelerate Spring Apps to Cloud at Scale
 
Accelerate Spring Apps to Cloud at Scale—Discussion with Azure Spring Cloud C...
Accelerate Spring Apps to Cloud at Scale—Discussion with Azure Spring Cloud C...Accelerate Spring Apps to Cloud at Scale—Discussion with Azure Spring Cloud C...
Accelerate Spring Apps to Cloud at Scale—Discussion with Azure Spring Cloud C...
 
Concevoir et déployer vos applications a base de microservices sur Cloud Foundry
Concevoir et déployer vos applications a base de microservices sur Cloud FoundryConcevoir et déployer vos applications a base de microservices sur Cloud Foundry
Concevoir et déployer vos applications a base de microservices sur Cloud Foundry
 
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyo
 
Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)
 
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
Javantura v4 - Support SpringBoot application development lifecycle using Ora...Javantura v4 - Support SpringBoot application development lifecycle using Ora...
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
 
Documentum Spring Data
Documentum Spring DataDocumentum Spring Data
Documentum Spring Data
 
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonPCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
 
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
 
The New Possible: How Platform-as-a-Service Changes the Game
 The New Possible: How Platform-as-a-Service Changes the Game The New Possible: How Platform-as-a-Service Changes the Game
The New Possible: How Platform-as-a-Service Changes the Game
 
Using Infrastructure as an Accelerator of DevOps Maturity
Using Infrastructure as an Accelerator of DevOps MaturityUsing Infrastructure as an Accelerator of DevOps Maturity
Using Infrastructure as an Accelerator of DevOps Maturity
 
Perth DevOps Meetup - Introducing the IBM Innovation Lab - 12112015
Perth DevOps Meetup - Introducing the IBM Innovation Lab - 12112015Perth DevOps Meetup - Introducing the IBM Innovation Lab - 12112015
Perth DevOps Meetup - Introducing the IBM Innovation Lab - 12112015
 

Dernier

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 

Dernier (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 

How to Architect and Develop Cloud Native Applications

  • 1.
  • 2. Power Lunch Series – How to Architect & Develop Cloud Native Applications, Part 1: Design Patterns Sufyaan Kazi Trusted partner for IT innovation and digital transformation New mode for cloud-computing – open and enterprise ready Gold standard for modern software development
  • 3. 3© 2016 Pivotal Software, Inc. All rights reserved. Who are Pivotal? http://bit.ly/2cmRm9m
  • 4. 4© 2016 Pivotal Software, Inc. All rights reserved. Who are Pivotal? http://bit.ly/2cmS86h
  • 5. 5© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Sufyaan Kazi skazi@pivotal.io @sufyaan_kazi
  • 6. 6© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Introduction
  • 7. 7© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Topics in the Power Lunch Series Why Cloud Native? 18 August 2016 How to Architect & Develop Cloud Native Applications? (Part 1 & 2) 20 September & 4 October 2016 How to Modernise Legacy Applications 25 October 2016 How to enable Continuous Delivery of Software into Production 10 November How to Operate Cloud Native Applications 6 & 20 December 2016
  • 8. 8© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series How quickly can you react to customer changes or the speed of your market? Can you experiment with ideas, learn from mistakes and identify patterns that work? Cloud Native describes the patterns of high performing organizations delivering software faster, consistently and reliably at scale
  • 9. 9© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Testing
  • 10. 10© 2016 Pivotal Software, Inc. All rights reserved. “I have an absolutely brilliant idea ……” Now let’s build it!
  • 11. 11© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Write your tests first - TDD @Test public void testNotClever() throws Exception { assertEquals(true, “You’re silly person” == cleverCode.giveMeACleverResponse(null)); } public boolean giveMeACleverResponse() { …………………. }
  • 12. 12© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Style
  • 13. 13© 2016 Pivotal Software, Inc. All rights reserved. Code Hospitality
  • 14. 14© 2016 Pivotal Software, Inc. All rights reserved. Code Hospitality public int getNextDate(int anInt, int otherInt) { return temp.getRandomInRange(anInt, otherInt); } What is this class ??? What are these numbers ???
  • 15. 15© 2016 Pivotal Software, Inc. All rights reserved. Code Hospitality public int getNextBillingDate(int anInt, int OtherInt) { return temp.getRandomInRange(anInt, OtherInt); }
  • 16. 16© 2016 Pivotal Software, Inc. All rights reserved. Code Hospitality https://www.youtube.com/watch?v=U3XcUrupcYg
  • 17. 17© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Architecture
  • 18. 18© 2016 Pivotal Software, Inc. All rights reserved. What happens to software over time? “In a connected system, elements are highly available to each other (via global state, for example). A modular design has connections deliberately kept to a minimum. …. During the takeoff phase, the team is constantly trying to add value by increasing the chance of survival. During the cruise phase, reducing costs adds the most value. A different mix of activities goes into achieving these different goals.” Kent Beck August 12th, 2009 in Responsible Development, Startups
  • 19. 19© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Big Application Ailments Big budgets Gold plated with many unused features Slow payback of return on investment Source of conflict between IT & business Drag on business model innovation Expensive to change Long release cycles & big delays Difficult to scale
  • 20. 20© 2015 Pivotal Software, Inc. All rights reserved. Not Traditional (ESB-centric) SOA Enterprise Service Bus Service Service Service Service Service Service Service Service UI UI
  • 21. 21© 2015 Pivotal Software, Inc. All rights reserved. Why Microservices? • A Distributed System creates reusable services • So, it’s just like SoA - ? • NO -> It’s SoA done right. Single function, single data domain • Interconnectivity using common transport but stateless communication • A microservice can run on it’s own (low coupling) and provides it’s own business value (high cohesion) • Anti-fragility • Distributed Systems with defined responsibilities are better by design: • Individual services can be scaled separately • Individual services can be managed in separate runtimes • Interconnection is less rigid • Code can be released faster but safely
  • 22. 22© 2015 Pivotal Software, Inc. All rights reserved. DEFINE: Microservice Loosely coupled service oriented architecture with bounded contexts If every service has to be updated in concert, it’s not loosely coupled! If you have to know about surrounding services you don’t have a bounded context.
  • 23. 23© 2015 Pivotal Software, Inc. All rights reserved. DEFINE: Microservice
  • 24. 24© 2015 Pivotal Software, Inc. All rights reserved. But Microservices!
  • 25. 25© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Pivotal
  • 26. 26© 2015 Pivotal Software, Inc. All rights reserved. Anatomy of a cloud native framework Application coordination boilerplate patterns Application configuration boilerplate patterns Enterprise application boilerplate patterns Runtime Platform, Infrastructure Automation boilerplate patterns (provision, deploy, secure, log, data services, etc.) CloudDesktop Spring Boot Spring IO Pivotal Cloud Foundry Spring Cloud + BOSH
  • 27. 27© 2016 Pivotal Software, Inc. All rights reserved. Cloud Native Power Lunch Series Use 12 factor app principles to create cloud ready applications ➢ A set of best practices for developing and deploying cloud-native software. ➢ Practices translate into platform features and workflow requirements. Codebase Dependencies Config Backing Services Build, Release, Run Processes Port Binding Concurrency Disposability Dev/Prod Parity Logs Admin Processes Source: “The Twelve-Factor App.”
  • 28. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 29. 29© 2016 Pivotal Software, Inc. All rights reserved.
  • 30. 30© 2016 Pivotal Software, Inc. All rights reserved. Demo
  • 31. 31© 2016 Pivotal Software, Inc. All rights reserved. Two Apps, each with their own codebase: https://github.com/skazi-pivotal/spring-boot-cities-service https://github.com/skazi-pivotal/spring-boot-cities-ui
  • 32. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 33. 33© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Dependencies – Packaged as jars (Java), RubyGems, CPAN (Perl) – Declared in a manifest • Maven POM, Gemfile / bundle exec, etc. – Don't rely on implicit dependencies from the deployment environment I. Codebase One codebase tracked in SCM, many deploys II. Dependencies Explicitly declare and isolate dependencies III. Configuration Store config in the environment
  • 34. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 35. 35© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Configuration – Anything that varies by deployment should not be hard-coded – Environment variables or configuration server recommended I. Codebase One codebase tracked in SCM, many deploys II. Dependencies Explicitly declare and isolate dependencies III. Configuration Store config in the environment
  • 36. 36© 2015 Pivotal Software, Inc. All rights reserved.
  • 37. 37© 2015 Pivotal Software, Inc. All rights reserved. Why Spring Boot? • “MICRO” doesn’t mean small • It means to decompose • Separate distinct components (sort, tail …..) • Easy to build, test and DEPLOY • Microservices should perform one thing and perform it well • Typically concise codebase • Ship everything they need • Can deployed standalone or in the cloud, singly reducing operations overhead • Spring Boot: • Is Opinionated • Gets you up and running quickly
  • 38. 38© 2015 Pivotal Software, Inc. All rights reserved. Enhanced Application with Spring Bootpackage hello; import java.util.Arrays; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(SBootCitiesServiceApplication.class, args); } } MAGIC!! • Tags the class as a source for Spring Beans • Asks Boot to automatically add beans based on classpath • Tell Spring to look for other components, configs etc. in the same package
  • 39. 39© 2015 Pivotal Software, Inc. All rights reserved. DB Connection: From Local to Bean @Configuration @ConfigurationProperties(prefix="spring.datasource") public class DataSourceConfig { private String driverClassName; private String url; private String username; private String password; public DataSourceConfig() { super(); } @Bean public DataSource dataSource() { SimpleDriverDataSource dataSource = null; try { Class.forName(this.driverClassName); dataSource = new SimpleDriverDataSource(); dataSource.setDriver(DriverManager.getDriver(this.url)); dataSource.setUrl(this.url); dataSource.setUsername(this.username); dataSource.setPassword(this.password); Logger.INSTANCE.log("Connected to: " + this.url); } catch (Exception e) { throw new IllegalStateException("An Exception occurred initialising datasource", e); } return dataSource; } Load Connection Properties from local file
  • 40. 40© 2015 Pivotal Software, Inc. All rights reserved. DB Connection: From Local to Bean Load Connection Properties from local file spring: profiles: local datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1/ccmdemo username: suf password: password
  • 41. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 42. 42© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Backing Services – Service consumed by app as part of normal operations • DB, Message Queues, SMTP servers • May be locally managed or third-party managed – Services should be treated as resources • Connected to via URL / configuration • Swappable (change in-memory DB for MySQL) VI. Processes Execute app as stateless processes V. Build, Release, Run Strictly separate build and run stages IV. Backing Services Treat backing services as attached resources
  • 43. Cities - Service { "_embedded" : { "cities" : [ { "name" : "Aaron's Hill", "county" : "Surrey", "stateCode" : "SU9543", "postalCode" : "GU7 2", "latitude" : "51.18277", "longitude" : "-0.63502", "_links" : { "self" : { "href" : "http://cities-service-recognisable-wrongheadedness.cfapps.io/cities/2" }, "city" : { "href" : "http://cities-service-recognisable-wrongheadedness.cfapps.io/cities/2" } } }, { "name" : "Abbey Mead", ………………………. /cities
  • 44. Local Profile City Microservice - @SpringBootApplication In-Memory DB Spring Boot Magic! Cloud Profile Spring Boot & Cloud Magic!
  • 45. 45© Copyright 2013 Pivotal. All rights reserved. Router CELL Rep Executor CELL Rep Executor CELL Rep Executor ACCESS APP Managed Service cf create-service p-mysql 512mb MyDB Create Connection: "VCAP_SERVICES": { "MyDB": [ { "credentials": { "hostname": "mysql.local.pcfdev.io" "jdbcUrl": "jdbc:mysql://mysql.local.pcfdev.io:3306 ] } Access a Connection: cf bind MyApp MyDB Expose Connection to App:
  • 46. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 47. 47© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Build, Release, Run – Build stage – converts codebase into build (version) • Including managed dependencies – Release stage – build + config = release – Run – Runs app in execution environment • In Cloud Foundry, these stages are clearly separated with cf push VI. Processes Execute app as stateless processes V. Build, Release, Run Strictly separate build, release and run stages IV. Backing Services Treat backing services as attached resources
  • 48. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 49. 49© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Processes – The app executes as one or more discrete running processes – Stateless • Processes should not store internal state – Share nothing • Data needing to be shared should be persisted – Any necessary state is externalized as a backing service VI. Processes Execute app as stateless processes V. Build, Release, Run Strictly separate build and run stages IV. Backing Services Treat backing services as attached resources
  • 50. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 51. 51© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Port Binding – The app is self-contained • For example, Tomcat is included in the droplet – Apps are exposed via port binding (including HTTP) • Every app instance is accessed via a URI and port number – One app can become another app's service IX. Disposability Maximize robustness with fast startup and graceful shutdown VIII. Concurrency Scale out via the process model VII. Port binding Export services via port binding
  • 52. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 53. 53© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Concurrency – Achieve concurrency by scaling out horizontally • Scale by adding more app instances – Individual processes are free to multithread IX. Disposability Maximize robustness with fast startup and graceful shutdown VIII. Concurrency Scale out via the process model VII. Port binding Export services via port binding
  • 54. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 55. 55© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Disposability – Processes should be disposable • Remember, they're stateless! – Should be quick to start • Enhances scalability and fault tolerance – Should exit gracefully / finish current requests IX. Disposability Maximize robustness with fast startup and graceful shutdown VIII. Concurrency Scale out via the process model VII. Port binding Export services via port binding
  • 56. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 57. 57© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Development, staging, production should be similar – This enables high quality, continuous delivery XII. Admin processes Run admin / mgmt tasks as one-off processes X. Dev/prod parity Keep dev, staging, prod as similar as possible XI. Logs Treat logs as event streams
  • 58. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 59. 59© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Logs are streams of aggregated, time-ordered events – Apps are not concerned with log management • Just write to stdout – Separate log managers handle management • Logging as a service • Can be managed via tools like Papertrail, Splunk ... – Log indexing and analysis XII. Admin processes Run admin / mgmt tasks as one-off processes X. Dev/prod parity Keep dev, staging, prod as similar as possible XI. Logs Treat logs as event streams
  • 60. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Latency Analysis Of Microservices Microservice architectures are often a graph of components distributed across a network
  • 61. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Dapper Paper By Google is where it started This paper described Dapper, which is Google’s production distributed systems tracing infrastructure Design Goals : • Low overhead • Application-level transparency • Scalability Based on : Concept of Traces and Spans
  • 62. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Distributed Tracing (Theory) Distributed Tracing is a process of collecting end-to-end latency graphs in near real time. As a request flows from one microservice to other in a system through ingress and egress, we need a way to trace it and provide info such as how much time it took for a request to complete? Which microservice was responsible for the delay? Distributed Tracing Systems are often used for this purpose. An example of such a system is Zipkin.
  • 63. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Tracers (Theory) • As a request is flowing from one microservice to another, tracers add logic to create unique trace ID. • Trace ID is generated when the first request is made. • As a request arrives at one microservice in it’s journey, a new Span ID is assigned for that service and added to the trace. • Tracers execute in your production apps! They are written to not log too much • Tracers have instrumentation or sampling policy to manage volumes of traces and spans
  • 64. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Traces and Spans (Theory) • A trace represents the entire journey of a request, from one microservice to another • A span represents a single operation call to a microservice • If a microservice calls another microservice, then the calling span is known as parent span • A span contains timestamped records which encode the span’s start and end time, any RPC timing data, and zero or more application-specific annotations
  • 65. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Example Trace – Graph of spans Frontend Request (Trace id: 1, Span id : 1) Trace id : 1 Parent id : 1 Span id : 2 Trace id : 1 Parent id : 3 Span id : 4 Trace id : 1 Parent id : 3 Span id : 5 Trace id : 1 Parent id : 1 Span id : 3 Time
  • 66. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Example Span – An individual operation Operation Events Tags Server Received Server Sent
  • 67. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Tracing Systems Tracing systems collect, process and present data reported by tracers. • aggregate spans into trace trees • provide query and visualization for latency analysis • have retention policy (usually days)
  • 68. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Zipkin is a distributed tracing system(Theory) • Zipkin is a tracing system and was created by Twitter in 2012 • It is open sourced and it’s implementation is based on Dapper Paper by Google • Adrian Cole (Spring Cloud) is the main contributor • In 2015, OpenZipkin became the primary fork Goals : Aggregate spans into trace trees Provide query and visualization for latency analysis Have retention policy https://github.com/openzipkin https://gitter.im/openzipkin/zipkin
  • 69. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Zipkin Architecture • Tracers collect timing data and transport it over HTTP or Kafka • Collectors store spans in MySQL or Cassandra • Users query for traces via Zipkin’s Web UI or Api
  • 70. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Zipkin UI Example from Spring Trader app
  • 71. © Copyright 2015 Pivotal. All rights reserved.© Copyright 2015 Pivotal. All rights reserved. Spring Cloud Sleuth is a Zipkin-Compatible tracer • Spring Cloud Sleuth sets up useful log formatting for you that prints the trace ID and the span ID • It includes instrumentation for Spring Boot, and a streaming collector • Reports to zipkin via HTTP by depending on spring-cloudsleuth-zipkin • Transparent to application developer 1. Include starter BOM on app build system <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> 2. Specify “sampler” @Bean public AlwaysSampler defaultSampler() { return new AlwaysSampler(); }
  • 72. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 73. 73© Copyright 2016 Pivotal. All rights reserved. 12-Factor Application • Admin processes / management tasks run as one-off processes – Run admin processes on the platform • Leverages platform knowledge and benefits – DB migrations, one time scripts, etc. – Use the same environment, tools, language as application processes XII. Admin processes Run admin / mgmt tasks as one-off processes X. Dev/prod parity Keep dev, staging, prod as similar as possible XI. Logs Treat logs as event streams
  • 74. 74© 2015 Pivotal Software, Inc. All rights reserved. • Eureka • Hystrix + Turbine • Ribbon • Feign • Zuul http://netflix.github.io
  • 75. 75© 2015 Pivotal Software, Inc. All rights reserved. Example Distributed System: Minified
  • 76. 76© 2015 Pivotal Software, Inc. All rights reserved. Example: Spring Cloud Services + Netflix OSS
  • 77. 77© 2016 Pivotal Software, Inc. All rights reserved. https://github.com/pivotal-bank/cf-SpringBootTrader
  • 78. 78© 2015 Pivotal Software, Inc. All rights reserved. Config Server
  • 79. 79© 2015 Pivotal Software, Inc. All rights reserved. Fault Tolerance – Circuit Breakers @SpringBootApplication @EnableCircuitBreaker @EnableDiscoveryClient public class CustomerApp extends RepositoryRestMvcConfiguration { @Override protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { config.exposeIdsFor(Customer.class); } public static void main(String[] args) { SpringApplication.run(CustomerApp.class, args); } }
  • 80. 80© 2015 Pivotal Software, Inc. All rights reserved. Fault Tolerance – Circuit Breakers
  • 81. 81© 2015 Pivotal Software, Inc. All rights reserved. @HystrixCommand(fallbackMethod = "defaultLink") public Link getStoresByLocationLink(Map<String, Object> parameters) { URI storesUri = URI.create(uri); try { ServiceInstance instance = loadBalancer.choose("stores"); storesUri = URI.create(String.format("http://%s:%s", instance.getHost(), instance.getPort())); } catch (RuntimeException e) { // Eureka not available } Traverson traverson = new Traverson(storesUri, MediaTypes.HAL_JSON); Link link = traverson.follow("stores", "search", "by-location") .withTemplateParameters(parameters).asLink(); return link; } Enabling a Circuit Breaker Client-Side Load Balancing
  • 82. 82© 2015 Pivotal Software, Inc. All rights reserved.
  • 83. 83© 2015 Pivotal Software, Inc. All rights reserved. Service Registration/Discovery @SpringBootApplication @EnableCircuitBreaker @EnableDiscoveryClient public class CustomerApp extends RepositoryRestMvcConfiguration { @Override protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { config.exposeIdsFor(Customer.class); } public static void main(String[] args) { SpringApplication.run(CustomerApp.class, args); } }
  • 84. 84© 2015 Pivotal Software, Inc. All rights reserved. Service Registration/Discovery
  • 85. © Copyright 2014 Pivotal. All rights reserved. The Twelve Factor App http://12factor.net
  • 86. 86© 2016 Pivotal Software, Inc. All rights reserved. CI/CDwith Concourse (http://concourse.ci/)
  • 87. 87© 2016 Pivotal Software, Inc. All rights reserved. Q&A