in Microservices using DDD, Event Sourcing & CQRS Augusto Branquinho Mike Shigueru Matsumoto

Size: px
Start display at page:

Download "in Microservices using DDD, Event Sourcing & CQRS Augusto Branquinho Mike Shigueru Matsumoto"

Transcription

1 in Microservices using DDD, Event Sourcing & CQRS Augusto Branquinho Mike Shigueru Matsumoto

2 1. Real Wave Modules Marketing Sales Care Technical stack Frontend Integration Backend Payments Insights Integration Information

3 2. Kotlin Designed by Jetbrains Kotlin in production: Google, Pivotal, Uber, Atlassian, Coursera, etc Statically typed Modern Drastically reduce the boilerplate Java, Android Javascript Native

4 2. Kotlin Data Class tostring equals hashcode copy properties - get/set

5 2. Kotlin Lambda Java Kotlin

6 2. Kotlin Higher Order Functions

7 2. Kotlin Extension method Reified & Inline

8 2. Kotlin Smart cast Pattern matching String template Reified Operator overloading Unit and Nothing High order function Infix Internal Properties Extension methods/properties Lazy initialization, Delegation Object (singleton) Deprecated Default value Tacit programming: let, also, apply, run, with Tailrec

9 3. Event Sourcing & CQRS Event Sourcing (ES) 100% reliable logging (aka: version control) all operations on the system are stream event-oriented: nothing happens before the event being committed it is possible to rebuild all the views since the beginning of time you can build new views using the same principle events are immutable

10 3. Event Sourcing & CQRS CQRS "It's a pattern" (Greg Young) uses a different model to update (Command) and another to read (Query) Command (accept/reject) Change state Events Query (views) Are free of side effects

11 3. Event Sourcing & CQRS Motivation ES, CQRS Clients: Bank, Telecom Audit Log (query the past) Insights Multiple views (Multi-Tenant) E.g.: Catalog manager Reliable logs Offers are immutable High requests rate (millions) Decoupled views

12 3. Event Sourcing & CQRS Real Wave Microservices Command Api Query Api accept/reject query response Catalog Catalog Manager Search Offers Catalog Join Use Pay Processor

13 3. Event Sourcing & CQRS Low write latency Catalog Search High read latency Catalog Manager Catalog Processor

14 3. Event Sourcing & CQRS Code

15 3. Event Sourcing & CQRS

16 3. Event Sourcing & CQRS DDD Command Bus

17 3. Event Sourcing & CQRS Command Bus Bounded Context

18 3. Event Sourcing & CQRS Command Bus First Command Nothing was replayed yet

19 3. Event Sourcing & CQRS DDD

20 3. Event Sourcing & CQRS

21 3. Event Sourcing & CQRS Happens in the past Just accept, no logic here

22 3. Event Sourcing & CQRS Command Bus Not here yet!!!

23 3. Event Sourcing & CQRS Command Bus Replay for all past events will start for this ID before this Command executes

24 3. Event Sourcing & CQRS 1 - Replay

25 3. Event Sourcing & CQRS 1 - Replay 2 - Accepts/Rejects

26 3. Event Sourcing & CQRS 1 - Replay 2 - Accepts/Rejects 3 - Accepted

27 3. Event Sourcing & CQRS Another team maybe? Catalog Processor

28 3. Event Sourcing & CQRS

29 3. Event Sourcing & CQRS

30 3. Event Sourcing & CQRS

31 3. Event Sourcing & CQRS Catalog Search

32 3. Event Sourcing & CQRS A B F Catalog Search C D E Catalog 1 Micro Services Catalog 2 Catalog 3 Catalog n

33 3. Event Sourcing & CQRS Conclusion

34 3. Event Sourcing & CQRS Conclusion Burn down

35 3. Event Sourcing & CQRS TODO snapshots sagas Replay recovery fix inconsistency Conclusion build a new view

36 4. Kotlin, DDD, ES & CQRS Motivation Kotlin Events (immutable) (Axon) Catalog v1 Data class (boilerplate) Event Stream lambda Modern Easy to learn

37 4. Kotlin, DDD, ES & CQRS Why should you try using Kotlin?

38 4. Kotlin, DDD, ES & CQRS Sealed Class Events (Event Store Database) Pattern Matching Smart Casts Final

39 4. Kotlin, DDD, ES & CQRS Events (Event Store Database)

40 4. Kotlin, DDD, ES & CQRS Events (Event Store Database)

41 4. Kotlin, DDD, ES & CQRS Value Objects - data class Typesafe Primitive Obsession Invalid Objects Immutability

42 4. Kotlin, DDD, ES & CQRS Anemic Domain Model - kotlin extensions Only Getters / Setters Services Layers are OVER ABUSED!!!

43 5. Kotlin 102 Tests

44 5. Kotlin 102 Coroutines asynchronous programming we put the complications into libraries experimental!= unsecurity

45 5. Kotlin 102 Coroutines What's the result?

46 5. Kotlin 102 Coroutines What's the result?

47 5. Kotlin 102 Coroutines are light weight!

48 5. Kotlin 102 Coroutines are light weight!

49 5. Kotlin 102 Coroutines - async/await

50 5. Kotlin 102 Kotlin is the path to Functional Programming. Functional Programming leads to Pure Functions, Pure Functions leads to Monad and Asynchronous Programming. Asynchronous Programming leads to Reactive Programming. Master Yoda - Return of the Jedi

51 5. Kotlin 102 Functional Programming Purity (no-side effect) Referential Transparency Purity vs I/O Exceptions propagation Thread limits

52 5. Kotlin 102 Monad/Either - zkotlin

53 5. Kotlin 102 Monad - Either -> Either -> Either FOLD HELL

54 5. Kotlin 102 Either foldcompose

55 5. Kotlin 102 Either foldcompose ping-pong effect E.g. Payments Retry

56 5. Kotlin 102 Either foldcompose ping-pong effect

57 5. Kotlin 102 Either foldcompose ping-pong effect

58 5. Kotlin 102 Either, Coroutines, Extensions, zkotlin all together

59 5. Kotlin 102 Wraps I/O problems with Either<L,R>

60 5. Kotlin 102 Wraps I/O problems with Either<L,R> Remote I/O

61 5. Kotlin 102 sync {} async {}

62 5. Kotlin 102 runblocking

63 5. Kotlin 102 zkotlin Couroutines/Ext. Methods

64 5. Kotlin 102 Conclusion Kotlin & Functional Programming Purity, Referential Transparency, Immutability Higher-order functions Sugar syntax (it, ƛ as last parameter) Less boilerplate a nicer syntax to compose Either pattern Coroutines is easy to use Ready for Spring Reactor Catalog Reindex Process before Coroutines: +/- 30 m, after < 4 m

65 6. Kotlin, Java & Legacy Everything is final on Kotlin Spock Mockito

66 6. Kotlin, Java & Legacy SpringBoot - allopen final

67 6. Kotlin, Java & Legacy JPA

68 6. Kotlin, Java & Legacy Spring Data QueryDSL - Plugins (modules) Default Interface Java 8 (Kotlin ) Lambdas return - Unit

69 Conclusion Mike Shigueru Matsumoto Augusto Branquinho

70 Zup We re a fast growing company (2011), but just starting. Kevin Efrusy Accel Ventures Romero Rodrigues Buscapé Company Martin Scobari General Atlantic Silvio Genesini Silvigen Consultoria 540+ Zuppers. BH MG UI / UX / R&D / DEV São José do Rio Preto SP DEV Uberlândia MG UI / UX / R&D / DEV / SUPPORT Joinville SC R&D Ribeirão Preto SP UI/UX/DESIGN Lisboa, Portugal SALES / CONSULTING / R&D São Paulo SP SALES / CONSULTING / PMO / REQUIREMENTS UI/UX

Refactoring to Functional. Hadi Hariri

Refactoring to Functional. Hadi Hariri Refactoring to Functional Hadi Hariri Functional Programming In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs,

More information

Programming Kotlin. Familiarize yourself with all of Kotlin s features with this in-depth guide. Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI

Programming Kotlin. Familiarize yourself with all of Kotlin s features with this in-depth guide. Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI Programming Kotlin Familiarize yourself with all of Kotlin s features with this in-depth guide Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI Programming Kotlin Copyright 2017 Packt Publishing First

More information

Architecture using Functional Programming concepts < + >

Architecture using Functional Programming concepts < + > Architecture using Functional Programming concepts < + > Jorge Castillo @JorgeCastilloPr 1 2 Kotlin and Functional Programming FP means concern separation (declarative computations vs runtime execution),

More information

Introduction to Coroutines. Roman Elizarov elizarov at JetBrains

Introduction to Coroutines. Roman Elizarov elizarov at JetBrains Introduction to Coroutines Roman Elizarov elizarov at JetBrains Asynchronous programming How do we write code that waits for something most of the time? A toy problem Kotlin 1 fun requesttoken(): Token

More information

Fresh Async With Kotlin. Presented at QCon SF, 2017 /Roman JetBrains

Fresh Async With Kotlin. Presented at QCon SF, 2017 /Roman JetBrains Fresh Async With Kotlin Presented at QCon SF, 2017 /Roman Elizarov @ JetBrains Speaker: Roman Elizarov 16+ years experience Previously developed high-perf trading software @ Devexperts Teach concurrent

More information

Death Stars & River Deltas. Toward a Functional Programming Analogy for Microservices

Death Stars & River Deltas. Toward a Functional Programming Analogy for Microservices Death Stars & River Deltas Toward a Functional Programming Analogy for Microservices Hi, I m Bobby I m on the Technology Fellows team at I dislike accidental complexity bobby.calderwood@capitalone.com

More information

Kotlin for the Pragmatic Functionalist

Kotlin for the Pragmatic Functionalist Kotlin for the Pragmatic Functionalist Paco Estevez Kotlin logo: 2015-present - JetBrains KotlinConf logo: 2017 - JetBrains Kategory logo: 2017 present - The Kategory maintainers ReasonML logo: 2015 present

More information

2 years without Java or reload Android development with Kotlin.

2 years without Java or reload Android development with Kotlin. 2 years without Java or reload Android development with Kotlin KirillRozov@EPAM Who am I? Team Lead in EPAM More than 6 years in Android development Kotlin Evangelist Co-organizer GDG Minsk, Android Academy

More information

Cross-Platform Data Models and API Using grpc

Cross-Platform Data Models and API Using grpc Cross-Platform Data Models and API Using grpc Sebastian Hagedorn, Felix Lamouroux Outline 1. Motivation & Goals 2. Choosing the Right Cross-Platform Technology 3. Introduction to Protocol Buffers and grpc

More information

Managing Data at Scale: Microservices and Events. Randy linkedin.com/in/randyshoup

Managing Data at Scale: Microservices and Events. Randy linkedin.com/in/randyshoup Managing Data at Scale: Microservices and Events Randy Shoup @randyshoup linkedin.com/in/randyshoup Background VP Engineering at Stitch Fix o Combining Art and Science to revolutionize apparel retail Consulting

More information

Mike Fechner Director

Mike Fechner Director Mike Fechner Director 2 3 Consultingwerk Software Services Ltd. Independent IT consulting organization Focusing on OpenEdge and related technology Located in Cologne, Germany, subsidiaries in UK and Romania

More information

Mike Fechner, Consultingwerk Ltd.

Mike Fechner, Consultingwerk Ltd. Mike Fechner, Consultingwerk Ltd. mike.fechner@consultingwerk.de http://www.consultingwerk.de/ 2 Consultingwerk Ltd. Independent IT consulting organization Focusing on OpenEdge and related technology Located

More information

Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase. Naresh Chintalcheru

Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase. Naresh Chintalcheru Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase Naresh Chintalcheru Who is Naresh Technology professional for 18+ years Currently, Technical Architect at Cars.com Lecturer

More information

Clean Architecture Patterns, Practices, and #DevSum17

Clean Architecture Patterns, Practices, and #DevSum17 Clean Architecture Patterns, Practices, and Principles @matthewrenze #DevSum17 About Me Independent consultant Education B.S. in Computer Science (ISU) B.A. in Philosophy (ISU) Community Public Speaker

More information

Full Stack Reactive Angular 2, RxJava/JS, Vert.x, Docker

Full Stack Reactive Angular 2, RxJava/JS, Vert.x, Docker Full Stack Reactive Angular 2, RxJava/JS, Vert.x, Docker 02.03.2017 About Myself DR. ALEXANDER FRIED Chief Technology Officer 2 OUR SOLUTIONS DIGITAL ASSET MANAGEMENT Organize & Share Any File, Any Format,

More information

Full Stack Developer with Java

Full Stack Developer with Java Full Stack Developer with Java Full Stack Developer (Java) MVC, Databases and ORMs, API Backend Frontend Fundamentals - HTML, CSS, JS Unit Testing Advanced Full Stack Developer (Java) UML, Distributed

More information

JS Event Loop, Promises, Async Await etc. Slava Kim

JS Event Loop, Promises, Async Await etc. Slava Kim JS Event Loop, Promises, Async Await etc Slava Kim Synchronous Happens consecutively, one after another Asynchronous Happens later at some point in time Parallelism vs Concurrency What are those????

More information

Kotlin In Spreadshirt JavaLand,

Kotlin In Spreadshirt JavaLand, Kotlin In Practice @philipp_hauer Spreadshirt JavaLand, 13.03.18 Spreadshirt 2 Hands Up! Kotlin Features and Usage in Practice Data Classes Immutability made easy data class DesignData( val filename: String,

More information

Broken Promises.

Broken Promises. Broken Promises kiki @ lightbend @kikisworldrace Data is dangerous Microservices are usually required to cooperate to achieve some end goal. Microservices need to be able to trust each other in order to

More information

Four times Microservices: REST, Kubernetes, UI Integration, Async. Eberhard Fellow

Four times Microservices: REST, Kubernetes, UI Integration, Async. Eberhard  Fellow Four times Microservices: REST, Kubernetes, UI Integration, Async Eberhard Wolff @ewolff http://ewolff.com Fellow http://continuous-delivery-buch.de/ http://continuous-delivery-book.com/ http://microservices-buch.de/

More information

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke Going Reactive Reactive Microservices based on Vert.x JavaLand Kristian Kottke Whoami Kristian Kottke Lead Software Engineer -> iteratec Interests Software Architecture Big Data Technologies Kristian.Kottke@iteratec.de

More information

Programming Kotlin. Extracted from: Creating Elegant, Expressive, and Performant JVM and Android Applications. The Pragmatic Bookshelf

Programming Kotlin. Extracted from: Creating Elegant, Expressive, and Performant JVM and Android Applications. The Pragmatic Bookshelf Extracted from: Programming Kotlin Creating Elegant, Expressive, and Performant JVM and Android Applications This PDF file contains pages extracted from Programming Kotlin, published by the Pragmatic Bookshelf.

More information

There is no such thing as a microservice!

There is no such thing as a microservice! There is no such thing as a microservice! Chris Richardson Founder of Eventuate.io Founder of the original CloudFoundry.com Author of POJOs in Action chris@chrisrichardson.net http://microservices.io http://eventuate.io

More information

Clean Architecture Patterns, Practices, and #sddconf

Clean Architecture Patterns, Practices, and #sddconf Clean Architecture Patterns, Practices, and Principles @matthewrenze #sddconf About Me Independent consultant Education B.S. in Computer Science (ISU) B.A. in Philosophy (ISU) Community Public Speaker

More information

CQRS and Event Sourcing for Java Developers Markus Eisele

CQRS and Event Sourcing for Java Developers Markus Eisele CQRS and Event Sourcing for Java Developers Markus Eisele @myfear Agenda Classical architectures and modernization CRUD vs. CQRS A little example Wrapping it up Classical Architectures Application Server

More information

Kotlin for Android Developers

Kotlin for Android Developers Kotlin for Android Developers Learn Kotlin the easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published

More information

CASE STUDY Application Migration and optimization on AWS

CASE STUDY Application Migration and optimization on AWS CASE STUDY Application Migration and optimization on AWS Newt Global Consulting LLC. AMERICAS INDIA HQ Address: www.newtglobal.com/contactus 2018 Newt Global Consulting. All rights reserved. Referred products/

More information

Introduction to Functional Programming and Haskell. Aden Seaman

Introduction to Functional Programming and Haskell. Aden Seaman Introduction to Functional Programming and Haskell Aden Seaman Functional Programming Functional Programming First Class Functions Expressions (No Assignment) (Ideally) No Side Effects Different Approach

More information

What Mobile Development Model is Right for You?

What Mobile Development Model is Right for You? What Mobile Development Model is Right for You? An analysis of the pros and cons of Responsive Web App, Hybrid App I - Hybrid Web App, Hybrid App II - Hybrid Mixed App and Native App Contents Mobile Development

More information

Reactive Systems. Dave Farley.

Reactive Systems. Dave Farley. Reactive Systems Dave Farley http://www.davefarley.net @davefarley77 Reactive Systems 21st Century Architecture for 21st Century Problems Dave Farley http://www.davefarley.net @davefarley77 http://www.continuous-delivery.co.uk

More information

The OpenEdge Application Modernization Framework. Mike Fechner, Director, Consultingwerk Ltd.

The OpenEdge Application Modernization Framework. Mike Fechner, Director, Consultingwerk Ltd. The OpenEdge Application Modernization Framework Mike Fechner, Director, Consultingwerk Ltd. mike.fechner@consultingwerk.de http://www.consultingwerk.de/ 2 Consultingwerk Ltd. Independent IT consulting

More information

Building flexible and scalable applications

Building flexible and scalable applications Building flexible and scalable applications Using CQRS and Axon Framework Allard Buijze abu@trifork.com @allardbz Allard Buijze CTO of Trifork Amsterdam ~ 15 years of web development experience Strong

More information

Present and Future of the RhoMobile platform. Migrating legacy applications, Node.js on mobile devices right now and more

Present and Future of the RhoMobile platform. Migrating legacy applications, Node.js on mobile devices right now and more Present and Future of the RhoMobile platform Migrating legacy applications, Node.js on mobile devices right now and more Key facts about RhoMobile and Tau 2008 2011 2014 2015 2016 RhoMobile founded RhoMobile

More information

JVM ByteCode Interpreter

JVM ByteCode Interpreter JVM ByteCode Interpreter written in Haskell (In under 1000 Lines of Code) By Louis Jenkins Presentation Schedule ( 15 Minutes) Discuss and Run the Virtual Machine first

More information

Making Sense of your Data

Making Sense of your Data Making Sense of your Data Building A Custom DataSource for Grafana with Vert.x Gerald Mücke DevCon5 GmbH @gmuecke About me 3 IT Consultant & Java Specialist at DevCon5 (CH) Focal Areas Tool-assisted quality

More information

Introduction to reactive programming. Jonas Chapuis, Ph.D.

Introduction to reactive programming. Jonas Chapuis, Ph.D. Introduction to reactive programming Jonas Chapuis, Ph.D. Reactive programming is an asynchronous programming paradigm oriented around data flows and the propagation of change wikipedia Things happening

More information

Nevin Dong 董乃文 Principle Technical Evangelist Microsoft Cooperation

Nevin Dong 董乃文 Principle Technical Evangelist Microsoft Cooperation Nevin Dong 董乃文 Principle Technical Evangelist Microsoft Cooperation Microservices Autonomous API Gateway Events Service Discovery Circuit Breakers Commands Aggregates Bounded Context Event Bus Domain Events

More information

Making Sense of your Data BUILDING A CUSTOM MONGODB DATASOURCE FOR GRAFANA WITH VERTX

Making Sense of your Data BUILDING A CUSTOM MONGODB DATASOURCE FOR GRAFANA WITH VERTX 1 Making Sense of your Data BUILDING A CUSTOM MONGODB DATASOURCE FOR GRAFANA WITH VERTX About me 2 IT Consultant & Java Specialist at DevCon5 (CH) Focal Areas Tool-assisted quality assurance Performance

More information

{ REST } vs. Battle of API s

{ REST } vs. Battle of API s { REST } vs Battle of API s Software Engineer at Sensedia Who am I? MBA in java projects Java and microservice enthusiastic Microservices Agenda REST grpc Demo Questions Moving to Microservices Monolith

More information

Reactive Java: Promises and Streams with Reakt. Geoff Chandler and Rick Hightower

Reactive Java: Promises and Streams with Reakt. Geoff Chandler and Rick Hightower Reactive Java: Promises and Streams with Reakt Geoff Chandler and Rick Hightower What is Reakt in 30 seconds! Reakt General purpose library for callback coordination and streams Implements JavaScript

More information

Microservices with Kafka Ecosystem. Guido Schmutz

Microservices with Kafka Ecosystem. Guido Schmutz Microservices with Kafka Ecosystem Guido Schmutz @gschmutz doag2017 Guido Schmutz Working at Trivadis for more than 20 years Oracle ACE Director for Fusion Middleware and SOA Consultant, Trainer Software

More information

Kotlin, Start? Start! (pluu) Android Developer GDG Korea Android Organizer

Kotlin, Start? Start! (pluu) Android Developer GDG Korea Android Organizer Kotlin, Start? Start! (pluu) Android Developer GDG Korea Android Organizer Agenda Kotlin Overview Kotlin?? Basic fun main(args: Array): Unit { println("hello, world!") Basic Function Keyword

More information

Design Micro Service Architectures the Right Way

Design Micro Service Architectures the Right Way Design Micro Service Architectures the Right Way Michael Bryzek mike@flow.io / @mbryzek Cofounder / CTO Flow Cofounder / ex-cto Gilt A personal story Could you change this URL from https://foo.com/latest/bar.js

More information

Design Patterns. Dr. Rania Khairy. Software Engineering and Development Tool

Design Patterns. Dr. Rania Khairy. Software Engineering and Development Tool Design Patterns What are Design Patterns? What are Design Patterns? Why Patterns? Canonical Cataloging Other Design Patterns Books: Freeman, Eric and Elisabeth Freeman with Kathy Sierra and Bert Bates.

More information

Architekturen für die Cloud

Architekturen für die Cloud Architekturen für die Cloud Eberhard Wolff Architecture & Technology Manager adesso AG 08.06.11 What is Cloud? National Institute for Standards and Technology (NIST) Definition On-demand self-service >

More information

Using AWS to Build a Large Scale Dockerized Microservices Architecture. Dr. Oliver Wahlen moovel Group GmbH Frankfurt, 30.

Using AWS to Build a Large Scale Dockerized Microservices Architecture. Dr. Oliver Wahlen moovel Group GmbH Frankfurt, 30. Using AWS to Build a Large Scale Dockerized Microservices Architecture Dr. Oliver Wahlen moovel Group GmbH Frankfurt, 30. Juni 2016 The moovel Group GmbH Our vision is an ecosystem that simplifies mobility

More information

Open Source Library Developer & IT Pro

Open Source Library Developer & IT Pro Open Source Library Developer & IT Pro Databases LEV 5 00:00:00 NoSQL/MongoDB: Buildout to Going Live INT 5 02:15:11 NoSQL/MongoDB: Implementation of AngularJS INT 2 00:59:55 NoSQL: What is NoSQL INT 4

More information

Asynchronous I/O: A Case Study in Python

Asynchronous I/O: A Case Study in Python Asynchronous I/O: A Case Study in Python SALEIL BHAT A library for performing await -style asynchronous socket I/O was written in Python. It provides an event loop, as well as a set of asynchronous functions

More information

Microservices on AWS. Matthias Jung, Solutions Architect AWS

Microservices on AWS. Matthias Jung, Solutions Architect AWS Microservices on AWS Matthias Jung, Solutions Architect AWS Agenda What are Microservices? Why Microservices? Challenges of Microservices Microservices on AWS What are Microservices? What are Microservices?

More information

Web Applications. Software Engineering 2017 Alessio Gambi - Saarland University

Web Applications. Software Engineering 2017 Alessio Gambi - Saarland University Web Applications Software Engineering 2017 Alessio Gambi - Saarland University Based on the work of Cesare Pautasso, Christoph Dorn, Andrea Arcuri, and others ReCap Software Architecture A software system

More information

COPYRIGHTED MATERIAL CONTENTS PART I: THE PRINCIPLES AND PRACTICES OF DOMAIN DRIVEN DESIGN

COPYRIGHTED MATERIAL CONTENTS PART I: THE PRINCIPLES AND PRACTICES OF DOMAIN DRIVEN DESIGN INTRODUCTION xxxv PART I: THE PRINCIPLES AND PRACTICES OF DOMAIN DRIVEN DESIGN CHAPTER 1: WHAT IS DOMAIN DRIVEN DESIGN? 3 The Challenges of Creating Software for Complex Problem Domains 4 Code Created

More information

Datacenter replication solution with quasardb

Datacenter replication solution with quasardb Datacenter replication solution with quasardb Technical positioning paper April 2017 Release v1.3 www.quasardb.net Contact: sales@quasardb.net Quasardb A datacenter survival guide quasardb INTRODUCTION

More information

DDD Where s the value and what s in it for me?

DDD Where s the value and what s in it for me? DDD Where s the value and what s in it for me? Dino Esposito JetBrains dino.esposito@jetbrains.com @despos facebook.com/naa4e What does a software architect do? Design software driven by the requirements

More information

Java SE 8 Programming

Java SE 8 Programming Oracle University Contact Us: +52 1 55 8525 3225 Java SE 8 Programming Duration: 5 Days What you will learn This Java SE 8 Programming training covers the core language features and Application Programming

More information

High Availability Distributed (Micro-)services. Clemens Vasters Microsoft

High Availability Distributed (Micro-)services. Clemens Vasters Microsoft High Availability Distributed (Micro-)services Clemens Vasters Microsoft Azure @clemensv ice Microsoft Azure services I work(-ed) on. Notification Hubs Service Bus Event Hubs Event Grid IoT Hub Relay Mobile

More information

Achieving Continuous Delivery - Micro Services. - Vikram Gadang

Achieving Continuous Delivery - Micro Services. - Vikram Gadang Achieving Continuous Delivery - Micro Services - Vikram Gadang Agenda Starting point Observations and lessons learned Architecting for CD Build pipeline strategy Testing strategy Deployment strategy State

More information

Reactive Programming with Vert.x

Reactive Programming with Vert.x Reactive Programming with Vert.x Embrace asynchronous to build responsive systems Clement Escoffier Principal Software Engineer, Red Hat Reactive The new gold rush? Reactive system, reactive manifesto,

More information

MySQL HA Solutions Selecting the best approach to protect access to your data

MySQL HA Solutions Selecting the best approach to protect access to your data MySQL HA Solutions Selecting the best approach to protect access to your data Sastry Vedantam sastry.vedantam@oracle.com February 2015 Copyright 2015, Oracle and/or its affiliates. All rights reserved

More information

IBM s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM s sole discretion.

IBM s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM s sole discretion. Please note Copyright 2018 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM IBM s statements

More information

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin,

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin, To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry Tony Erwin, aerwin@us.ibm.com Agenda Origins of the Bluemix UI Demons of the Monolith Slaying Demons with

More information

Managing data consistency in a microservice architecture using Sagas

Managing data consistency in a microservice architecture using Sagas Managing data consistency in a microservice architecture using Sagas Chris Richardson Founder of eventuate.io Author of Microservices Patterns Founder of the original CloudFoundry.com Author of POJOs in

More information

Huge Codebases Application Monitoring with Hystrix

Huge Codebases Application Monitoring with Hystrix Huge Codebases Application Monitoring with Hystrix 30 Jan. 2016 Roman Mohr Red Hat FOSDEM 2016 1 About Me Roman Mohr Software Engineer at Red Hat Member of the SLA team in ovirt Mail: rmohr@redhat.com

More information

KOTLIN/NATIVE + CLANG, TRAVEL NOTES NIKOLAY IGOTTI, JETBRAINS

KOTLIN/NATIVE + CLANG, TRAVEL NOTES NIKOLAY IGOTTI, JETBRAINS KOTLIN/NATIVE + CLANG, TRAVEL NOTES NIKOLAY IGOTTI, JETBRAINS KOTLIN IS NOT JUST AN ISLAND KOTLIN LANGUAGE FP and OOP language Type inference, smart casts, nullability checks Generics (erased, with reification

More information

Java SE 8 Programming

Java SE 8 Programming Java SE 8 Programming Training Calendar Date Training Time Location 16 September 2019 5 Days Bilginç IT Academy 28 October 2019 5 Days Bilginç IT Academy Training Details Training Time : 5 Days Capacity

More information

Microservices Implementations not only with Java. Eberhard Wolff Fellow

Microservices Implementations not only with Java. Eberhard Wolff Fellow Microservices Implementations not only with Java Eberhard Wolff http://ewolff.com @ewolff Fellow http://continuous-delivery-buch.de/ http://continuous-delivery-book.com/ http://microservices-buch.de/ http://microservices-book.com/

More information

The Road to Istio: How IBM, Google and Lyft Joined Forces to Simplify Microservices

The Road to Istio: How IBM, Google and Lyft Joined Forces to Simplify Microservices The Road to Istio: How IBM, Google and Lyft Joined Forces to Simplify Microservices Dr. Tamar Eilam IBM Fellow @ Watson Research Center, NY eilamt@us.ibm.com @tamareilam The Evolution of Principles (2004-2018)

More information

Please give me your feedback

Please give me your feedback #HPEDiscover Please give me your feedback Session ID: B4385 Speaker: Aaron Spurlock Use the mobile app to complete a session survey 1. Access My schedule 2. Click on the session detail page 3. Scroll down

More information

Background Type Classes (1B) Young Won Lim 6/28/18

Background Type Classes (1B) Young Won Lim 6/28/18 Background Type Classes (1B) Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

Our Ba'le Against Technical Debt GeekCamp 2017

Our Ba'le Against Technical Debt GeekCamp 2017 Our Ba'le Against Technical Debt GeekCamp 2017 Ifnu, July, 15th 2017 Who am I? Ifnu Bima Computer Science IPB & MBA School of Bussiness Management ITB Join Blibli.com in 2012 Java & JavaScript Developer

More information

Developer Experience

Developer Experience Developer Experience Max Yekaterynenko Director of Community Engineering @maksek_ua Discover Install Design Develop Integrate Deploy Engage Maintain Monetize Discover Install Design Develop Integrate Deploy

More information

Kotlin for Android Developers

Kotlin for Android Developers Kotlin for Android Developers Learn Kotlin the easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published

More information

Ten interesting features of Google s Angular Project

Ten interesting features of Google s Angular Project Ten interesting features of Google s Angular Project - 1 Ten interesting features of Google s Angular Project Copyright Clipcode Ltd 2018 All rights reserved Ten interesting features of Google s Angular

More information

Microservices Architekturen aufbauen, aber wie?

Microservices Architekturen aufbauen, aber wie? Microservices Architekturen aufbauen, aber wie? Constantin Gonzalez, Principal Solutions Architect glez@amazon.de, @zalez 30. Juni 2016 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

More information

Docker and Oracle Everything You Wanted To Know

Docker and Oracle Everything You Wanted To Know Docker and Oracle Everything You Wanted To Know June, 2017 Umesh Tanna Principal Technology Sales Consultant Oracle Sales Consulting Centers(SCC) Bangalore Safe Harbor Statement The following is intended

More information

Introduction to Functional Programming in Haskell 1 / 56

Introduction to Functional Programming in Haskell 1 / 56 Introduction to Functional Programming in Haskell 1 / 56 Outline Why learn functional programming? The essence of functional programming What is a function? Equational reasoning First-order vs. higher-order

More information

Yahoo Search ATS Plugins. Daniel Morilha and Scott Beardsley

Yahoo Search ATS Plugins. Daniel Morilha and Scott Beardsley Yahoo Search ATS Plugins Daniel Morilha and Scott Beardsley About Us We have a HUGE team! Serves traffic which generates ~40% of Yahoo s $$$ We run both Search Ingress and Egress Maintain around a dozen

More information

The Reactive Landscape Clement Escoffier, Vert.x Core Developer, Red Hat

The Reactive Landscape   Clement Escoffier, Vert.x Core Developer, Red Hat The Reactive Landscape http://bit.ly/jfokus-reactive Clement Escoffier, Vert.x Core Developer, Red Hat Reactive all the things??? Elasticity Manifesto Actor System Asynchrony Programming Events 2 Message

More information

Domain Driven Design Kevin van der Vlist

Domain Driven Design Kevin van der Vlist Domain Driven Design Kevin van der Vlist kvdvlist@sogyo.nl Objectives 1. Show the usefullnes of DDD 2/27 Objectives 1. Show the usefullnes of DDD 2. Warn you about a two headed monster 2/27 Objectives

More information

TIBCO Spotfire Statement of Direction. Spotfire Product Management

TIBCO Spotfire Statement of Direction. Spotfire Product Management TIBCO Spotfire Statement of Direction Spotfire Product Management CONFIDENTIALITY The following information is confidential information of TIBCO Software Inc. Use, duplication, transmission, or republication

More information

Java SE 8 Programming

Java SE 8 Programming Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 67863102 Java SE 8 Programming Duration: 5 Days What you will learn This Java SE 8 Programming training covers the core language features

More information

Implementing Microservices Tracing with Spring Cloud and Zipkin

Implementing Microservices Tracing with Spring Cloud and Zipkin Implementing Microservices Tracing with Spring Cloud and Zipkin Marcin Grzejszczak, @mgrzejszczak 1 2017 Pivotal About me Spring Cloud developer at Pivotal Working mostly on Spring Cloud Sleuth Spring

More information

Functional programming in C#

Functional programming in C# Functional programming in C# A quick approach to another paradigm Nacho Iborra IES San Vicente This work is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License.

More information

monolith to micro-services? event sourcing can help Doug

monolith to micro-services? event sourcing can help Doug monolith to micro-services? event sourcing can help Doug legacy Client Culture Amp (2012-2015) Rails App (Murmur) Read-write Query Server Read-only DB Our journey Our meandering path to CQRS & event sourcing

More information

"Stupid Easy" Scaling Tweaks and Settings. AKA Scaling for the Lazy

Stupid Easy Scaling Tweaks and Settings. AKA Scaling for the Lazy "Stupid Easy" Scaling Tweaks and Settings AKA Scaling for the Lazy I'm Lazy (and proud of it) The Benefits of "Lazy" Efficiency is king Dislike repetition Avoid spending a lot of time on things A Lazy

More information

Expert Guidance on Migrating from Magento 1 to Magento 2

Expert Guidance on Migrating from Magento 1 to Magento 2 Expert Guidance on Migrating from Magento 1 to Magento 2 Gordon Knoppe Business Solutions Architect, ECG James Cowie Technical Architect, ECG Expert Consulting Group ECG Charter: To provide expert insight,

More information

WHAT IS NEW FOR DEVS IN SP 2013

WHAT IS NEW FOR DEVS IN SP 2013 WHAT IS NEW FOR DEVS IN SP 2013 ADIS JUGO, PLANB. SHAREPOINT AND PROJECT CONFERENCE ADRIATICS ZAGREB, 11/28/2012 ponsors Agenda Apps Search Workflow WCM Mobile Other APPS In its most basic form, an app

More information

Reactive Microservices Architecture on AWS

Reactive Microservices Architecture on AWS Reactive Microservices Architecture on AWS Sascha Möllering Solutions Architect, @sascha242, Amazon Web Services Germany GmbH Why are we here today? https://secure.flickr.com/photos/mgifford/4525333972

More information

Event Sourcing. Intro & Challenges

Event Sourcing. Intro & Challenges Event Sourcing Intro & Challenges Michael Plöd innoq Principal Consultant @bitboss Most current systems only store the current state Classical Architecture IncidentRestController IncidentBusinessService

More information

Review. Fundamentals of Website Development. Web Extensions Server side & Where is your JOB? The Department of Computer Science 11/30/2015

Review. Fundamentals of Website Development. Web Extensions Server side & Where is your JOB? The Department of Computer Science 11/30/2015 Fundamentals of Website Development CSC 2320, Fall 2015 The Department of Computer Science Review Web Extensions Server side & Where is your JOB? 1 In this chapter Dynamic pages programming Database Others

More information

Reaktive Anwendungen mit RxJava. Dr. Michael Menzel

Reaktive Anwendungen mit RxJava. Dr. Michael Menzel Reaktive Anwendungen mit RxJava Dr. Michael Menzel DIGITALIZATION DIGITALIZATION DIGITALIZATION DIGITALIZATION REACTIVE ARCHITECTURES How can we build highly interactive (responsive) systems, which are

More information

An introduction to CQRS and Axon Framework

An introduction to CQRS and Axon Framework An introduction to CQRS and Axon Framework Finance s forgotten treasure Allard Buijze allard.buijze@trifork.nl Allard Buijze! Software Architect at Trifork Amsterdam! ~ 15 years of web development experience!

More information

C# Programming in the.net Framework

C# Programming in the.net Framework 50150B - Version: 2.1 04 May 2018 C# Programming in the.net Framework C# Programming in the.net Framework 50150B - Version: 2.1 6 days Course Description: This six-day instructor-led course provides students

More information

Never again offline?!? Experiences on the outstanding role of data in a large-scale mobile app ecosystem

Never again offline?!? Experiences on the outstanding role of data in a large-scale mobile app ecosystem Never again offline?!? Experiences on the outstanding role of data in a large-scale mobile app ecosystem Dr. Matthias Naab, Fraunhofer IESE 1 Dr. Ralf Carbon, John Deere ETIC Susanne Braun, Fraunhofer

More information

Riccardo Tempesta. MageSpecialist

Riccardo Tempesta. MageSpecialist Riccardo Tempesta CTO @ MageSpecialist Magento Community Maintainer Magento Community Contributor Magento 1 Certified Developer Magento 2 Professional Developer Beyond Software Development: Challenges

More information

Asynchronous OSGi: Promises for the masses. Tim Ward.

Asynchronous OSGi: Promises for the masses. Tim Ward. Asynchronous OSGi: Promises for the masses Tim Ward http://www.paremus.com info@paremus.com Who is Tim Ward? @TimothyWard Senior Consulting Engineer, Trainer and Architect at Paremus 5 years at IBM developing

More information

Building a Scalable Architecture for Web Apps - Part I (Lessons Directi)

Building a Scalable Architecture for Web Apps - Part I (Lessons Directi) Intelligent People. Uncommon Ideas. Building a Scalable Architecture for Web Apps - Part I (Lessons Learned @ Directi) By Bhavin Turakhia CEO, Directi (http://www.directi.com http://wiki.directi.com http://careers.directi.com)

More information

Kotlin In Spreadshirt. JUG Saxony Day, Spreadshirt

Kotlin In Spreadshirt. JUG Saxony Day, Spreadshirt Kotlin In Practice @philipp_hauer JUG Saxony Day, 29.09.17 2 Hands Up! Kotlin Features and Usage in Practice References Immutable and mutable References val id = 1 id = 2 var id2 = 1 id2 = 2 5 Data Classes

More information

ACID Is So Yesterday: Maintaining Data Consistency with Sagas

ACID Is So Yesterday: Maintaining Data Consistency with Sagas ACID Is So Yesterday: Maintaining Data Consistency with Sagas Chris Richardson Founder of Eventuate.io Founder of the original CloudFoundry.com Author of POJOs in Action chris@chrisrichardson.net http://eventuate.io

More information

Matt Meteor Development Group

Matt Meteor Development Group A R C H I T E C T I N G M O D E R N J A V A S C R I P T A P P L I C A T I O N S Matt DeBergalis @debergalis Meteor Development Group www.meteor.com github.com/meteor/meteor Honeywell https://www.openroad.ca/portfolio/honeywell

More information

clojure & cfml sitting in a tree sean corfield world singles

clojure & cfml sitting in a tree sean corfield world singles clojure & cfml sitting in a tree sean corfield world singles 1 how to go faster (with (parentheses)) sean corfield world singles 2 world singles 3 world singles founded in 2001 internet dating platform

More information