Consuming Data Services with Spring Apps on Cloud Foundry

Download Consuming Data Services with Spring Apps on Cloud Foundry

Post on 16-Apr-2017

798 views

Category:

Technology

0 download

Embed Size (px)

TRANSCRIPT

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Consuming Data Services with Spring Apps on Cloud Foundry

    Scott Frederick@scottyfred

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Apps and Services

    2

    $ cf push my-app $ cf create p-mysql 100mb my-db

    $ cf bind my-app my-db

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Layers of Data Access

    3

    application

    Spring Data

    connection library / driverconfigure connection parameters here

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Whats a data service? Resources provisioned on demand

    Managed services instances are provisioned by service brokers User-provided services instances can be used to expose off-platform

    resources to applications running on the platform

    Once provisioned, service instances can be exposed to applications on the platform

    Data services provide persistence and messaging to applications

    4

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 / 5

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    "VCAP_SERVICES": { "p-mysql": [{ "label": "p-mysql", "name": "customer-db", "plan": "100mb", "tags": ["mysql","relational"] "credentials": { "jdbcUrl": "jdbc:mysql://192.168.1.149:3306/

    cf_231f410b_235f_461e_a7f6_bddf3469fa93?user=khuTGcRGBsvIWUjB\u0026password=aFwkW2UTMhHPcUsR",

    "uri": "mysql://khuTGcRGBsvIWUjB:aFwkW2UTMhHPcUsR@192.168.1.149:3306/cf_231f410b_235f_461e_a7f6_bddf3469fa93?reconnect=true"

    } }]

    Application Environment

    6

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 / 7

    http://cloud.spring.io/spring-cloud-connectors

    http://cloud.spring.io/spring-cloud-connectors

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Supported Services Relational Databases

    MySQL PostgreSQL Oracle DB2 SQLServer

    MongoDB Redis RabbitMQ SMTP e-mail

    8

    http://cloud.spring.io/spring-cloud-connectors

    http://cloud.spring.io/spring-cloud-connectors

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Demo

    9

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Java Buildpack Auto Re-configurationAdds an auto-reconfiguration jar to the applications classpath on deployment

    Implements a BeanPostProcessor that inspects AppContext Detects beans of known types supported by Connectors Replaces existing beans in the AppContext with Connectors-created beans

    Automatically enabled when core Spring jars are detected in the deployed app archive

    10

    Spring Cloud Connectors

    Java Buildpack auto-reconfigurationJava Buildpack

    application

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Java Buildpack Auto Re-configurationLimitations

    Supports only one bean of a service type (e.g. relational database) Supports RDBMD, MongoDB, Redis, and RabbitMQ only Connection details cant be customized

    Automatically disabled when Connectors classes are detected in the appCan be manually disabled via an environment variable

    11

    $ cf set-env customer-app JBP_CONFIG_SPRING_AUTO_RECONFIGURATION '{enabled: false}'

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Demo

    12

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Spring Boot Auto ConfigurationSpring Boot provides auto configuration via Connectors

    Creates connection beans for any service type known to Connectors (core or extensions)

    Takes precedence over other Spring Data auto configuration

    Cloud Connectors starter includes classes necessary to enable this auto configuration

    Disables Java Buildpack auto re-configuration

    13

    Spring Cloud Connectors

    Spring Boot auto configuration

    application

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    spring.cloud.enabled=false

    Limitations Supports only one bean of a service type (e.g. relational database) Connection details cant be customized

    Automatically disabled when the Connectors Cloud class is present in the app contextCan be manually disabled via a Spring Boot property

    Spring Boot Auto Configuration

    14

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Demo

    15

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Connectors Manual ConfigurationGives full control over the connection configuration with a small amount of code

    Allows customization of connection parameters and connection pool configuration

    Supports configuration of multiple services of the same type

    16

    Spring Cloud Connectors

    application

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Configuration with Multiple Services

    17

    @Configuration public class DatabaseConfig extends AbstractCloudConfig { @Bean public DataSource customerDataSource() { return connectionFactory().dataSource(customer-db); }

    @Bean public DataSource orderDataSource() { return connectionFactory().dataSource(order-db); } }

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    @Configuration @Profile("default") public class LocalDatabaseConfig { @Bean public DataSource dataSource() { return DataSourceBuilder.create().build(); } }

    @Configuration @Profiles(cloud) public class CloudDatabaseConfig extends AbstractCloudConfig { @Bean public DataSource dataSource() { return connectionFactory().dataSource(); } }

    Profiles for local testing

    18

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    A cloud property source is added to Spring Boot propertiesThese properties can be used to explicitly configure other Spring Boot properties

    Limitations Supports only one bean of a service type (e.g. relational database) Properties vary by service offering Either the service type (e.g. mysql) or name (e.g. customer-db)

    must be used in property placeholder

    spring.datasource.url: ${cloud.services.mysql.connection.jdbcurl} spring.datasource.username: ${cloud.services.mysql.connection.username} spring.datasource.password: ${cloud.services.mysql.connection.password}

    One More Option

    19

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Binding to Data Services with Spring Boot in Cloud Foundryhttps://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot-in-cloud-foundry

    Demo apphttps://github.com/scottfrederick/data-binding

    Consuming other types of data serviceshttps://github.com/cloudfoundry-samples/spring-music

    Further Reading

    20

    https://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot-in-cloud-foundryhttps://github.com/scottfrederick/data-bindinghttps://github.com/cloudfoundry-samples/spring-music

  • Unless o therw ise ind ica ted , these s l ides are 2013-2016 P ivo ta l So f tware , Inc . and l i censed under a Creat ive Commons At t r ibu t ion-NonCommerc ia l l i cense: h t tp : / / c rea t ivecommons.org / l i censes /by-nc /3 .0 /

    Learn More. Stay Connected.

    Introduction to Spring Data - Greg TurnquistWhat's New in Spring Data? - Mark Paluch, Christoph Strobl

    Advanced Spring Data REST - Oliver Gierke

    @springcentralspring.io/blog

    @pivotalpivotal.io/blog

    @pivotalcfhttp://engineering.pivotal.io

Recommended

View more >