SlideShare a Scribd company logo
1 of 170
Download to read offline
Surviving In A Microservices
Environment
Steve Pember
Principal Engineer @ Toast
Software Architecture Conf, San Jose, 2019
@svpember
@svpember
Microservice Blog Posts & Presentations
<3
What Are Microservices?
@svpember
Why Choose Microservices?
• Reduce Coupling!
• Team Autonomy
• Forced Boundaries between Functional Areas
• Right Tool for the Job
• Continuous Delivery
• Smaller codebases are easier to reason about
• Easy to replace old services
• Efficient Scaling
• Can move quickly (once you’re up and running)
Help?
This talk is not a Good Talk.
Please let me know if I missed
anything
@svpember
Topics
• Is it time for Microservices?
• Infrastructure / Operations
• Architecture
• Developer Productivity / Happiness
• People Communication
• Breaking off from the Monolith
• Random
@svpember
Topics
• Is it time for Microservices?
@svpember
Is it time for Microservices?
• … is it?
Not before 8 Engineers.
After You have known
Defined Functional Areas.
You may not be ready, and
that’s OK.
@svpember
Topics
• Is it time for Microservices?
• Infrastructure / Operations
One Microservice is Easy
One Microservice Platform is
HARD
@svpember
Infrastructure / Operations
• Do we have Centralized Logging?
Centralized Log Aggregation is
Critical to Success
@svpember
@svpember
@svpember
Infrastructure / Operations
• Do we have Centralized Logging?
• What do we use for Metrics?
@svpember
Your Infrastructure needs to
Scale along with your Platform
Your Infrastructure needs to
Scale along with your Platform
@svpember
–Johnny Appleseed
“Type a quote here.”
@svpember
Infrastructure / Operations
• Do we have Centralized Logging?
• What do we use for Metrics?
• How are our builds performed?
@svpember
Infrastructure / Operations
• Do we have Centralized Logging?
• What do we use for Metrics?
• How are our builds performed?
• When are our builds performed?
Continuous Integration!
Frequent merging provides fast
feedback. Faster Iterations.
CI should be run on each ‘main’
branch and PR commit
CI should produce some
correct Artifact
@svpember
@svpember
@svpember
Infrastructure / Operations
• Do we have Centralized Logging?
• What do we use for Metrics?
• How are our builds performed?
• When are our builds performed?
• Can our CI keep up with the the team’s build demand?
@svpember
@svpember
@svpember
Infrastructure / Operations
• Do we have Centralized Logging?
• What do we use for Metrics?
• How are our builds performed?
• When are our builds performed?
• Can our CI keep up with the the team’s build demand?
• Do we have any coding conventions or quality gates?
@svpember
@svpember
@svpember
Infrastructure / Operations
• Do we have Centralized Logging?
• What do we use for Metrics?
• How are our builds performed?
• When are our builds performed?
• Can our CI keep up with the the team’s build demand?
• Do we have any coding conventions or quality gates?
• How are our services deployed?
Continuous Deployment is your
Ultimate Goal
A Certain level of
Operational-Readiness is
required
@svpember
@svpember
@svpember
Service Mesh
• Likely don’t need in a small org with few services / Essential as you grow
• Aids in resiliency, can reroute traffic around failing nodes
• App Devs focus on building services vs wiring them up
• Sidecars can handle metric, log collection and auth between services
• Easy Canary Deploys
@svpember
Infrastructure / Operations
• Do we have Centralized Logging?
• What do we use for Metrics?
• How are our builds performed?
• When are our builds performed?
• Can our CI keep up with the the team’s build demand?
• Do we have any coding conventions or quality gates?
• How are our services deployed?
• Do we have multiple environments? How are our environments
managed?
@svpember
Goal: standup a new
environment with a
single command
@svpember
Topics
• Is it time for Microservices?
• Infrastructure / Operations
• Architecture
@svpember
Architecture
• Do we have an overall design vision?
@svpember
Architecture
• Do we have an overall design vision?
• What technologies do we use? How much freedom do we have in
choosing them?
Right Tool for the Job!
@svpember
Be wary of new adopting new
technology
Boring is Good
@svpember
Architecture
• Do we have an overall design vision?
• What technologies do we use? How much freedom do we have in choosing
them?
• How do we share code between services?
Shared Code can increase
coupling and decrease
Autonomy
@svpember
Shared code?
• Internal Commons (e.g. a custom String Utils) - OK!
• Styling, CSS - Go for it!
• Business Logic - You’re gonna have a bad time
• Domain Objects - Never!
@svpember
@svpember
Architecture
• Do we have an overall design vision?
• What technologies do we use? How much freedom do we have in choosing
them?
• How do we share code between services?
• How do we test an individual service?
Integration tests are the best tests
@svpember
@svpember
Architecture
• Do we have an overall design vision?
• What technologies do we use? How much freedom do we have in choosing
them?
• How do we share code between services?
• How do we test an individual service?
• How do we test the platform as a whole?
@svpember
End-to-End tests are Difficult
1. Reset fixture / default state data on each service’s datastore
2. Execute test by performing some user action at the edge
3. Wait for test to complete
4. Make assertions on each service (e.g. look out for unknown side effects)
5. Repeat
Consider… Not doing that.
@svpember
@svpember
Architecture
• Do we have an overall design vision?
• What technologies do we use? How much freedom do we have in choosing
them?
• How do we share code between services?
• How do we test an individual service?
• How do we test the platform as a whole?
• Overall architectural style for services?
Are there common, repeatable,
patterns?
Does everyone in the org
know?
Asynchronous, Event Driven
Communications
+
Domain Driven Design
1) Async Comms
Services that communicate
Synchronously are a
Distributed Monolith
@svpember
@svpember
Embrace Eventual Consistency
@svpember
@svpember
Decoupled Services allow for
team Autonomy
Decoupled Services scale
easily and efficiently
@svpember
@svpember
–Johnny Appleseed
“Type a quote here.”
Source: https://dzone.com/articles/distributed-sagas-for-microservices
2) Domain Driven Design
Please
Read =>
And also
=>
@svpember
Some DDD concepts
• Ubiquitous Language
• Entities
• Aggregates
• Bounded Contexts
• No Direct communications across Boundaries, communicate through some
single point of contact
@svpember
One Last Thing: Always have a
way to recover
@svpember
@svpember
Architecture
• Do we have an overall design vision?
• What technologies do we use? How much freedom do we have in choosing
them?
• How do we share code between services?
• How do we test an individual service?
• How do we test the platform as a whole?
• Overall architectural style for services?
• When do we decide to create new services?
@svpember
New Service?
• Don’t make services ‘just because’
• Don’t make CRUD services
• Look for places where Eventual Consistency is acceptable
• A service should be thought as wrapping some functional business logic, not
the domain objects inside of it
• When new functionality is proposed: does it fall within the responsibilities of an
existing service?
# of services < # of developers
@svpember
Architecture
• Do we have an overall design vision?
• What technologies do we use? How much freedom do we have in choosing
them?
• How do we share code between services?
• How do we test an individual service?
• How do we test the platform as a whole?
• Overall architectural style for a service?
• When do we decide to create new services?
• How do we bootstrap a new service?
An Event Log makes this trivial
@svpember
Topics
• Is it time for Microservices?
• Infrastructure / Operations
• Architecture
• Developer Productivity / Happiness
@svpember
Developer Productivity / Happiness
• Do we have a service template?
git clone git@github.com:
your_org/services-template.git
@svpember
Developer Productivity / Happiness
• Do we have a service template?
• What does it take to run our services?
What’s our Developer
experience like?
Running the Monolith on your
laptop will eventually become
problematic
Running a single Microservice
is easy.
Running all of them is
impossible.
@svpember
Developing against other Services
1. Every team publishes a mock service along with the real service
2. Only run services you need at the time
3. On-demand Environments
4. Keep buying bigger laptops
@svpember
@svpember
Developer Productivity / Happiness
• Do we have a service template?
• What does it take to run our services?
• Do our Engineers know how our services are deployed?
Let App Devs App Dev
@svpember
Developer Productivity / Happiness
• Do we have a service template?
• What does it take to run our services?
• Do our Engineers know how our services are deployed?
• How do our Engineers know about other Services?
@svpember
Topics
• Is it time for Microservices?
• Infrastructure / Operations
• Architecture
• Developer Productivity / Happiness
• People Communication
Conway’s Law is Real
People are the reason for
Microservices
@svpember
People Communication
• How large are our teams?
@svpember
@svpember
@svpember
@svpember
Team larger than 4?
Break them up
@svpember
@svpember
People Communication
• How large are our teams?
• How are they structured?
@svpember
People Communication
• How large are our teams?
• How are they structured?
• Are there clear functional boundaries between teams?
@svpember
People Communication
• How large are our teams?
• How are they structured?
• Are there clear functional boundaries between teams?
• Do we encourage cross-team socializing?
@svpember
People Communication
• How large are our teams?
• How are they structured?
• Are there clear functional boundaries between teams?
• Do we encourage cross-team socializing?
• Do we have clear methods for engineers to share & publicize services
they’ve built?
@svpember
People Communication
• How large are our teams?
• How are they structured?
• Are there clear functional boundaries between teams?
• Do we encourage cross-team socializing?
• Do we have clear methods for engineers to share & publicize services they’ve
built?
• Do we add more process if something goes wrong?
Process is like Scar Tissue
@svpember
People Communication
• How large are our teams?
• How are they structured?
• Are there clear functional boundaries between teams?
• Do we encourage cross-team socializing?
• Do we have clear methods for engineers to share & publicize services they’ve
built?
• Do we add more process if something goes wrong?
• Do we have company ‘Core Values’? Do they include non-technical
skills?
Empathy should be your #1
Core Value
@svpember
Topics
• Is it time for Microservices?
• Infrastructure / Operations
• Architecture
• Developer Productivity / Happiness
• People Communication
• Breaking off from the Monolith
@svpember
Breaking off from the Monolith
• Do we have a process / guideline for breaking functionality out of the
monolith?
@svpember
Breaking off from the Monolith
• Do we have a process / guideline for breaking functionality out of the monolith?
• Do we have a process / guideline for new services to interact w/ the
monolith?
@svpember
Breaking off from the Monolith
• Do we have a process / guideline for breaking functionality out of the monolith?
• Do we have a process / guideline for new services to interact w/ the monolith?
• So… how much functionality have we actually split off?
@svpember
Breaking off from the Monolith
• Do we have a process / guideline for breaking functionality out of the monolith?
• Do we have a process / guideline for new services to interact w/ the monolith?
• So… how much functionality have we actually split off?
• How’s the monolith doing?
All of your dependent systems
need to scale to meet the
demands of your services
@svpember
@svpember
Slicing code from the Monolith
• Not that straightforward!
• Create programmatic boundaries around the departing code
• Measure traffic and operational load across those boundaries
• Any dependencies on original system?
• Has the monolith accounted for the backpressure from the new service?
• Roll out slowly
• How are the metrics looking?
The First Service will be HARD
Beware Being the First
@svpember
Topics
• Is it time for Microservices?
• Infrastructure / Operations
• Architecture
• Developer Productivity / Happiness
• People Communication
• Breaking off from the Monolith
• Random
@svpember
Random Advice
• API & Message versioning is a real issue
@svpember
Random Advice
• API & Message versioning is a real issue
• Always have more than one cluster
@svpember
Random Advice
• API & Message versioning is a real issue
• Always have more than one cluster
• Don’t get cute with the naming of services
Any idea
what these
do?
@svpember
Random Advice
• API & Message versioning is a real issue
• Always have more than one cluster
• Don’t get cute with the naming of services
• New Feature? Walk backwards from the End User UI
Be Customer Focused
@svpember
Random Advice
• API & Message versioning is a real issue
• Always have more than one cluster
• Don’t get cute with the naming of services
• New Feature? Walk backwards from the End User UI
• Release when a feature is ready, don’t be afraid of bugs
@svpember
Random Advice
• API & Message versioning is a real issue
• Always have more than one cluster
• Don’t get cute with the naming of services
• New Feature? Walk backwards from the End User UI
• Release when a feature is ready, don’t be afraid of bugs
• But don’t release Friday afternoon.
To Summarize:
Microservices are hard because
of Infrastructure and People
Thank you!
@svpember
@svpember
Images
• Factory Workers: https://www.stallardkaneassociates.com/hr-employment-law/factory-workers/
• Bad Demolition: https://media.giphy.com/media/zf3skxc4BFBqo/giphy.mp4
• Tom Hanks, Desert: http://www.trbimg.com/img-57ba8bc0/turbine/sdut-lost-in-the-desert-waiting-for-the-king-2016apr21
• Say Anything / John Cusak: http://www.glamour.com/story/happy-birthday-john-cusack-and
• Wilderness Survival Guide: https://www.kobo.com/us/en/ebook/the-wilderness-survival-guide-1
• XKCD: Code Review: https://xkcd.com/1513/
• Monolithic vs Microservices: @alvaro_sanchez
• Drago (break you): https://giphy.com/gifs/GWD5nSpiHxs3K
• Michael Jackson, Bad: https://www.imdb.com/title/tt0124288/mediaviewer/rm4118942720
• Rocky Stairs: http://pixgood.com/rocky-stairs.html
• Assembly Line: http://www.solidsmack.com/culture/humans-need-apply-new-short-film-explores-future-robots-manufacturing-automation/
• Site Reliability Engineer Shirt: https://www.sunfrog.com/102539321-160396457.html
• Watson, “Wait”: https://giphy.com/gifs/B8qMV3f7PH7nq
• Service Mesh: https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh
• Trick question: https://media.giphy.com/media/ZcaSXPd7di8O4ZfsnH/giphy.mp4
• Dumpster fire: https://sentinelksmo.org/lawmakers-spark-dumpster-fire-with-tax-school-funding-bill/shutterstock_49161094/
• Work meeting: https://pxhere.com/en/photo/910324
• People in Conversation: https://preply.com/en/blog/2018/07/06/5-main-principles-of-small-talk/
• Indiana Jones: https://giphy.com/explore/indiana-jones-and-the-raiders-of-the-lost-ark
• Simpsons Mob: https://www.bobleesays.com/2017/06/18/halt-angry-fan-mob/
• Picard: https://fanfilmfactor.com/2019/03/07/the-right-captain-at-the-right-time-why-we-like-pike-discovery-editorial/
• Megaphone: https://imgflip.com/i/332n0j
@svpember
Links
• Eric Evans: DDD and Microservices: https://www.youtube.com/watch?
v=yPvef9R3k-M
•

More Related Content

Similar to SACon 2019 - Surviving in a Microservices Environment

Surviving in a Microservices Environment
Surviving in a Microservices EnvironmentSurviving in a Microservices Environment
Surviving in a Microservices EnvironmentSteve Pember
 
QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes Abdul Basit Munda
 
Microservices - Scaling Development and Service
Microservices - Scaling Development and ServiceMicroservices - Scaling Development and Service
Microservices - Scaling Development and ServicePaulo Gaspar
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slidesSameer Al-Sakran
 
Evolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBayEvolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBayRandy Shoup
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changesJaewoo Ahn
 
DevOps in the Real World
DevOps in the Real WorldDevOps in the Real World
DevOps in the Real WorldMax Yermakhanov
 
Enabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarEnabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarAaron Walker
 
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig DicksonAWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig DicksonAmazon Web Services Korea
 
AWS Summit Auckland - Smaller is Better - Microservices on AWS
AWS Summit Auckland - Smaller is Better - Microservices on AWSAWS Summit Auckland - Smaller is Better - Microservices on AWS
AWS Summit Auckland - Smaller is Better - Microservices on AWSAmazon Web Services
 
Microservices music city code v2
Microservices  music city code v2Microservices  music city code v2
Microservices music city code v2Gregory Beamer
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessChristian Posta
 
Engage 2018 - What About the Apps? A Domino Modernisation Story
Engage 2018 - What About the Apps? A Domino Modernisation StoryEngage 2018 - What About the Apps? A Domino Modernisation Story
Engage 2018 - What About the Apps? A Domino Modernisation StoryJared Roberts
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsMark Windholtz
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for ArchitectsEberhard Wolff
 
Microsoft Teams More Than Just Chat
Microsoft Teams More Than Just ChatMicrosoft Teams More Than Just Chat
Microsoft Teams More Than Just ChatM Allmond
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architektenadesso AG
 
cloud session uklug
cloud session uklugcloud session uklug
cloud session uklugdominion
 

Similar to SACon 2019 - Surviving in a Microservices Environment (20)

Surviving in a Microservices Environment
Surviving in a Microservices EnvironmentSurviving in a Microservices Environment
Surviving in a Microservices Environment
 
QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes
 
Microservices - Scaling Development and Service
Microservices - Scaling Development and ServiceMicroservices - Scaling Development and Service
Microservices - Scaling Development and Service
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slides
 
Evolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBayEvolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBay
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changes
 
DevOps in the Real World
DevOps in the Real WorldDevOps in the Real World
DevOps in the Real World
 
Enabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarEnabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinar
 
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig DicksonAWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
 
CMS Crash Course!
CMS Crash Course!CMS Crash Course!
CMS Crash Course!
 
Emperors new clothes_jab
Emperors new clothes_jabEmperors new clothes_jab
Emperors new clothes_jab
 
AWS Summit Auckland - Smaller is Better - Microservices on AWS
AWS Summit Auckland - Smaller is Better - Microservices on AWSAWS Summit Auckland - Smaller is Better - Microservices on AWS
AWS Summit Auckland - Smaller is Better - Microservices on AWS
 
Microservices music city code v2
Microservices  music city code v2Microservices  music city code v2
Microservices music city code v2
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverless
 
Engage 2018 - What About the Apps? A Domino Modernisation Story
Engage 2018 - What About the Apps? A Domino Modernisation StoryEngage 2018 - What About the Apps? A Domino Modernisation Story
Engage 2018 - What About the Apps? A Domino Modernisation Story
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic Patterns
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
 
Microsoft Teams More Than Just Chat
Microsoft Teams More Than Just ChatMicrosoft Teams More Than Just Chat
Microsoft Teams More Than Just Chat
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
cloud session uklug
cloud session uklugcloud session uklug
cloud session uklug
 

More from Steve Pember

Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Steve Pember
 
Gradle Show and Tell
Gradle Show and TellGradle Show and Tell
Gradle Show and TellSteve Pember
 
Reactive All the Way Down the Stack
Reactive All the Way Down the StackReactive All the Way Down the Stack
Reactive All the Way Down the StackSteve Pember
 
Event storage in a distributed system
Event storage in a distributed systemEvent storage in a distributed system
Event storage in a distributed systemSteve Pember
 
Harnessing Spark and Cassandra with Groovy
Harnessing Spark and Cassandra with GroovyHarnessing Spark and Cassandra with Groovy
Harnessing Spark and Cassandra with GroovySteve Pember
 
An introduction to Reactive applications, Reactive Streams, and options for t...
An introduction to Reactive applications, Reactive Streams, and options for t...An introduction to Reactive applications, Reactive Streams, and options for t...
An introduction to Reactive applications, Reactive Streams, and options for t...Steve Pember
 
An Introduction to jOOQ
An Introduction to jOOQAn Introduction to jOOQ
An Introduction to jOOQSteve Pember
 
Reactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovyReactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovySteve Pember
 
A year with event sourcing and CQRS
A year with event sourcing and CQRSA year with event sourcing and CQRS
A year with event sourcing and CQRSSteve Pember
 
An Introduction to Reactive Application, Reactive Streams, and options for JVM
An Introduction to Reactive Application, Reactive Streams, and options for JVMAn Introduction to Reactive Application, Reactive Streams, and options for JVM
An Introduction to Reactive Application, Reactive Streams, and options for JVMSteve Pember
 
Reactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovyReactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovySteve Pember
 
Richer Data History with Event Sourcing (SpringOne 2GX 2015
Richer Data History with Event Sourcing (SpringOne 2GX 2015Richer Data History with Event Sourcing (SpringOne 2GX 2015
Richer Data History with Event Sourcing (SpringOne 2GX 2015Steve Pember
 
Springone2gx 2015 Reactive Options for Groovy
Springone2gx 2015  Reactive Options for GroovySpringone2gx 2015  Reactive Options for Groovy
Springone2gx 2015 Reactive Options for GroovySteve Pember
 
Gr8conf US 2015 - Intro to Event Sourcing with Groovy
Gr8conf US 2015 - Intro to Event Sourcing with GroovyGr8conf US 2015 - Intro to Event Sourcing with Groovy
Gr8conf US 2015 - Intro to Event Sourcing with GroovySteve Pember
 
Gr8conf US 2015: Reactive Options for Groovy
Gr8conf US 2015: Reactive Options for GroovyGr8conf US 2015: Reactive Options for Groovy
Gr8conf US 2015: Reactive Options for GroovySteve Pember
 
Groovy Options for Reactive Applications - Greach 2015
Groovy Options for Reactive Applications - Greach 2015Groovy Options for Reactive Applications - Greach 2015
Groovy Options for Reactive Applications - Greach 2015Steve Pember
 
Advanced Microservices - Greach 2015
Advanced Microservices - Greach 2015Advanced Microservices - Greach 2015
Advanced Microservices - Greach 2015Steve Pember
 
Richer data-history-event-sourcing
Richer data-history-event-sourcingRicher data-history-event-sourcing
Richer data-history-event-sourcingSteve Pember
 
Managing a Microservices Development Team (And advanced Microservice concerns)
Managing a Microservices Development Team (And advanced Microservice concerns)Managing a Microservices Development Team (And advanced Microservice concerns)
Managing a Microservices Development Team (And advanced Microservice concerns)Steve Pember
 
Reactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsReactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsSteve Pember
 

More from Steve Pember (20)

Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
 
Gradle Show and Tell
Gradle Show and TellGradle Show and Tell
Gradle Show and Tell
 
Reactive All the Way Down the Stack
Reactive All the Way Down the StackReactive All the Way Down the Stack
Reactive All the Way Down the Stack
 
Event storage in a distributed system
Event storage in a distributed systemEvent storage in a distributed system
Event storage in a distributed system
 
Harnessing Spark and Cassandra with Groovy
Harnessing Spark and Cassandra with GroovyHarnessing Spark and Cassandra with Groovy
Harnessing Spark and Cassandra with Groovy
 
An introduction to Reactive applications, Reactive Streams, and options for t...
An introduction to Reactive applications, Reactive Streams, and options for t...An introduction to Reactive applications, Reactive Streams, and options for t...
An introduction to Reactive applications, Reactive Streams, and options for t...
 
An Introduction to jOOQ
An Introduction to jOOQAn Introduction to jOOQ
An Introduction to jOOQ
 
Reactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovyReactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of Groovy
 
A year with event sourcing and CQRS
A year with event sourcing and CQRSA year with event sourcing and CQRS
A year with event sourcing and CQRS
 
An Introduction to Reactive Application, Reactive Streams, and options for JVM
An Introduction to Reactive Application, Reactive Streams, and options for JVMAn Introduction to Reactive Application, Reactive Streams, and options for JVM
An Introduction to Reactive Application, Reactive Streams, and options for JVM
 
Reactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovyReactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of Groovy
 
Richer Data History with Event Sourcing (SpringOne 2GX 2015
Richer Data History with Event Sourcing (SpringOne 2GX 2015Richer Data History with Event Sourcing (SpringOne 2GX 2015
Richer Data History with Event Sourcing (SpringOne 2GX 2015
 
Springone2gx 2015 Reactive Options for Groovy
Springone2gx 2015  Reactive Options for GroovySpringone2gx 2015  Reactive Options for Groovy
Springone2gx 2015 Reactive Options for Groovy
 
Gr8conf US 2015 - Intro to Event Sourcing with Groovy
Gr8conf US 2015 - Intro to Event Sourcing with GroovyGr8conf US 2015 - Intro to Event Sourcing with Groovy
Gr8conf US 2015 - Intro to Event Sourcing with Groovy
 
Gr8conf US 2015: Reactive Options for Groovy
Gr8conf US 2015: Reactive Options for GroovyGr8conf US 2015: Reactive Options for Groovy
Gr8conf US 2015: Reactive Options for Groovy
 
Groovy Options for Reactive Applications - Greach 2015
Groovy Options for Reactive Applications - Greach 2015Groovy Options for Reactive Applications - Greach 2015
Groovy Options for Reactive Applications - Greach 2015
 
Advanced Microservices - Greach 2015
Advanced Microservices - Greach 2015Advanced Microservices - Greach 2015
Advanced Microservices - Greach 2015
 
Richer data-history-event-sourcing
Richer data-history-event-sourcingRicher data-history-event-sourcing
Richer data-history-event-sourcing
 
Managing a Microservices Development Team (And advanced Microservice concerns)
Managing a Microservices Development Team (And advanced Microservice concerns)Managing a Microservices Development Team (And advanced Microservice concerns)
Managing a Microservices Development Team (And advanced Microservice concerns)
 
Reactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsReactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and Grails
 

Recently uploaded

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 

Recently uploaded (20)

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 

SACon 2019 - Surviving in a Microservices Environment