SlideShare a Scribd company logo
1 of 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
                                      Conļ¬g                  Call Centre               Marketing                Reporting
                                     Application             Application               Application              Application


                                                                        Account
                      A / E Services               Conļ¬g 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


                                                       Conļ¬g and
                      Batch Lifecyle                   Metadata                                            Product                     Reporting
                        services                        servces                    Rules Engine                                        Services
                     Batch Interface
                                                                                                          Rules Conļ¬g
                                                        Conļ¬g /                                            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
                                   Conļ¬g                  Call Centre               Marketing                Reporting
                                  Application             Application               Application              Application


                                                                     Account
                   A / E Services               Conļ¬g 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


                                                    Conļ¬g and
                   Batch Lifecyle                   Metadata                                            Product                     Reporting
                     services                        servces                    Rules Engine                                        Services
                  Batch Interface
                                                                                                       Rules Conļ¬g
                                                     Conļ¬g /                                            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
                                       Conļ¬g                  Call Centre               Marketing                Reporting
                                      Application             Application               Application              Application


                                                                         Account
                       A / E Services               Conļ¬g 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


                                                        Conļ¬g and
                       Batch Lifecyle                   Metadata                                            Product                     Reporting
                         services                        servces                    Rules Engine                                        Services
                      Batch Interface
                                                                                                           Rules Conļ¬g
                                                         Conļ¬g /                                            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
                                   Conļ¬g                  Call Centre               Marketing                Reporting
                                  Application             Application               Application              Application


                                                                     Account
                   A / E Services               Conļ¬g 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


                                                    Conļ¬g and
                   Batch Lifecyle                   Metadata                                            Product                     Reporting
                     services                        servces                    Rules Engine                                        Services
                  Batch Interface
                                                                                                       Rules Conļ¬g
                                                     Conļ¬g /                                            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
            ļ¬le                                                           User
      received    Validate ļ¬le   Validate Line                         Created
                   structure          Item               Create User




                                                        Link Account

                                                                                 Send results
                                                                                     ļ¬le
                                      Invalid
                                        User     Notify Sys
                                                  Admin




              and noticed something funnyā€¦
Batch                      User                Fulļ¬lment                   Account
      monitoring                Monitoring            Monitoring                 Monitoring




                                         Monitoring
                                                                                                                         Events
                                          Services




     Batch
     Event                                                                                                                             Fulļ¬lment
                                           User
                                                                                                                                        Event
                                         Collection


  Triggering                                                                                                                           Triggering
                   Triggering                         Triggering       Triggering       Triggering        Triggering



   Batch                                                                                                                   Bank
                                      Triggering                                                                                       Fulļ¬lment
 Processing                                                         Member                                                Account
                                                                                                     Rules Engine                       Service
  Service                                                           Service                                               Service




                                                                                                                           Bank
File Structure                                                       Address                         Rules Engine                      fulļ¬lment
                                                                                                                          Account
  Validation                                                        Validation
                                                                                                                          Creation
                                    Ad-hoc
                                    Users

Results File                                                          User                                                 Bank        fulļ¬lment
 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
                                                      Fulļ¬lment
                                                      Monitoring
                                                                                  Account
                                                                                 Monitoring                         Monitoring

                                         Monitoring
                                          Services




     Batch
     Event                                                                                                                               Fulļ¬lment
                                           User
                                                                                                                                          Event
                                         Collection


  Triggering                                                                                                                             Triggering
                   Triggering                         Triggering       Triggering       Triggering        Triggering



   Batch                                                                                                                    Bank
                                      Triggering                                                                                         Fulļ¬lment
 Processing                                                         Member                                                 Account
                                                                                                     Rules Engine                         Service
  Service                                                           Service                                                Service




                                                                                                                            Bank
File Structure                                                       Address                         Rules Engine                        fulļ¬lment
                                                                                                                           Account
  Validation                                                        Validation
                                                                                                                           Creation
                                    Ad-hoc
                                    Users

Results File                                                          User                                                  Bank         fulļ¬lment
 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                            Fulļ¬lment
                        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                            Fulļ¬lment
                     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                            Fulļ¬lment
                     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

More Related Content

What's hot

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
Ā 
Cloud-native Data
Cloud-native DataCloud-native Data
Cloud-native Datacornelia davis
Ā 
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
Ā 

What's hot (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
Ā 

Viewers also liked

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
Ā 

Viewers also liked (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 to 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
Ā 
Best team presentation slides
Best team presentation slidesBest team presentation slides
Best team presentation slidesStanford University
Ā 
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
Ā 
Sap overview
Sap overviewSap overview
Sap overview87sayandas
Ā 
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
Ā 
Gusto Research Presentation
Gusto Research PresentationGusto Research Presentation
Gusto Research PresentationGusto Research ltd
Ā 
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 to 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
Ā 

Recently uploaded

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
Ā 
Integration and Automation in Practice: CI/CD in MuleĀ Integration and Automat...
Integration and Automation in Practice: CI/CD in MuleĀ Integration and Automat...Integration and Automation in Practice: CI/CD in MuleĀ Integration and Automat...
Integration and Automation in Practice: CI/CD in MuleĀ Integration and Automat...Patryk Bandurski
Ā 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
Ā 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
Ā 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
Ā 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
Ā 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
Ā 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
Ā 
Bun (KitWorks Team Study ė…øė³„ė§ˆė£Ø ė°œķ‘œ 2024.4.22)
Bun (KitWorks Team Study ė…øė³„ė§ˆė£Ø ė°œķ‘œ 2024.4.22)Bun (KitWorks Team Study ė…øė³„ė§ˆė£Ø ė°œķ‘œ 2024.4.22)
Bun (KitWorks Team Study ė…øė³„ė§ˆė£Ø ė°œķ‘œ 2024.4.22)Wonjun Hwang
Ā 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
Ā 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
Ā 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
Ā 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
Ā 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
Ā 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
Ā 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
Ā 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
Ā 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
Ā 

Recently uploaded (20)

Hot Sexy call girls in Panjabi Bagh šŸ” 9953056974 šŸ” Delhi escort Service
Hot Sexy call girls in Panjabi Bagh šŸ” 9953056974 šŸ” Delhi escort ServiceHot Sexy call girls in Panjabi Bagh šŸ” 9953056974 šŸ” Delhi escort Service
Hot Sexy call girls in Panjabi Bagh šŸ” 9953056974 šŸ” Delhi escort Service
Ā 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Ā 
Integration and Automation in Practice: CI/CD in MuleĀ Integration and Automat...
Integration and Automation in Practice: CI/CD in MuleĀ Integration and Automat...Integration and Automation in Practice: CI/CD in MuleĀ Integration and Automat...
Integration and Automation in Practice: CI/CD in MuleĀ Integration and Automat...
Ā 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Ā 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
Ā 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Ā 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
Ā 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Ā 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
Ā 
Bun (KitWorks Team Study ė…øė³„ė§ˆė£Ø ė°œķ‘œ 2024.4.22)
Bun (KitWorks Team Study ė…øė³„ė§ˆė£Ø ė°œķ‘œ 2024.4.22)Bun (KitWorks Team Study ė…øė³„ė§ˆė£Ø ė°œķ‘œ 2024.4.22)
Bun (KitWorks Team Study ė…øė³„ė§ˆė£Ø ė°œķ‘œ 2024.4.22)
Ā 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Ā 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Ā 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
Ā 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Ā 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Ā 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
Ā 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Ā 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Ā 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
Ā 

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 Conļ¬g Call Centre Marketing Reporting Application Application Application Application Account A / E Services Conļ¬g 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 Conļ¬g and Batch Lifecyle Metadata Product Reporting services servces Rules Engine Services Batch Interface Rules Conļ¬g Conļ¬g / 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 Conļ¬g Call Centre Marketing Reporting Application Application Application Application Account A / E Services Conļ¬g 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 Conļ¬g and Batch Lifecyle Metadata Product Reporting services servces Rules Engine Services Batch Interface Rules Conļ¬g Conļ¬g / 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 Conļ¬g Call Centre Marketing Reporting Application Application Application Application Account A / E Services Conļ¬g 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 Conļ¬g and Batch Lifecyle Metadata Product Reporting services servces Rules Engine Services Batch Interface Rules Conļ¬g Conļ¬g / 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 Conļ¬g Call Centre Marketing Reporting Application Application Application Application Account A / E Services Conļ¬g 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 Conļ¬g and Batch Lifecyle Metadata Product Reporting services servces Rules Engine Services Batch Interface Rules Conļ¬g Conļ¬g / 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 ļ¬le User received Validate ļ¬le Validate Line Created structure Item Create User Link Account Send results ļ¬le Invalid User Notify Sys Admin and noticed something funnyā€¦
  • 26. Batch User Fulļ¬lment Account monitoring Monitoring Monitoring Monitoring Monitoring Events Services Batch Event Fulļ¬lment User Event Collection Triggering Triggering Triggering Triggering Triggering Triggering Triggering Batch Bank Triggering Fulļ¬lment Processing Member Account Rules Engine Service Service Service Service Bank File Structure Address Rules Engine fulļ¬lment Account Validation Validation Creation Ad-hoc Users Results File User Bank fulļ¬lment 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 Fulļ¬lment Monitoring Account Monitoring Monitoring Monitoring Services Batch Event Fulļ¬lment User Event Collection Triggering Triggering Triggering Triggering Triggering Triggering Triggering Batch Bank Triggering Fulļ¬lment Processing Member Account Rules Engine Service Service Service Service Bank File Structure Address Rules Engine fulļ¬lment Account Validation Validation Creation Ad-hoc Users Results File User Bank fulļ¬lment 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 Fulļ¬lment 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 Fulļ¬lment 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 Fulļ¬lment 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

Editor's Notes

  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ā€¦.