SlideShare una empresa de Scribd logo
1 de 64
Main sponsor




Micro Services – Java the Unix way

            James Lewis
James Lewis

Senior Engineer / Principal Consultant / TAB member

Your Storyteller today
radar
latest Edition released last week
Micro-services

Embedded Servlet Containers
Or how we designed and nearly built a Resource Oriented, Event
Driven System out of applications about 1000 lines long…

WHAT I DID LAST SUMMER
In the beginning…
• There was a new product being developed
  by an organisation in London

• The organisation had gathered their list of
  high level requirements

• And they asked ThoughtWorks if we could
  help them design and build it…
So we took a look at their
           requirements

• Me and my mates at ThoughtWorks

• Worked out to be about 5000 points worth
  of User Stories
  – At 7 points per pair of developers per week
Com lete
   p




Half way
t hrough




   0
                                                     Heat
       o en
        p ed     En day
                   d      Cows     hell
                                           p fly
                                            igs    death of
       the b x
            o       1     co e
                            m    freezes
                                                     the
                          ho e
                            m
                                                   Universe
Tip 1

    Divide and conquer


Start on the outside and model
      business capabilities
Product               Product                  Product              Product
                          Real Time and                  Mobile                CMS                  Ecommerce                 Demo              External
      Analytics          Batch Interfaces                                                                                      Site             Reporting


      Product


                                                    3rd party Gateway                                                          SMS Gateway

                                 Product                   Product                    Product                  Product
                                      Config                  Call Centre               Marketing                Reporting
                                     Application             Application               Application              Application


                                                                        Account
                      A / E Services               Config Services       Services          User Services                               Product Data

                       User / Role                                                                                                     Product
                                                                                                                                    Product / static Catalog
                       Repository                  Raw Txn Store      Account Store       Member Store                                Repository
                                                                                                                                  Product / static Catalog
                  Access and Entitlement                                                                                        Product / static Catalog


                                                       Config and
                      Batch Lifecyle                   Metadata                                            Product                     Reporting
                        services                        servces                    Rules Engine                                        Services
                     Batch Interface
                                                                                                          Rules Config
                                                        Config /                                            Application                 Reporting
                                                     metadata store                   Rules store                                      datastore

                                                        Metadata                                Rules Engine                       Reporting Services




Each small box represents a capability,

composed of one or more services
• The only way we could hit anything like the
  timescales required was to scale the
  programme quickly

• And that meant multiple teams in multiple
  workstreams
And there were
some, umm, interesting non-
 functional requirements too
Product               Product                  Product              Product
                       Real Time and                  Mobile                CMS                  Ecommerce                 Demo              External
   Analytics          Batch Interfaces                                                                                      Site             Reporting


   Product


                                                 3rd party Gateway                                                          SMS Gateway

                              Product                   Product                    Product                  Product
                                   Config                  Call Centre               Marketing                Reporting
                                  Application             Application               Application              Application


                                                                     Account
                   A / E Services               Config Services       Services          User Services                               Product Data

                    User / Role                                                                                                     Product
                                                                                                                                 Product / static Catalog
                    Repository                  Raw Txn Store      Account Store       Member Store                                Repository
                                                                                                                               Product / static Catalog
               Access and Entitlement                                                                                        Product / static Catalog


                                                    Config and
                   Batch Lifecyle                   Metadata                                            Product                     Reporting
                     services                        servces                    Rules Engine                                        Services
                  Batch Interface
                                                                                                       Rules Config
                                                     Config /                                            Application                 Reporting
                                                  metadata store                   Rules store                                      datastore

                                                     Metadata                                Rules Engine                       Reporting Services




This               Had to handle 1000TPS with a 99th percentile latency of < 2 seconds

 bit
Product               Product                  Product              Product
                           Real Time and                  Mobile                CMS                  Ecommerce                 Demo              External
       Analytics          Batch Interfaces                                                                                      Site             Reporting


       Product


                                                     3rd party Gateway                                                          SMS Gateway

                                  Product                   Product                    Product                  Product
                                       Config                  Call Centre               Marketing                Reporting
                                      Application             Application               Application              Application


                                                                         Account
                       A / E Services               Config Services       Services          User Services                               Product Data

                        User / Role                                                                                                     Product
                                                                                                                                     Product / static Catalog
                        Repository                  Raw Txn Store      Account Store       Member Store                                Repository
                                                                                                                                   Product / static Catalog
                   Access and Entitlement                                                                                        Product / static Catalog


                                                        Config and
                       Batch Lifecyle                   Metadata                                            Product                     Reporting
                         services                        servces                    Rules Engine                                        Services
                      Batch Interface
                                                                                                           Rules Config
                                                         Config /                                            Application                 Reporting
                                                      metadata store                   Rules store                                      datastore

                                                         Metadata                                Rules Engine                       Reporting Services




Support a user base of 100 million active customers
                                                                                                                          This
                                                                                                                           bit
Product               Product                  Product              Product
                       Real Time and                  Mobile                CMS                  Ecommerce                 Demo              External
   Analytics          Batch Interfaces                                                                                      Site             Reporting


   Product


                                                 3rd party Gateway                                                          SMS Gateway

                              Product                   Product                    Product                  Product
                                   Config                  Call Centre               Marketing                Reporting
                                  Application             Application               Application              Application


                                                                     Account
                   A / E Services               Config Services       Services          User Services                               Product Data

                    User / Role                                                                                                     Product
                                                                                                                                 Product / static Catalog
                    Repository                  Raw Txn Store      Account Store       Member Store                                Repository
                                                                                                                               Product / static Catalog
               Access and Entitlement                                                                                        Product / static Catalog


                                                    Config and
                   Batch Lifecyle                   Metadata                                            Product                     Reporting
                     services                        servces                    Rules Engine                                        Services
                  Batch Interface
                                                                                                       Rules Config
                                                     Config /                                            Application                 Reporting
                                                  metadata store                   Rules store                                      datastore

                                                     Metadata                                Rules Engine                       Reporting Services




This               Needed to support bulk loads of 30 – 90 million records nightly
                   (and keep them for six months)
 bit
Did I mention PCI Level 1?
Finally, this is a product build.

 So it needed to be modular /
<cough> “infinitely configurable”

And deployable on Cloud and Tin
The product need to to be…
• Performance
    – fairly high throughput both transactional and batch
• Fault tolerant
    – One thing about the cloud, you are designing for failure right?
• Configurable
    – On a per install or PaaS basis
• Portable
    – Fortunately not to Windows…
• Maintainable
    – over multiple versions and years
• Supporting big data sets
    – Billions of transactions available
    – Millions of customers available

and capable of being built quickly without sacrificing the other principles
Plus ça change, plus c'est la même chose.


(The more things change the more they stay the same)
So, after five weeks we had broken the problem down into capabilties




Now we had to start scaling the teams to deliver these capabilities
Tip 2

Use Conway’s Law to structure teams

“…organizations which design systems … are constrained to produce designs
which are copies of the communication structure of those organizations”
 Melvin Conway, 1968
The first business capability - Users
• Responsible for creation and maintenance of
  users in the system
  – Up to 100 million of them per instance of the product

• Used by many clients with many usage patterns
  – Call centre and website – CRUD
  – Inbound batch files – CRUD x hundreds of thousands
    per night

• Many downstream consumers of the data
  – Fulfilment systems for example
Tip 3


          The Last Responsible Moment


Don’t decide everything at the point you know least
We started with a business process…
                                    Notify
                                                   Batch
                                   External
                                                 Enrolment
                                   System        Results File
                       Invalid
                          File

                                  Notify Sys
                                                 Batch Failed
                                   Admin




                                                                                 Apply rules
     Batch File
a


                                                                                 Send Letter
            file                                                           User
      received    Validate file   Validate Line                         Created
                   structure          Item               Create User




                                                        Link Account

                                                                                 Send results
                                                                                     file
                                      Invalid
                                        User     Notify Sys
                                                  Admin




              and noticed something funny…
Batch                      User                Fulfilment                   Account
      monitoring                Monitoring            Monitoring                 Monitoring




                                         Monitoring
                                                                                                                         Events
                                          Services




     Batch
     Event                                                                                                                             Fulfilment
                                           User
                                                                                                                                        Event
                                         Collection


  Triggering                                                                                                                           Triggering
                   Triggering                         Triggering       Triggering       Triggering        Triggering



   Batch                                                                                                                   Bank
                                      Triggering                                                                                       Fulfilment
 Processing                                                         Member                                                Account
                                                                                                     Rules Engine                       Service
  Service                                                           Service                                               Service




                                                                                                                           Bank
File Structure                                                       Address                         Rules Engine                      fulfilment
                                                                                                                          Account
  Validation                                                        Validation
                                                                                                                          Creation
                                    Ad-hoc
                                    Users

Results File                                                          User                                                 Bank        fulfilment
 Creation                                                           Validation                       Rules store
                                                                                                                       Account Store



                                                                      User                                                               Email
Batch Store                                                          Creation




                                                                   User Store
I know what you are thinking…



                                                    *
* Dan North coined the term Enterprise Night Bus…
Or you could use the web
Tip 4



Be of the web, not behind the web
RFC 5023 to be precise
/user-request

                                       application/atom+json

/user-request/1223




                         Event             Event
                         queue             store


         Queue
       processing
         engine



                         User               User
                        Service             store


                    Users Capability



       /users/142                      application/vnd.user+JSON




         /users




and this is what we built
/user-request

                                                    application/atom+json

             /user-request/1223



Standard resource representations using well known web
standards – atom+json    Event     Event
                                      queue              store


                      Queue
                    processing
                      engine



                                      User               User
                                     Service             store


                                 Users Capability



                    /users/142                      application/vnd.user+JSON




                      /users
/user-request

                                                     application/atom+json

              /user-request/1223




Reified the request to create a user. Clients POST a request
to create a user as an entry Eventan atom collection.
                              to        Event
                                       queue              store


                       Queue
                     processing
                       engine



                                       User               User
                                      Service             store


                                  Users Capability



                     /users/142                      application/vnd.user+JSON




                       /users
Tip 5

If something is important, make it an
explicit part of your design


  Reify
  to convert into or regard as a concrete thing: to reify a
  concept.
/user-request

                                                   application/atom+json

              /user-request/1223




                                     Event             Event
                                     queue             store


Event queue has the single responsibility of managing state
                       Queue
                     processing
transitions for the request to create a user
                       engine



                                     User               User
                                    Service             store


                                Users Capability



                     /users/142                    application/vnd.user+JSON




                       /users
/user-request

                                                      application/atom+json

               /user-request/1223




                                        Event             Event
                                        queue             store


                        Queue
                      processing
                        engine



                                        User              User
                                       Service            store


                                   Users Capability
Queue Processing Engine implemented the Competing
Consumer pattern using Conditional GET, PUT and Etags
                   /users/142     application/vnd.user+JSON
against the atom collection exposed by the event queue

                        /users
/user-request

                                                      application/atom+json

               /user-request/1223




                                        Event             Event
                                        queue             store


                        Queue
                      processing
                        engine



                                        User               User
                                       Service             store


                                   Users Capability
User Service and store is the system of record for users
                      /users/142                      application/vnd.user+JSON




                        /users
/user-request

                                                   application/atom+json

            /user-request/1223




                                     Event             Event
                                     queue             store


                     Queue
After creation, representations of Users are available at
                   processing
                     engine

canonical locations in well defined formats and creation
events added to another atom collection
                         User
                        Service
                                 User
                                 store


                                Users Capability



                   /users/142                      application/vnd.user+JSON




                     /users
Where they are available for consumption
by other downstream systems
Batch
      monitoring
                                  User
                                Monitoring
                                                      Fulfilment
                                                      Monitoring
                                                                                  Account
                                                                                 Monitoring                         Monitoring

                                         Monitoring
                                          Services




     Batch
     Event                                                                                                                               Fulfilment
                                           User
                                                                                                                                          Event
                                         Collection


  Triggering                                                                                                                             Triggering
                   Triggering                         Triggering       Triggering       Triggering        Triggering



   Batch                                                                                                                    Bank
                                      Triggering                                                                                         Fulfilment
 Processing                                                         Member                                                 Account
                                                                                                     Rules Engine                         Service
  Service                                                           Service                                                Service




                                                                                                                            Bank
File Structure                                                       Address                         Rules Engine                        fulfilment
                                                                                                                           Account
  Validation                                                        Validation
                                                                                                                           Creation
                                    Ad-hoc
                                    Users

Results File                                                          User                                                  Bank         fulfilment
 Creation                                                           Validation                       Rules store
                                                                                                                        Account Store



                                                                      User                                                                 Email
Batch Store                                                          Creation


                                                                                                                                  Fulfilment
                                                                   User Store
Our micro-services
• User Request Queue
  – Forms the transactional boundary of the system

• Request Queue Processor
  – Competing Consumer processes events on the
    queue and POSTs them to

• User Service
  – System of record for Users in the system
  – Responsible for all state changes of those users
  – Exposes events on those users to other systems
CHARACTERISTICS OF
MICRO-SERVICES
Small with a single responsibility
• Each application only does one thing

• Small enough to fit in your head
  – James’ heuristic
  – “If a class is bigger than my head then it is too
    big”


• Small enough that you can throw them away
  – Rewrite over Maintain
Containerless and installed as well
     behaved Unix services
• Embedded web container
   – Jetty / SimpleMind
   – This has a lot of benefits for testing (inproctester for
     example) and eases deployment

• Packaged as a single executable jar
   – Along with their configuration
   – And unix standard rc.d scripts

• Installed in the same way you would install httpd or
  any other application
   – Why recreate the wheel? Daemons seem to work ok for
     everything else. Unless you are *special*?
Located in different VCS roots
• Each application is completely separate

• Software developers see similarities and abstractions
   – And before you know it you have One Domain To Rule Them All

• Domain Driven Design / Conways Law
   – Domains in different bounded contexts should be distinct – and its ok to
     have duplication
   – Use physical separation to enforce this

• There will be common code, but it should be library and
  infrastructure code
   – Treat it as you would any other open source library
   – Stick it in a nexus repo somewhere and treat it as a binary dependency
Provisioned automatically
• The way to manage the complexity of
  many small applications is declarative
  provisioning
  – UAT:
     • 2 * service A, Load Balanced, Auto-Scaled
     • 2 * service B, Load Balanced, Auto-Scaled
     • 1 * database cluster
Status aware and auto-scaling
• What good is competing consumer if you only
  have one consumer?
  – We don’t want to wake Peter up at three in the
    morning any more to start a new process

• Use watchdog processes to monitor in-app
  status pages
  – Each app exposes metrics about itself
  – In our case, queue-depth for example
  – This allows others services to auto-scale to meet
    throughput requirements
A single capability composed of
many small applications and
exposing a uniform interface of Atom
Collections
How the capabilities form a product
They interact via the uniform
              interface
• HTTP
  – Don’t fight the battles already won
  – Use no-brainer force multipliers like reverse proxies

• HATEOS
  – Link relations drive state changes
  – Its an anti-corruption layer that allows the capability to
    evolve independently of its clients

• Standard media types
  – Can be used by many different clients
  – You can monitor it using a feed reader if you want…
atom+json / HTTP (AJOH)


           Monitoring                        Reporting
           Capability                        Capability




                             (AJOH)                       (AJOH)
   atom+XML / HTTP




                          User                            Fulfilment
                        Capability                        Capability
                                             (AJOH)




Capabilities poll waiting(AJOH)
                          for events that they know how to deal
                                                   (AJOH)
with. Forming an eventually consistent system

       Inbound Batch           Call Centre

                                                          External
                                                          Suppliers
Tip 6


Favour service choreography over orchestration
atom+json / HTTP (AJOH)


        Monitoring                        Reporting
        Capability                        Capability




                          (AJOH)                       (AJOH)
atom+XML / HTTP
Each is entirely decoupled from it’s clients, scalable, testable
and deployable individually
                       User                            Fulfilment
                     Capability                        Capability
                                          (AJOH)




                              (AJOH)                                (AJOH)




    Inbound Batch           Call Centre

                                                       External
                                                       Suppliers
Tip 7


Use hypermedia controls to decouple services
atom+json / HTTP (AJOH)


        Monitoring                        Reporting
        Capability                        Capability




                          (AJOH)                       (AJOH)
atom+XML / HTTP
Each developed by a separate team,
using whatever tech they choose
                       User                            Fulfilment
                     Capability                        Capability
                                          (AJOH)




                              (AJOH)                                (AJOH)




    Inbound Batch           Call Centre

                                                       External
                                                       Suppliers
Our stack
• Embedded Jetty (current project uses SimpleWeb)

• PicoContainer for DI

• Hibernate (but wrote our own SQL)

• Abdera for Atom

• Smoothie charts

• Metrics @codehass

• Graphite
Infrastructure automation stack
• Fabric with boto

• AWS, but deployable to anything with SSH

• Maven (boo)

• Git

• Puppet for provisioning
NO SILVER BULLETS
This stuff is hard
• We haven’t even talked about
   –   Versioning
   –   Integration
   –   Testing
   –   Deployment

• Eventual Consistency can be tricky for people to get
  there head around

• Developers like using enterprisy software
   – No one got fired for choosing an ESB
   – Convincing people to use the web is hard
SUMMARY
The Unix Philosophy                  :s/pipes/http/
Lions commentary on Unix 2nd edition
Consistent and reinforcing practices
Hexagonal Business capabilities composed of:

Micro Services that you can

Rewrite rather than maintain and which form

A Distributed Bounded Context.

Deployed as containerless OS services

With standardised application protocols and message semantics

Which are auto-scaling and designed for failure
Is hiring!
Thanks!

jalewis@thoughtworks.com
@boicy
http://bovon.org

Más contenido relacionado

La actualidad más candente

Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitectureAshwini Kuntamukkala
 
From Monolithic to Microservices
From Monolithic to Microservices From Monolithic to Microservices
From Monolithic to Microservices Amazon Web Services
 
Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...Chris Richardson
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootKashif Ali Siddiqui
 
Microservices Architecture: Building 'SMART' & 'Agile' Software
Microservices Architecture: Building 'SMART' & 'Agile' SoftwareMicroservices Architecture: Building 'SMART' & 'Agile' Software
Microservices Architecture: Building 'SMART' & 'Agile' SoftwareSmartBear
 
It’s Not Just Request/Response: Understanding Event-driven Microservices
It’s Not Just Request/Response: Understanding Event-driven MicroservicesIt’s Not Just Request/Response: Understanding Event-driven Microservices
It’s Not Just Request/Response: Understanding Event-driven Microservicescornelia davis
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architectureThe Software House
 
Mastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesMastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesJosh Evans
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro servicesSpyros Lambrinidis
 
Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Chris Richardson
 
Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture DevConFu
 
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...Kai Wähner
 
API Strategy Austin - App-centric vs Job-centric Microservices
API Strategy Austin - App-centric vs Job-centric MicroservicesAPI Strategy Austin - App-centric vs Job-centric Microservices
API Strategy Austin - App-centric vs Job-centric MicroservicesIvan Dwyer
 
REST and Microservices
REST and MicroservicesREST and Microservices
REST and MicroservicesShaun Abram
 
Decomposing applications for deployability and scalability #springone2gx #s12gx
Decomposing applications for deployability and scalability #springone2gx #s12gxDecomposing applications for deployability and scalability #springone2gx #s12gx
Decomposing applications for deployability and scalability #springone2gx #s12gxChris Richardson
 
Building a High-Performance Reactive Microservices Architecture
Building a High-Performance Reactive Microservices ArchitectureBuilding a High-Performance Reactive Microservices Architecture
Building a High-Performance Reactive Microservices ArchitectureCognizant
 
An Overview of Designing Microservices Based Applications on AWS - March 2017...
An Overview of Designing Microservices Based Applications on AWS - March 2017...An Overview of Designing Microservices Based Applications on AWS - March 2017...
An Overview of Designing Microservices Based Applications on AWS - March 2017...Amazon Web Services
 
Handling Asynchronous Workloads With OpenShift and Iron.io
Handling Asynchronous Workloads With OpenShift and Iron.ioHandling Asynchronous Workloads With OpenShift and Iron.io
Handling Asynchronous Workloads With OpenShift and Iron.ioIvan Dwyer
 
DEVNET-1128 Cisco Intercloud Fabric NB Api's for Business & Providers
DEVNET-1128	Cisco Intercloud Fabric NB Api's for Business & ProvidersDEVNET-1128	Cisco Intercloud Fabric NB Api's for Business & Providers
DEVNET-1128 Cisco Intercloud Fabric NB Api's for Business & ProvidersCisco DevNet
 

La actualidad más candente (20)

Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
 
From Monolithic to Microservices
From Monolithic to Microservices From Monolithic to Microservices
From Monolithic to Microservices
 
Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
 
Microservices Architecture: Building 'SMART' & 'Agile' Software
Microservices Architecture: Building 'SMART' & 'Agile' SoftwareMicroservices Architecture: Building 'SMART' & 'Agile' Software
Microservices Architecture: Building 'SMART' & 'Agile' Software
 
It’s Not Just Request/Response: Understanding Event-driven Microservices
It’s Not Just Request/Response: Understanding Event-driven MicroservicesIt’s Not Just Request/Response: Understanding Event-driven Microservices
It’s Not Just Request/Response: Understanding Event-driven Microservices
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
 
Cloud-native Data
Cloud-native DataCloud-native Data
Cloud-native Data
 
Mastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesMastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to Microservices
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro services
 
Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)
 
Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture
 
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
 
API Strategy Austin - App-centric vs Job-centric Microservices
API Strategy Austin - App-centric vs Job-centric MicroservicesAPI Strategy Austin - App-centric vs Job-centric Microservices
API Strategy Austin - App-centric vs Job-centric Microservices
 
REST and Microservices
REST and MicroservicesREST and Microservices
REST and Microservices
 
Decomposing applications for deployability and scalability #springone2gx #s12gx
Decomposing applications for deployability and scalability #springone2gx #s12gxDecomposing applications for deployability and scalability #springone2gx #s12gx
Decomposing applications for deployability and scalability #springone2gx #s12gx
 
Building a High-Performance Reactive Microservices Architecture
Building a High-Performance Reactive Microservices ArchitectureBuilding a High-Performance Reactive Microservices Architecture
Building a High-Performance Reactive Microservices Architecture
 
An Overview of Designing Microservices Based Applications on AWS - March 2017...
An Overview of Designing Microservices Based Applications on AWS - March 2017...An Overview of Designing Microservices Based Applications on AWS - March 2017...
An Overview of Designing Microservices Based Applications on AWS - March 2017...
 
Handling Asynchronous Workloads With OpenShift and Iron.io
Handling Asynchronous Workloads With OpenShift and Iron.ioHandling Asynchronous Workloads With OpenShift and Iron.io
Handling Asynchronous Workloads With OpenShift and Iron.io
 
DEVNET-1128 Cisco Intercloud Fabric NB Api's for Business & Providers
DEVNET-1128	Cisco Intercloud Fabric NB Api's for Business & ProvidersDEVNET-1128	Cisco Intercloud Fabric NB Api's for Business & Providers
DEVNET-1128 Cisco Intercloud Fabric NB Api's for Business & Providers
 

Destacado

Productivity Tips for Java EE and Spring Developers
 Productivity Tips for Java EE and Spring Developers Productivity Tips for Java EE and Spring Developers
Productivity Tips for Java EE and Spring DevelopersSimon Maple
 
Cassandra as event sourced journal for big data analytics
Cassandra as event sourced journal for big data analyticsCassandra as event sourced journal for big data analytics
Cassandra as event sourced journal for big data analyticsAnirvan Chakraborty
 
Scaling wix with microservices architecture jax london-2015
Scaling wix with microservices architecture jax london-2015Scaling wix with microservices architecture jax london-2015
Scaling wix with microservices architecture jax london-2015Aviran Mordo
 
GC Tuning Confessions Of A Performance Engineer - Improved :)
GC Tuning Confessions Of A Performance Engineer - Improved :)GC Tuning Confessions Of A Performance Engineer - Improved :)
GC Tuning Confessions Of A Performance Engineer - Improved :)Monica Beckwith
 
WildFly AppServer - State of the Union
WildFly AppServer - State of the UnionWildFly AppServer - State of the Union
WildFly AppServer - State of the UnionDimitris Andreadis
 
Apache Cassandra for Timeseries- and Graph-Data
Apache Cassandra for Timeseries- and Graph-DataApache Cassandra for Timeseries- and Graph-Data
Apache Cassandra for Timeseries- and Graph-DataGuido Schmutz
 
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.Dimitris Andreadis
 
RESTful Microservices
RESTful MicroservicesRESTful Microservices
RESTful MicroservicesShaun Abram
 
Beyond Software Craftsmanship - Johnny's Road to Remarkable Career
Beyond Software Craftsmanship - Johnny's Road to Remarkable CareerBeyond Software Craftsmanship - Johnny's Road to Remarkable Career
Beyond Software Craftsmanship - Johnny's Road to Remarkable CareerEduards Sizovs
 
JBoss EAP / WildFly, State of the Union
JBoss EAP / WildFly, State of the UnionJBoss EAP / WildFly, State of the Union
JBoss EAP / WildFly, State of the UnionDimitris Andreadis
 
WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7George Gastaldi
 
Security enforcement of Java Microservices with Apiman & Keycloak
Security enforcement of Java Microservices with Apiman & KeycloakSecurity enforcement of Java Microservices with Apiman & Keycloak
Security enforcement of Java Microservices with Apiman & KeycloakCharles Moulliard
 
Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?Christian Baranowski
 
J2EE Technology Mapping-21-may-2014
J2EE Technology Mapping-21-may-2014J2EE Technology Mapping-21-may-2014
J2EE Technology Mapping-21-may-2014Nguyen Tung
 
5 normal forms in relational database theory
5 normal forms in relational database theory5 normal forms in relational database theory
5 normal forms in relational database theoryPankamol Srikaew
 
Micro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmMicro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmEberhard Wolff
 
Batch file programming
Batch file programmingBatch file programming
Batch file programmingalan moreno
 

Destacado (20)

Productivity Tips for Java EE and Spring Developers
 Productivity Tips for Java EE and Spring Developers Productivity Tips for Java EE and Spring Developers
Productivity Tips for Java EE and Spring Developers
 
Cassandra as event sourced journal for big data analytics
Cassandra as event sourced journal for big data analyticsCassandra as event sourced journal for big data analytics
Cassandra as event sourced journal for big data analytics
 
Scaling wix with microservices architecture jax london-2015
Scaling wix with microservices architecture jax london-2015Scaling wix with microservices architecture jax london-2015
Scaling wix with microservices architecture jax london-2015
 
GC Tuning Confessions Of A Performance Engineer - Improved :)
GC Tuning Confessions Of A Performance Engineer - Improved :)GC Tuning Confessions Of A Performance Engineer - Improved :)
GC Tuning Confessions Of A Performance Engineer - Improved :)
 
WildFly AppServer - State of the Union
WildFly AppServer - State of the UnionWildFly AppServer - State of the Union
WildFly AppServer - State of the Union
 
Apache Cassandra for Timeseries- and Graph-Data
Apache Cassandra for Timeseries- and Graph-DataApache Cassandra for Timeseries- and Graph-Data
Apache Cassandra for Timeseries- and Graph-Data
 
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
WildFly v9 - State of the Union Session at Voxxed, Istanbul, May/9th 2015.
 
RESTful Microservices
RESTful MicroservicesRESTful Microservices
RESTful Microservices
 
Beyond Software Craftsmanship - Johnny's Road to Remarkable Career
Beyond Software Craftsmanship - Johnny's Road to Remarkable CareerBeyond Software Craftsmanship - Johnny's Road to Remarkable Career
Beyond Software Craftsmanship - Johnny's Road to Remarkable Career
 
JBoss EAP / WildFly, State of the Union
JBoss EAP / WildFly, State of the UnionJBoss EAP / WildFly, State of the Union
JBoss EAP / WildFly, State of the Union
 
WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7
 
Security enforcement of Java Microservices with Apiman & Keycloak
Security enforcement of Java Microservices with Apiman & KeycloakSecurity enforcement of Java Microservices with Apiman & Keycloak
Security enforcement of Java Microservices with Apiman & Keycloak
 
Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?Microservices – die Architektur für Agile-Entwicklung?
Microservices – die Architektur für Agile-Entwicklung?
 
Javantura v4 - (Spring)Boot your application on Red Hat middleware stack - Al...
Javantura v4 - (Spring)Boot your application on Red Hat middleware stack - Al...Javantura v4 - (Spring)Boot your application on Red Hat middleware stack - Al...
Javantura v4 - (Spring)Boot your application on Red Hat middleware stack - Al...
 
J2EE Technology Mapping-21-may-2014
J2EE Technology Mapping-21-may-2014J2EE Technology Mapping-21-may-2014
J2EE Technology Mapping-21-may-2014
 
5 normal forms in relational database theory
5 normal forms in relational database theory5 normal forms in relational database theory
5 normal forms in relational database theory
 
Javantura v4 - Keycloak – instant login for your app - Marko Štrukelj
Javantura v4 - Keycloak – instant login for your app - Marko ŠtrukeljJavantura v4 - Keycloak – instant login for your app - Marko Štrukelj
Javantura v4 - Keycloak – instant login for your app - Marko Štrukelj
 
Micro Service – The New Architecture Paradigm
Micro Service – The New Architecture ParadigmMicro Service – The New Architecture Paradigm
Micro Service – The New Architecture Paradigm
 
Batch file programming
Batch file programmingBatch file programming
Batch file programming
 
Batch
BatchBatch
Batch
 

Similar a Java micro-services

Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...Lucas Jellema
 
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...Lucas Jellema
 
First Operational Technology (OT) High Performance Messaging Patterns for Ent...
First Operational Technology (OT) High Performance Messaging Patterns for Ent...First Operational Technology (OT) High Performance Messaging Patterns for Ent...
First Operational Technology (OT) High Performance Messaging Patterns for Ent...Real-Time Innovations (RTI)
 
Dashboarding Examples Dt
Dashboarding Examples DtDashboarding Examples Dt
Dashboarding Examples DtKristin Yokota
 
PayPal Behavioral Analytics on Hadoop
PayPal Behavioral Analytics on HadoopPayPal Behavioral Analytics on Hadoop
PayPal Behavioral Analytics on HadoopDataWorks Summit
 
Google ebda2 - eCommerce - Souq.com
Google ebda2 - eCommerce - Souq.comGoogle ebda2 - eCommerce - Souq.com
Google ebda2 - eCommerce - Souq.comMahmoud Said
 
EMC Documentum & Captiva
EMC Documentum & CaptivaEMC Documentum & Captiva
EMC Documentum & CaptivaITDogadjaji.com
 
Building Rich, Interactive E-commerce Applications Using ASP.NET and Silverlight
Building Rich, Interactive E-commerce Applications Using ASP.NET and SilverlightBuilding Rich, Interactive E-commerce Applications Using ASP.NET and Silverlight
Building Rich, Interactive E-commerce Applications Using ASP.NET and Silverlightgoodfriday
 
Selling Stuff on the Web in Style with Microsoft Commerce Server
Selling Stuff on the Web in Style with Microsoft Commerce ServerSelling Stuff on the Web in Style with Microsoft Commerce Server
Selling Stuff on the Web in Style with Microsoft Commerce Servergoodfriday
 
02 Ms Online Identity Session 1
02 Ms Online Identity   Session 102 Ms Online Identity   Session 1
02 Ms Online Identity Session 1Sivadon Chaisiri
 
CDS in Regenstrief's New Gopher CPOE
CDS in Regenstrief's New Gopher CPOECDS in Regenstrief's New Gopher CPOE
CDS in Regenstrief's New Gopher CPOEJon Duke, MD, MS
 
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
2. FOMS _ FeedHenry_ Mícheál Ó FoghlúFOMS011
 
Res Tful Enterprise Development
Res Tful Enterprise DevelopmentRes Tful Enterprise Development
Res Tful Enterprise DevelopmentConSanFrancisco123
 
Ecommerce and Digital Marketplaces - Planet of the Apps
Ecommerce and Digital Marketplaces - Planet of the AppsEcommerce and Digital Marketplaces - Planet of the Apps
Ecommerce and Digital Marketplaces - Planet of the AppsElastic Path
 
Enterprise Integration of Disruptive Technologies
Enterprise Integration of Disruptive TechnologiesEnterprise Integration of Disruptive Technologies
Enterprise Integration of Disruptive TechnologiesDataWorks Summit
 
SaaS, Cloud Demystified
SaaS, Cloud DemystifiedSaaS, Cloud Demystified
SaaS, Cloud DemystifiedManish Sharma
 

Similar a Java micro-services (20)

Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
 
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
 
Best team presentation slides
Best team presentation slidesBest team presentation slides
Best team presentation slides
 
First Operational Technology (OT) High Performance Messaging Patterns for Ent...
First Operational Technology (OT) High Performance Messaging Patterns for Ent...First Operational Technology (OT) High Performance Messaging Patterns for Ent...
First Operational Technology (OT) High Performance Messaging Patterns for Ent...
 
Dashboarding Examples Dt
Dashboarding Examples DtDashboarding Examples Dt
Dashboarding Examples Dt
 
PayPal Behavioral Analytics on Hadoop
PayPal Behavioral Analytics on HadoopPayPal Behavioral Analytics on Hadoop
PayPal Behavioral Analytics on Hadoop
 
Google ebda2 - eCommerce - Souq.com
Google ebda2 - eCommerce - Souq.comGoogle ebda2 - eCommerce - Souq.com
Google ebda2 - eCommerce - Souq.com
 
Sap overview
Sap overviewSap overview
Sap overview
 
Sap overview
Sap overviewSap overview
Sap overview
 
EMC Documentum & Captiva
EMC Documentum & CaptivaEMC Documentum & Captiva
EMC Documentum & Captiva
 
Building Rich, Interactive E-commerce Applications Using ASP.NET and Silverlight
Building Rich, Interactive E-commerce Applications Using ASP.NET and SilverlightBuilding Rich, Interactive E-commerce Applications Using ASP.NET and Silverlight
Building Rich, Interactive E-commerce Applications Using ASP.NET and Silverlight
 
Selling Stuff on the Web in Style with Microsoft Commerce Server
Selling Stuff on the Web in Style with Microsoft Commerce ServerSelling Stuff on the Web in Style with Microsoft Commerce Server
Selling Stuff on the Web in Style with Microsoft Commerce Server
 
02 Ms Online Identity Session 1
02 Ms Online Identity   Session 102 Ms Online Identity   Session 1
02 Ms Online Identity Session 1
 
CDS in Regenstrief's New Gopher CPOE
CDS in Regenstrief's New Gopher CPOECDS in Regenstrief's New Gopher CPOE
CDS in Regenstrief's New Gopher CPOE
 
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
2. FOMS _ FeedHenry_ Mícheál Ó Foghlú
 
Res Tful Enterprise Development
Res Tful Enterprise DevelopmentRes Tful Enterprise Development
Res Tful Enterprise Development
 
Ecommerce and Digital Marketplaces - Planet of the Apps
Ecommerce and Digital Marketplaces - Planet of the AppsEcommerce and Digital Marketplaces - Planet of the Apps
Ecommerce and Digital Marketplaces - Planet of the Apps
 
Gusto Research Presentation
Gusto Research PresentationGusto Research Presentation
Gusto Research Presentation
 
Enterprise Integration of Disruptive Technologies
Enterprise Integration of Disruptive TechnologiesEnterprise Integration of Disruptive Technologies
Enterprise Integration of Disruptive Technologies
 
SaaS, Cloud Demystified
SaaS, Cloud DemystifiedSaaS, Cloud Demystified
SaaS, Cloud Demystified
 

Último

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Último (20)

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
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
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

Java micro-services

  • 1. Main sponsor Micro Services – Java the Unix way James Lewis
  • 2. James Lewis Senior Engineer / Principal Consultant / TAB member Your Storyteller today
  • 6. Or how we designed and nearly built a Resource Oriented, Event Driven System out of applications about 1000 lines long… WHAT I DID LAST SUMMER
  • 7. In the beginning… • There was a new product being developed by an organisation in London • The organisation had gathered their list of high level requirements • And they asked ThoughtWorks if we could help them design and build it…
  • 8. So we took a look at their requirements • Me and my mates at ThoughtWorks • Worked out to be about 5000 points worth of User Stories – At 7 points per pair of developers per week
  • 9. Com lete p Half way t hrough 0 Heat o en p ed En day d Cows hell p fly igs death of the b x o 1 co e m freezes the ho e m Universe
  • 10. Tip 1 Divide and conquer Start on the outside and model business capabilities
  • 11. Product Product Product Product Real Time and Mobile CMS Ecommerce Demo External Analytics Batch Interfaces Site Reporting Product 3rd party Gateway SMS Gateway Product Product Product Product Config Call Centre Marketing Reporting Application Application Application Application Account A / E Services Config Services Services User Services Product Data User / Role Product Product / static Catalog Repository Raw Txn Store Account Store Member Store Repository Product / static Catalog Access and Entitlement Product / static Catalog Config and Batch Lifecyle Metadata Product Reporting services servces Rules Engine Services Batch Interface Rules Config Config / Application Reporting metadata store Rules store datastore Metadata Rules Engine Reporting Services Each small box represents a capability, composed of one or more services
  • 12. • The only way we could hit anything like the timescales required was to scale the programme quickly • And that meant multiple teams in multiple workstreams
  • 13. And there were some, umm, interesting non- functional requirements too
  • 14. Product Product Product Product Real Time and Mobile CMS Ecommerce Demo External Analytics Batch Interfaces Site Reporting Product 3rd party Gateway SMS Gateway Product Product Product Product Config Call Centre Marketing Reporting Application Application Application Application Account A / E Services Config Services Services User Services Product Data User / Role Product Product / static Catalog Repository Raw Txn Store Account Store Member Store Repository Product / static Catalog Access and Entitlement Product / static Catalog Config and Batch Lifecyle Metadata Product Reporting services servces Rules Engine Services Batch Interface Rules Config Config / Application Reporting metadata store Rules store datastore Metadata Rules Engine Reporting Services This Had to handle 1000TPS with a 99th percentile latency of < 2 seconds bit
  • 15. Product Product Product Product Real Time and Mobile CMS Ecommerce Demo External Analytics Batch Interfaces Site Reporting Product 3rd party Gateway SMS Gateway Product Product Product Product Config Call Centre Marketing Reporting Application Application Application Application Account A / E Services Config Services Services User Services Product Data User / Role Product Product / static Catalog Repository Raw Txn Store Account Store Member Store Repository Product / static Catalog Access and Entitlement Product / static Catalog Config and Batch Lifecyle Metadata Product Reporting services servces Rules Engine Services Batch Interface Rules Config Config / Application Reporting metadata store Rules store datastore Metadata Rules Engine Reporting Services Support a user base of 100 million active customers This bit
  • 16. Product Product Product Product Real Time and Mobile CMS Ecommerce Demo External Analytics Batch Interfaces Site Reporting Product 3rd party Gateway SMS Gateway Product Product Product Product Config Call Centre Marketing Reporting Application Application Application Application Account A / E Services Config Services Services User Services Product Data User / Role Product Product / static Catalog Repository Raw Txn Store Account Store Member Store Repository Product / static Catalog Access and Entitlement Product / static Catalog Config and Batch Lifecyle Metadata Product Reporting services servces Rules Engine Services Batch Interface Rules Config Config / Application Reporting metadata store Rules store datastore Metadata Rules Engine Reporting Services This Needed to support bulk loads of 30 – 90 million records nightly (and keep them for six months) bit
  • 17. Did I mention PCI Level 1?
  • 18. Finally, this is a product build. So it needed to be modular / <cough> “infinitely configurable” And deployable on Cloud and Tin
  • 19. The product need to to be… • Performance – fairly high throughput both transactional and batch • Fault tolerant – One thing about the cloud, you are designing for failure right? • Configurable – On a per install or PaaS basis • Portable – Fortunately not to Windows… • Maintainable – over multiple versions and years • Supporting big data sets – Billions of transactions available – Millions of customers available and capable of being built quickly without sacrificing the other principles
  • 20. Plus ça change, plus c'est la même chose. (The more things change the more they stay the same)
  • 21. So, after five weeks we had broken the problem down into capabilties Now we had to start scaling the teams to deliver these capabilities
  • 22. Tip 2 Use Conway’s Law to structure teams “…organizations which design systems … are constrained to produce designs which are copies of the communication structure of those organizations” Melvin Conway, 1968
  • 23. The first business capability - Users • Responsible for creation and maintenance of users in the system – Up to 100 million of them per instance of the product • Used by many clients with many usage patterns – Call centre and website – CRUD – Inbound batch files – CRUD x hundreds of thousands per night • Many downstream consumers of the data – Fulfilment systems for example
  • 24. Tip 3 The Last Responsible Moment Don’t decide everything at the point you know least
  • 25. We started with a business process… Notify Batch External Enrolment System Results File Invalid File Notify Sys Batch Failed Admin Apply rules Batch File a Send Letter file User received Validate file Validate Line Created structure Item Create User Link Account Send results file Invalid User Notify Sys Admin and noticed something funny…
  • 26. Batch User Fulfilment Account monitoring Monitoring Monitoring Monitoring Monitoring Events Services Batch Event Fulfilment User Event Collection Triggering Triggering Triggering Triggering Triggering Triggering Triggering Batch Bank Triggering Fulfilment Processing Member Account Rules Engine Service Service Service Service Bank File Structure Address Rules Engine fulfilment Account Validation Validation Creation Ad-hoc Users Results File User Bank fulfilment Creation Validation Rules store Account Store User Email Batch Store Creation User Store
  • 27. I know what you are thinking… * * Dan North coined the term Enterprise Night Bus…
  • 28. Or you could use the web
  • 29. Tip 4 Be of the web, not behind the web
  • 30. RFC 5023 to be precise
  • 31. /user-request application/atom+json /user-request/1223 Event Event queue store Queue processing engine User User Service store Users Capability /users/142 application/vnd.user+JSON /users and this is what we built
  • 32. /user-request application/atom+json /user-request/1223 Standard resource representations using well known web standards – atom+json Event Event queue store Queue processing engine User User Service store Users Capability /users/142 application/vnd.user+JSON /users
  • 33. /user-request application/atom+json /user-request/1223 Reified the request to create a user. Clients POST a request to create a user as an entry Eventan atom collection. to Event queue store Queue processing engine User User Service store Users Capability /users/142 application/vnd.user+JSON /users
  • 34. Tip 5 If something is important, make it an explicit part of your design Reify to convert into or regard as a concrete thing: to reify a concept.
  • 35. /user-request application/atom+json /user-request/1223 Event Event queue store Event queue has the single responsibility of managing state Queue processing transitions for the request to create a user engine User User Service store Users Capability /users/142 application/vnd.user+JSON /users
  • 36. /user-request application/atom+json /user-request/1223 Event Event queue store Queue processing engine User User Service store Users Capability Queue Processing Engine implemented the Competing Consumer pattern using Conditional GET, PUT and Etags /users/142 application/vnd.user+JSON against the atom collection exposed by the event queue /users
  • 37. /user-request application/atom+json /user-request/1223 Event Event queue store Queue processing engine User User Service store Users Capability User Service and store is the system of record for users /users/142 application/vnd.user+JSON /users
  • 38. /user-request application/atom+json /user-request/1223 Event Event queue store Queue After creation, representations of Users are available at processing engine canonical locations in well defined formats and creation events added to another atom collection User Service User store Users Capability /users/142 application/vnd.user+JSON /users
  • 39. Where they are available for consumption by other downstream systems
  • 40. Batch monitoring User Monitoring Fulfilment Monitoring Account Monitoring Monitoring Monitoring Services Batch Event Fulfilment User Event Collection Triggering Triggering Triggering Triggering Triggering Triggering Triggering Batch Bank Triggering Fulfilment Processing Member Account Rules Engine Service Service Service Service Bank File Structure Address Rules Engine fulfilment Account Validation Validation Creation Ad-hoc Users Results File User Bank fulfilment Creation Validation Rules store Account Store User Email Batch Store Creation Fulfilment User Store
  • 41. Our micro-services • User Request Queue – Forms the transactional boundary of the system • Request Queue Processor – Competing Consumer processes events on the queue and POSTs them to • User Service – System of record for Users in the system – Responsible for all state changes of those users – Exposes events on those users to other systems
  • 43. Small with a single responsibility • Each application only does one thing • Small enough to fit in your head – James’ heuristic – “If a class is bigger than my head then it is too big” • Small enough that you can throw them away – Rewrite over Maintain
  • 44. Containerless and installed as well behaved Unix services • Embedded web container – Jetty / SimpleMind – This has a lot of benefits for testing (inproctester for example) and eases deployment • Packaged as a single executable jar – Along with their configuration – And unix standard rc.d scripts • Installed in the same way you would install httpd or any other application – Why recreate the wheel? Daemons seem to work ok for everything else. Unless you are *special*?
  • 45. Located in different VCS roots • Each application is completely separate • Software developers see similarities and abstractions – And before you know it you have One Domain To Rule Them All • Domain Driven Design / Conways Law – Domains in different bounded contexts should be distinct – and its ok to have duplication – Use physical separation to enforce this • There will be common code, but it should be library and infrastructure code – Treat it as you would any other open source library – Stick it in a nexus repo somewhere and treat it as a binary dependency
  • 46. Provisioned automatically • The way to manage the complexity of many small applications is declarative provisioning – UAT: • 2 * service A, Load Balanced, Auto-Scaled • 2 * service B, Load Balanced, Auto-Scaled • 1 * database cluster
  • 47. Status aware and auto-scaling • What good is competing consumer if you only have one consumer? – We don’t want to wake Peter up at three in the morning any more to start a new process • Use watchdog processes to monitor in-app status pages – Each app exposes metrics about itself – In our case, queue-depth for example – This allows others services to auto-scale to meet throughput requirements
  • 48. A single capability composed of many small applications and exposing a uniform interface of Atom Collections
  • 49. How the capabilities form a product
  • 50. They interact via the uniform interface • HTTP – Don’t fight the battles already won – Use no-brainer force multipliers like reverse proxies • HATEOS – Link relations drive state changes – Its an anti-corruption layer that allows the capability to evolve independently of its clients • Standard media types – Can be used by many different clients – You can monitor it using a feed reader if you want…
  • 51. atom+json / HTTP (AJOH) Monitoring Reporting Capability Capability (AJOH) (AJOH) atom+XML / HTTP User Fulfilment Capability Capability (AJOH) Capabilities poll waiting(AJOH) for events that they know how to deal (AJOH) with. Forming an eventually consistent system Inbound Batch Call Centre External Suppliers
  • 52. Tip 6 Favour service choreography over orchestration
  • 53. atom+json / HTTP (AJOH) Monitoring Reporting Capability Capability (AJOH) (AJOH) atom+XML / HTTP Each is entirely decoupled from it’s clients, scalable, testable and deployable individually User Fulfilment Capability Capability (AJOH) (AJOH) (AJOH) Inbound Batch Call Centre External Suppliers
  • 54. Tip 7 Use hypermedia controls to decouple services
  • 55. atom+json / HTTP (AJOH) Monitoring Reporting Capability Capability (AJOH) (AJOH) atom+XML / HTTP Each developed by a separate team, using whatever tech they choose User Fulfilment Capability Capability (AJOH) (AJOH) (AJOH) Inbound Batch Call Centre External Suppliers
  • 56. Our stack • Embedded Jetty (current project uses SimpleWeb) • PicoContainer for DI • Hibernate (but wrote our own SQL) • Abdera for Atom • Smoothie charts • Metrics @codehass • Graphite
  • 57. Infrastructure automation stack • Fabric with boto • AWS, but deployable to anything with SSH • Maven (boo) • Git • Puppet for provisioning
  • 59. This stuff is hard • We haven’t even talked about – Versioning – Integration – Testing – Deployment • Eventual Consistency can be tricky for people to get there head around • Developers like using enterprisy software – No one got fired for choosing an ESB – Convincing people to use the web is hard
  • 61. The Unix Philosophy :s/pipes/http/ Lions commentary on Unix 2nd edition
  • 62. Consistent and reinforcing practices Hexagonal Business capabilities composed of: Micro Services that you can Rewrite rather than maintain and which form A Distributed Bounded Context. Deployed as containerless OS services With standardised application protocols and message semantics Which are auto-scaling and designed for failure

Notas del editor

  1. Even though we are going to talk about the small, we need to start at the big….
  2. Straw poll, I have a logical diagram next up – Who wants to guess whats in it?
  3. Straw poll, I have a logical diagram next up – Who wants to guess whats in it?
  4. The more things change the more they stay the same
  5. Evolutionary approaches to architectureReal Options
  6. Straw poll, I have a logical diagram next up – Who wants to guess whats in it?
  7. Because you have to be drunk to get on one, it stops everywhere, takes ages and you end up covered in tramps vomit….
  8. Fred Brooks
  9. Even though we are going to talk about the small, we need to start at the big….
  10. Approx 1972
  11. Even though we are going to talk about the small, we need to start at the big….
  12. Even though we are going to talk about the small, we need to start at the big….