Service discovery and configuration management at TransferWise
-
Upload
dataloopio -
Category
Software
-
view
746 -
download
3
Transcript of Service discovery and configuration management at TransferWise
![Page 1: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/1.jpg)
SERVICE DISCOVERY AND CONFIGURATION MANAGEMENT AT
TRANSFERWISE
![Page 2: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/2.jpg)
FIRST INTRODUCTIONS
![Page 3: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/3.jpg)
INTROS
![Page 4: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/4.jpg)
![Page 5: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/5.jpg)
![Page 6: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/6.jpg)
FAMOUS FOR
![Page 7: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/7.jpg)
ESTONIAN FOUNDERS
![Page 8: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/8.jpg)
EVANGELICAL CUSTOMERS
![Page 9: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/9.jpg)
$1 BILLION IN TRANSFERS PER MONTH
![Page 10: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/10.jpg)
SAVING OUR CUSTOMERS $50MPER MONTH
![Page 11: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/11.jpg)
ENGINEERING CULTURE
![Page 12: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/12.jpg)
WEAK CODE OWNERSHIP
![Page 13: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/13.jpg)
EVERY PART OF THE CODE IS OWNED
![Page 14: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/14.jpg)
ANY TEAM CAN CHANGE ANY PART OF THE CODE
![Page 15: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/15.jpg)
ENGINEERING FOR CUSTOMER IMPACT
![Page 16: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/16.jpg)
ENGINEERS GET CLOSE TO CUSTOMERS AND MAKE DECISIONS
BASED ON DATA
![Page 17: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/17.jpg)
SOME OF OUR TEAMS SERVICES NEED TO BE HIGHLY RESPONSIVE,
SYNCHRONOUS AND SCALE REALLY WELL
![Page 18: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/18.jpg)
OUR PLATFORM TEAM IS 8 PEOPLE STRONG
WITH A HUGE BACKLOG
![Page 19: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/19.jpg)
HOW DID WE HANDLE IT BEFORE?
![Page 20: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/20.jpg)
AN ENGINEER ASKS FOR A PRODUCTION SERVICE
![Page 21: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/21.jpg)
AND WAITS…
![Page 22: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/22.jpg)
WAITS SOME MORE…
![Page 23: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/23.jpg)
ASKS AGAIN…
![Page 24: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/24.jpg)
WAITS SOME MORE…
![Page 25: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/25.jpg)
GETS A SERVICE
![Page 26: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/26.jpg)
NEEDS TO CHANGE PRODUCTION CONFIG
![Page 27: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/27.jpg)
WAITS…
![Page 28: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/28.jpg)
THIS NEEDS TO STOP
![Page 29: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/29.jpg)
TOO MUCH CHATTERTOO LONG WAITS
STRESS FOR EVERYONE
![Page 30: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/30.jpg)
CUSTOMERS SUFFER
![Page 31: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/31.jpg)
WE NEED:AUTOMATIC ALLOCATION
PROVISIONINGLOGGING AND MONITORING
WITHOUT ENGINEERS
![Page 32: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/32.jpg)
SERVICE DISCOVERY CAN HELP
![Page 33: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/33.jpg)
RESEARCH AND TEX
![Page 34: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/34.jpg)
![Page 35: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/35.jpg)
![Page 36: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/36.jpg)
WHICH DISCOVERY APPROACH TO CHOOSE?
![Page 37: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/37.jpg)
CLIENT SIDE DISCOVERY
![Page 38: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/38.jpg)
SELF REGISTRATION
![Page 39: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/39.jpg)
![Page 40: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/40.jpg)
NETFLIX OSS IS OUR WAY TO GO
![Page 41: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/41.jpg)
PROOF OF CONCEPT
![Page 42: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/42.jpg)
![Page 43: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/43.jpg)
MAKE OUR MONOLITH CONSUME 1 SERVICE IN PRODUCTION
![Page 44: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/44.jpg)
![Page 45: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/45.jpg)
UNDERSTANDING THE SCOPE
![Page 46: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/46.jpg)
Problem: making friends between spring cloud and anything else except spring boot can be tricky. There is no good
adoption mechanism
![Page 47: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/47.jpg)
Solution: grails and spring are close. Let’s read the source, find out what hides beyond spring boot’s netflix-specific
annotations, mimic the approach it was designed for
![Page 48: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/48.jpg)
Lets create a shared bean in the discovery space (used by our monolith parts that consumes the config and starts
communication with Eureka)
![Page 49: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/49.jpg)
Step 2: Let’s start a Ribbon LoadBalancer in that bean, connect it with Eureka client and let him start listening for
apps
![Page 50: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/50.jpg)
Step 3: Most of our communication is through restTemplate. How can we make restTemplate awesome
and @LoadBalanced? Interceptors! Let’s build one
![Page 51: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/51.jpg)
Step 4: Let’s add the interceptor to the needed RestTemplate
Step 5: What if discovery completely fails? Fallbacks!
![Page 52: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/52.jpg)
IS THIS A PERFECT SOLUTION? OF COURSE NOT!
![Page 53: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/53.jpg)
NEED TO MAINTAINTIED TO RESTTEMPLATES
NEEDS ENGINEERS TO THINK ABOUT IT
![Page 54: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/54.jpg)
NOT GOOD ENOUGH
![Page 55: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/55.jpg)
BUILD CLIENTS AND MAKE EVERY CASE WORK AS A BLACK BOX
![Page 56: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/56.jpg)
IF YOUR SERVICE WANTS TO BE DISCOVERED - MAKE YOUR CLIENT
PROVIDE THE TOOLSET
![Page 57: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/57.jpg)
PROBLEMS
![Page 58: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/58.jpg)
SOME SERVICES HAVE A EUREKA CLIENT OF THEIR OWN
EUREKA IS NOT USED TO IT (CONFIGURATIONS ARE STORED IN A CONTEXT BEAN)
RESULTING IN OVERRIDES UNLESS CONTROLLED
![Page 59: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/59.jpg)
TESTING IS PROBLEMATICAS REQUIRES A FULL COPY OF PRODUCTION
TESTING THE PIECES IS COMPLETELY ON THE ADOPTING ENGINEER
![Page 60: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/60.jpg)
CHALLENGES
![Page 61: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/61.jpg)
VARIATION IN HTTP COMMS AND IMPLEMENTATIONS
![Page 62: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/62.jpg)
FEIGN AS A CLIENT BUILDERDIRECT FALLBACKS
HYSTRIX CIRCUIT BREAKINGSPLITTING BALANCING AND DISCOVERY
BETWEEN SERVICES
![Page 63: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/63.jpg)
SOLUTION COMPATIBILITYSPRING BOOT
EUREKARIBBON
SUPPORTING TOOLSET
AROUND 75% ADOPTION PROBLEMS
![Page 64: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/64.jpg)
3 MONTHS30 SERVICES IN PRODUCTION
20 MORE IN THE MAKING
![Page 65: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/65.jpg)
E
![Page 66: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/66.jpg)
GREATNOW WE HAVE LOTS OF SERVICE
CONFIG TO TRACK
![Page 67: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/67.jpg)
LET’S MAKE THINGS AS BORING AS POSSIBLE
![Page 68: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/68.jpg)
LET’S PUT EVERYTHING IN (PUPPET | CHEF | SALT | ANSIBLE)
![Page 69: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/69.jpg)
JOB DONE
![Page 70: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/70.jpg)
EXCEPT…
![Page 71: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/71.jpg)
SECRET MANAGEMENT IS TRICKY
![Page 72: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/72.jpg)
WE CAN MAKE IT WORK. BUT IS THERE A LESS TEDIOUS WAY?
![Page 73: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/73.jpg)
SPRING CLOUD CONFIG SERVER
NETFLIX ARCHAIUS
HASHICORP VAULT
![Page 74: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/74.jpg)
NICE DOCUMENTATION: HTTPS://CLOUD.SPRING.IO/SPRING-CLOUD-
CONFIG/SPRING-CLOUD-CONFIG.HTML
![Page 75: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/75.jpg)
NAME/VALUE PAIRS
/ENCRYPT & /DECRYPT ENDPOINTS
EASY TO EMBED IN SPRING BOOT APPLICATIONS
![Page 76: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/76.jpg)
SIMPLE REST API, SO PLAYS WELL WITH NON-SPRING TOO!
![Page 77: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/77.jpg)
SUPPORTS TEMPLATE FILES… BUT WE’VE NOT USED THEM
![Page 78: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/78.jpg)
![Page 79: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/79.jpg)
SECRETS DON’T NEED TO BE STORED IN PLAIN TEXT:
/ENCRYPT/DECRYPT
![Page 80: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/80.jpg)
VAULT BACKEND: REQUIRES A TOKEN FROM CLIENT
FAILFAST VS RETRY
![Page 81: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/81.jpg)
GETTING IT INTO PRODUCTION:
“VOLUNTEERED” A FEW SERVICE OWNERS
![Page 82: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/82.jpg)
EVERYTHING WORKED SMOOTHLY. VERY SUSPICIOUS.
![Page 83: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/83.jpg)
BUGS FOUND!
![Page 84: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/84.jpg)
GITHUB DOWN: CONFIG SERVER GOES MENTAL
CONFIG SERVER CACHES LOCALLY, BUT ALSO WILL ALWAYS CHECK FOR
NEW CONFIG IN THE REPO
![Page 85: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/85.jpg)
VERY INFREQUENTLY… IT JUST DIES
AND WE DON’T KNOW WHY (YET)
(NEVER HAD >1 NODE DIE AT ONCE, SO NOT AWFUL IMPACT, BUT CONCERNING)
![Page 86: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/86.jpg)
RESULT: SERVICES ARE GETTING INTO PRODUCTION FASTER
![Page 87: Service discovery and configuration management at TransferWise](https://reader031.fdocuments.net/reader031/viewer/2022030214/5899b55f1a28aba11e8b59bb/html5/thumbnails/87.jpg)
Let us change money transfer forever. Together.
https://transferwise.com/jobs/