O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
@aahoogendoorn
GROWING A MICROSERVICES
LANDSCAPE (WITH SMART USE CASES)
Sander Hoogendoorn
Independent dad, mentor, traine...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
2Sander Hoogendoorn
Me i...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
4On being a developer...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
5Agenda
 Monoliths
 Mi...
@aahoogendoorn
MONOLITHS
Hard to deliver, even harder to test and impossible to maintain
@aahoogendoorn
THE DEPENDENCIES WILL KILL YOU
@aahoogendoorn
MICROSERVICES
Beyond the hype?
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
10Microservices. Beyond ...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
11Microservices. Beyond ...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
12Gartner hype cycle
@aahoogendoorn
MICROSERVICES
The clear benefits
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
14
In short, the microse...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
15Microservices. Scalabi...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
16Microservices. Polyglo...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
17Microservices. Promise...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
18Microservices. But…
 ...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
19Microservices. Buildin...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
20Microservices. Pipelin...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
21Microservices. Pipelin...
@aahoogendoorn
ARE MICROSERVICES
A STAIRWAY TO HEAVEN?
@aahoogendoorn
OR A HIGHWAY TO HELL?
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
FOR THE THINGS WE HAVE T...
@aahoogendoorn
A MICRO-LANDSCAPE
SOFTWARE ARCHITECTURE
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
26A major Dutch insuranc...
@aahoogendoorn
THE MICRO-LANDSCAPE
A software architecture for the near future
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
28A micro-landscape arch...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
29The new micro-landscap...
@aahoogendoorn
APPLICATIONS
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
32Micro-applications
 E...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
Presentation
Process
Dom...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
35Architecture in code
@aahoogendoorn
COMPONENTS
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
37Components
 Component...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
Service interface
Proces...
@aahoogendoorn
COMMUNICATION
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
41Communication
 Commun...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
42Standardizing communic...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
43Testing communication
@aahoogendoorn
MODEL FIRST DEVELOPMENT
Requirements in the micro-landscape
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
DOING BIG UP-FRONT DESIG...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
46Model first
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
47Requirements
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
48Processes, processes a...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
49Agile requirements. Ap...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
50Identifying scope at c...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
51Cloud level
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
52Kite level
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
53Modeling smart use cas...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
54Different levels of us...
@aahoogendoorn
MODELING APPS
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
56App smart use case mod...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
57Smart use cases in code
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
58App domain modelclass ...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
Presentation
Process
Dom...
@aahoogendoorn
MODELING COMPONENTS
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
61Component smart use ca...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
62Component smart use ca...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
63Component domain model
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
64Business rules on the ...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
Service interface
Proces...
@aahoogendoorn
MODEL FIRST DEVELOPMENT
Bringing it all together
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
69Smart use cases
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
70Identifying reuse
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
72The smart use case lif...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
73Smart use case life cy...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
74Lifecycle on a board
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
75Definition of Done
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
76Writing smart use case...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
77Analysis & Design. Wir...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
78Writing smart use case...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
79Test Design. Testing s...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
80Test scenarios for a s...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
81Testing a smart use ca...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
82Writing smart use case...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
83Building code. Twitter...
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
85Shared libraries?
@aahoogendoorn
(SOME) RECOMMANDATIONS
AND CONSIDERATIONS
MICROSERVICES USING SMART USE CASES
©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
87Minimal viable product
@aahoogendoorn
FIRST DO IT
THEN DO IT RIGHT
THEN DO IT BETTER
@aahoogendoorn
COMMUNICATION
VIA REST IS NOT
AS EASY AS IT PROMISES
@aahoogendoorn
GO WITH THE FLOW…
@aahoogendoorn
ALLOW THE TEAM TO LEARN…
@aahoogendoorn
AND HAVE FUN
@aahoogendoorn
www.sanderhoogendoorn.com
www.smartusecase.com
www.speedbird9.com
sander@ditisagile.nl
@aahoogendoorn
REFER...
Próximos SlideShares
Carregando em…5
×

Growing a microservices landscape (with smart use cases)

Microservices and microservices architecture are the next hype in software development. Websites and blogs are full of introducing posts, the first books are being written and the first conferences organized. There’s big promises of scalability, flexibility and replaceability of individual elements in your landscape. However, when you are knee deep in the mud as a software architect at an insurance, it is very hard to find help on how to design applications and components in a microservices architecture. During this talk Sander Hoogendoorn, discusses the long and winding road the insurance company where he’s acting as the lead software architect has taken to implement their business processes in a microservices landscape. Sander will show how this company is modeling requirements in a microservices landscape using smart use cases, and will explain the difficulties and the lessons learned, using many real-life examples.

  • Entre para ver os comentários

Growing a microservices landscape (with smart use cases)

  1. 1. @aahoogendoorn GROWING A MICROSERVICES LANDSCAPE (WITH SMART USE CASES) Sander Hoogendoorn Independent dad, mentor, trainer, software architect, developer Principal technology officer, global agile thoughtleader Capgemini @aahoogendoorn
  2. 2. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 2Sander Hoogendoorn Me independent..  Dad  Mentor, trainer, software architect, programmer  Books, articles, conferences Work  Principal technology officer Capgemini  Global design authority agile Capgemini  Chief technology officer insurance company Web  www.sanderhoogendoorn.com  www.smartusecase.com  www.speedbird9.com  @aahoogendoorn  sander@ditisagile.nl
  3. 3. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn
  4. 4. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 4On being a developer...
  5. 5. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 5Agenda  Monoliths  Microservices? Past the hype?  Promises  But…  From monoliths to a micro-landscape  Micro-applications  Components and microservices  Requirements in a micro-landscape  Smart use cases  Agile  Recommendations & considerations
  6. 6. @aahoogendoorn MONOLITHS Hard to deliver, even harder to test and impossible to maintain
  7. 7. @aahoogendoorn THE DEPENDENCIES WILL KILL YOU
  8. 8. @aahoogendoorn MICROSERVICES Beyond the hype?
  9. 9. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 10Microservices. Beyond the hype?
  10. 10. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 11Microservices. Beyond the hype?
  11. 11. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 12Gartner hype cycle
  12. 12. @aahoogendoorn MICROSERVICES The clear benefits
  13. 13. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 14 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. Martin Fowler
  14. 14. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 15Microservices. Scalability
  15. 15. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 16Microservices. Polyglot persistence
  16. 16. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 17Microservices. Promises  Products not projects  Scalable  Decentralized governance  Replaceable parts  High performance  Technology independent  Polyglot persistence  Easy to build  Easy to test  Easier deployment than monoliths
  17. 17. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 18Microservices. But…  What is a microservice exactly?  Or are we building nanoservices? Miniservices?  Micro-requirements  Components or services  How big is a microservice  Who owns the microservices  What technology  How to define messages  How to test microservices  How to coordinate when services run across components  How to build a deployment pipeline
  18. 18. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 19Microservices. Building a deployment pipeline Code Developer Test Test Acceptance Test Acceptance Live Code Developer Test Test Acceptance Test Acceptance Live Code Developer Test Test Acceptance Test Acceptance Live Code Developer Test Test Acceptance Test Acceptance Live
  19. 19. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 20Microservices. Pipeline hell? Code v.2 Developer Test v.2 Test v.2 Acceptance Test v.2 Acceptance v.2 Code Developer Test Test Acceptance Test Acceptance Live Test v.2 Acceptance Test v.2 Acceptance v.2 Live v.2 Developer Test Test Acceptance Test Acceptance Live Code v.3 Developer Test v.3 Live Code v.2
  20. 20. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 21Microservices. Pipeline hell? Code v.2 Developer Test v.2 Test v.2 Acceptance Test v.2 Acceptance v.2 Code Developer Test Test Acceptance Test Acceptance Live Test v.2 Acceptance Test v.2 Acceptance v.2 Live v.2 Developer Test Test Acceptance Test Acceptance Live Code v.3 Developer Test v.3 Live Code v.2
  21. 21. @aahoogendoorn ARE MICROSERVICES A STAIRWAY TO HEAVEN?
  22. 22. @aahoogendoorn OR A HIGHWAY TO HELL?
  23. 23. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn FOR THE THINGS WE HAVE TO LEARN BEFORE WE CAN DO THEM, WE LEARN BY DOING THEM Aristotle
  24. 24. @aahoogendoorn A MICRO-LANDSCAPE SOFTWARE ARCHITECTURE
  25. 25. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 26A major Dutch insurance company We have  Most functionality on an expensive mainframe  A wide variety of large systems written in Java that are hard to maintain and to test, and that are very hard to replace  Individual systems that cover large areas of functionality, usually coupled to departments  Aging technology  No mobile strategy, allowing for new business or new services to clients, and intermediaries We need to  Shorten time-to-market  Lower TCO  Uphold a fully secure systems landscape
  26. 26. @aahoogendoorn THE MICRO-LANDSCAPE A software architecture for the near future
  27. 27. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 28A micro-landscape architecture Communication architecture. The glue How do we define interfaces between apps and component? How do we arrange messaging? How do we glue together rapidly changing apps and component? Application architecture End user facing Different users, different fast evolving needs Which technology is the best for which purpose? Component architecture Components and services are evolving rapidly How do we decide which components we need? How do we deal with versioning? How do we deal with distributed processes and transactions?
  28. 28. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 29The new micro-landscape  Client thinks in business processes, so we implement business processes  Moving to a new systems landscape, consisting of micro- applications and micro-components  Requirements and documentation are modeled rather than written  Each micro-application implements a single business process  Components serve a single purpose and offers services  Each application and component has its own domain model  Applications and components will have an similar internal software architecture to facilitate ease of maintenance and allow for harvesting re-use  Communication using simple open protocols - REST
  29. 29. @aahoogendoorn APPLICATIONS
  30. 30. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 32Micro-applications  Each micro-application serves a single purpose and mostly target a single audience, either client, intermediaries, in-house or third parties  Each application implements a single business process  Micro-applications are always human facing, they have a graphical user interface  These user interfaces can be responsive web, native device or even desktop (not preferred) depending on the target audience  Current user interfaces are implemented using HTML5, JavaScript (client-side), Bootstrap (responsive UI), and JSF (server-side)
  31. 31. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn Presentation Process Domain Services Outside world Pages Grids / Panels Controls Use cases Flow Domain objects Factories / Repositories Enums / Value objects / Tupels / Reference objects Service gateways Service clients Info objects / Search objects ComponentsRelations Dossiers Intermediaries Accounts Rates
  32. 32. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 35Architecture in code
  33. 33. @aahoogendoorn COMPONENTS
  34. 34. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 37Components  Components are the workers of our software architecture  Components are fine-grained and targeted at servicing a single business purpose, such as Accounts, Relations or Rates  Components follow the Single Responsibility Principle (SRP).  Over time, components will more and more implement a micro-services architecture  Components will evolve over time  Each component exposes a set of services to the landscape
  35. 35. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn Service interface Process Domain Services Outside world Service interfaces Use cases Flow Domain objects Factories / Repositories Enums / Value objects / Reference objects Service gateways / Table gateways Service clients / Connectors Info objects / Search objects Components DatabasesRelations Dossiers Rates DB2 MongoDB
  36. 36. @aahoogendoorn COMMUNICATION
  37. 37. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 41Communication  Communication between applications and components or between components and components needs to be easy to develop, secure and fast  Communication will leverage simple, scalable and safe web protocols, such as REST  Structures from the component’s domain model can be passed between parts in the landscape, either through info objects (DTO’s) or JSON  Structures offered from producers do not necessarily have the same structure required by the consumer  Mapping or wrapping is inevitable  Be aware that neither REST nor JSON is really fully standardized
  38. 38. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 42Standardizing communication
  39. 39. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 43Testing communication
  40. 40. @aahoogendoorn MODEL FIRST DEVELOPMENT Requirements in the micro-landscape
  41. 41. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn DOING BIG UP-FRONT DESIGN IS DUMB DOING NO DESIGN IS EVEN DUMBER Dave Thomas
  42. 42. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 46Model first
  43. 43. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 47Requirements
  44. 44. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 48Processes, processes and processes Step 1 Step 2 Step 3 Step 4 Step 5 Step 6 Step 3.1 Step 3.2 Step 3.3 Step 3.4 Step 3.3.1 Step 3.3.2 Step 3.3.3 Step 3.3.4 Step 3.3.5
  45. 45. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 49Agile requirements. Approach D E F Smart Use Cases A Project Scope D Use Cases A B C Hierarchical Processes B D D Hierarchical Processes Chronological Processes Cloud Level Kite Level Sea Level Fish Level C
  46. 46. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 50Identifying scope at cloud level
  47. 47. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 51Cloud level
  48. 48. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 52Kite level
  49. 49. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 53Modeling smart use cases. Sea and fish level
  50. 50. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 54Different levels of use cases Traditional use cases Smart use cases Format Textual Visual Granularity Different Unified Estimate Hard Easy Unit of work Lousy Good Reuse Incidental Normal Traceability Possible Normal Testability Poor Good
  51. 51. @aahoogendoorn MODELING APPS
  52. 52. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 56App smart use case model
  53. 53. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 57Smart use cases in code
  54. 54. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 58App domain modelclass Domeinmodel Aanvraag «domain object» Domein Objecten::Aanvraag + AanvraagId :AanvraagId + Aanvraagstatus :Aanvraagstatus = Nieuw + Opslagdatum :LocalDate + Dossiernummer :Dossiernummer + Communicatie :Communicatie = Standaardregeling + Betaalwijze :Betaalwijze = Overschrijving + Betalingstermijn :Betalingstermijn = Maand + IBAN :IBAN + Naam rekeninghouder :String + Betaalregeling :Betaalregeling = Standaardregeling + Verzekeringnemers betalen premie :boolean + Splitsen premie :boolean + Distributiekanaal :Distributiekanaal + getRelatiesBijAanvraag() :DomainList<Relatie> + getORV() :void + isRechtstreeksBetalen() :void «business rule» + KvK of BSN verzekeringnemer verplicht() :void «domain object» Domein Objecten::Product + Naam :String + Identificatie :Productidentificatie + Ingangsdatum :LocalDate + Type :Producttype = ORV premie A «domain object» Domein Objecten::Verzekeringnemer + Premievrijstelling :boolean + Beroep :String [0..1] + Type :TypeVerzekeringnemer «business rule» + Woonadres of postbusadres verplicht() :void «domain object» Domein Objecten::Toetsing - Geslaagd :boolean - Meldingen :List<String> «domain object» Domein Objecten::Premiebetaler «domain object» Domein Objecten::Pandnemer + Volgnummer :int + Verpandingsacte :boolean + Verpandingsactedatum :LocalDate «domain object» Domein Objecten::Relatie + Achternaam :String [0..1] + Bedrijfsnaam :String [0..1] + Burgerservicenummer :Burgerservicenummer [0..1] + Email :Email [0..1] + Geboortedatum :LocalDate [0..1] + Geldig tot :LocalDate [0..1] + Geldig vanaf :LocalDate + Geslacht :Geslacht [0..1] + Klantnummer :Relatienummer + KvK nummer :KvKNummer [0..1] + Loonheffingskorting :Boolean [0..1] + Mobiel :Telefoonnummer [0..1] + Overlijdensdatum :LocalDate [0..1] + RDW nummer :RDW Nummer [0..1] + Rechtsvorm :Rechtsvorm [0..1] + Toestand :Relatietoestand + Type :Relatietype + Vast :Telefoonnummer + Voorletters :String [0..1] + Voorvoegsel :String [0..1] «domain object» Domein Objecten::Adres + Adrestype :Adrestype + Huisnummer :Huisnummer [0..1] + Huisnummertoevoeging :String + Land :Land [0..1] + Woonplaats :String [0..1] + Postcode :Postcode [0..1] + Straat :String [0..1] «domain object» Domein Objecten::ORV + Distributiekosten :Bedrag + Totale kosten :Bedrag + Verpandingsvoornemen :boolean + Standaardbegunstiging :boolean = true + getRelatiesBijProduct() :DomainList<Relatie> + getTotaleKosten() :void «business rule» + pandnemer verplicht bij verpandingsvoornemen() :void «domain object» Domein Objecten::Begunstiging + Hoedanigheid :Hoedanigheid + Volgnummer :int + Begunstigde :String «domain object» Domein Objecten::Assurantieadviseur + AANummer :AANummer + Naam :String + Voorvoegsel :String [0..1] + Achtervoegsel :String [0..1] + Telefoonnummer :Telefoonnummer [0..1] + EmailAdres :Email + Status :AA Status + Rayonnummer :Rayonnummer + Verplichtmaatchappijincasso :boolean + Schadeuitkering :Schadeuitkering + HeeftVergunningSchadeZakelijk :boolean + HeeftVergunningSchadeParticulier :boolean + HeeftVergunningSchadeInkomen :boolean + HeeftVergunningSchadeVermogen :boolean + Vergunningplicht :boolean + VergunningVermogen :boolean + getVestiging() :void + vindAdres(Adrestype) :void + getVolledigeNaam() :void + getPostbus() :void «domain object» Domein Objecten::Dossier + Dossiernummer :Dossiernummer «domain object» Domein Objecten::Portefeuille + Portefeuillenummer :Portefeuillenummer + Rekeningnummer :IBAN + NRC rekeningnummer :NRC Rekeningnummer + Incassomethode bij mutatie :InExcassotraject + Incassomethode bij prolongatie :InExcassotraject «domain object» Domein Objecten::Notitie + Titel :String + Tekst :String «domain object» Domein Objecten::Vraag + Identificatie :Vraagidentificatie + Vraagtype :Vraagtype + Vraagtekst :String + Antwoordtype :Antwoordtype + Volgorde :Rangnummer + isToelichtingVerplicht() :boolean «domain object» Domein Objecten::Clausule + Identificatie :ClausuleIdentificatie + Naamgeving :Naamgeving + Tekst :String + Optionaliteit :Optionaliteit + Ingangsdatum :LocalDate + Einddatum :LocalDate Volgnummer hier betekent rangnummer in de component Overeenkomst. «domain object» Domein Objecten::Antwoord + Code :String + Antwoordvolgorde :Rangnummer + Antwoordtekst :String + Waarde :String + ToelichtingVerplicht :boolean + GegevenAntwoord :String + GegevenToelichting :String «domain object» Domein Objecten::Voorwaarden + Code :String + NaamIntern :String + NaamExternKort :String + NaamExternLang :String + Optionaliteit :Optionaliteit + Url :URL 1 1..2 1* 1 * 1 * 1 +verpanding 0..* 11..* 0..1 1 1 1 1 1 11..* 1 1..2 * 1 1 0..1 1 1 0..1 0..1 1 1 +postbusadres 1 1 +woonadres 1 1 1..* 1 +productClausules *
  55. 55. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn Presentation Process Domain Services Outside world Pages Grids / Panels Controls Use cases Flow Domain objects Factories / Repositories Enums / Value objects / Tupels / Reference objects Service gateways Service clients Info objects / Search objects ComponentsRelations Dossiers Intermediaries Accounts Rates
  56. 56. @aahoogendoorn MODELING COMPONENTS
  57. 57. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 61Component smart use case model
  58. 58. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 62Component smart use case modelclass Aanvraag «service interface» OphalenAanvraagService «get» + Ophalen(AanvraagId) :void «service interface» AanvraagService «post» + Opslaan(String) «read» Ophalen Aanvraag Aanvragen «write» Opslaan Aanvraag «write» Deleten Aanvraag «service interface» DeleteService + Delete(AanvraagId) :void class Begunstiging «service interface» BegunstigingService «get» + BepalenBegunstiging(Productidentificatie) :BegunstigingInfo[] A (from Processen) «read» Bepalen Begunstiging Aanvragen
  59. 59. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 63Component domain model
  60. 60. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 64Business rules on the domain model
  61. 61. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn Service interface Process Domain Services Outside world Service interfaces Use cases Flow Domain objects Factories / Repositories Enums / Value objects / Reference objects Service gateways / Table gateways Service clients / Connectors Info objects / Search objects Components DatabasesRelations Dossiers Rates DB2 MongoDB
  62. 62. @aahoogendoorn MODEL FIRST DEVELOPMENT Bringing it all together
  63. 63. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 69Smart use cases
  64. 64. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 70Identifying reuse
  65. 65. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 72The smart use case life cycle Define work on use case Write test cases Generate and build use case Run test cases Adjust use case Describe use case Accept use case
  66. 66. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 73Smart use case life cycle in real life
  67. 67. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 74Lifecycle on a board
  68. 68. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 75Definition of Done
  69. 69. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 76Writing smart use cases. Using Enterprise Architect
  70. 70. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 77Analysis & Design. Wire frame with use case
  71. 71. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 78Writing smart use cases. Using Enterprise Architect Alternative flows Exception flows Basic flow
  72. 72. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 79Test Design. Testing smart use cases
  73. 73. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 80Test scenarios for a smart use case
  74. 74. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 81Testing a smart use case. Using Enterprise Architect
  75. 75. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 82Writing smart use cases. Using Enterprise Architect Fields on form with smart use cases Smart use case specific business rules and validations
  76. 76. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 83Building code. Twitter Bootstrap & JSF
  77. 77. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 85Shared libraries?
  78. 78. @aahoogendoorn (SOME) RECOMMANDATIONS AND CONSIDERATIONS
  79. 79. MICROSERVICES USING SMART USE CASES ©2014 .Sander Hoogendoorn.. All Rights Reserved@aahoogendoorn 87Minimal viable product
  80. 80. @aahoogendoorn FIRST DO IT THEN DO IT RIGHT THEN DO IT BETTER
  81. 81. @aahoogendoorn COMMUNICATION VIA REST IS NOT AS EASY AS IT PROMISES
  82. 82. @aahoogendoorn GO WITH THE FLOW…
  83. 83. @aahoogendoorn ALLOW THE TEAM TO LEARN…
  84. 84. @aahoogendoorn AND HAVE FUN
  85. 85. @aahoogendoorn www.sanderhoogendoorn.com www.smartusecase.com www.speedbird9.com sander@ditisagile.nl @aahoogendoorn REFERENCES AND QUESTIONS

×