One of the things standing in the way of effective and scalable engineering is shared infrastructure. Ed Hargin, Lead of DevOps and Kyrylo Novotarskyi, Software Engineer for Currencies and Banking, focus on the journey TransferWise took from shared to independent infrastructure management, including moving from legacy manual towards automatic instance provisioning, the evolution of service registration and discovery adoption, and the introduction of centralized distributed configuration storage, including secret management techniques, testing, troubleshooting and disaster recovery scenarios.
46. Problem: making friends between spring cloud and anything
else except spring boot can be tricky. There is no good
adoption mechanism
47. 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
48. Lets create a shared bean in the discovery space (used by
our monolith parts that consumes the config and starts
communication with Eureka)
49. Step 2: Let’s start a Ribbon LoadBalancer in that bean,
connect it with Eureka client and let him start listening for
apps
50. Step 3: Most of our communication is through
restTemplate. How can we make restTemplate awesome
and @LoadBalanced? Interceptors! Let’s build one
51. Step 4: Let’s add the interceptor to the
needed RestTemplate
Step 5: What if discovery
completely fails? Fallbacks!
58. 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
59. TESTING IS PROBLEMATIC
AS REQUIRES A FULL COPY OF PRODUCTION
TESTING THE PIECES IS COMPLETELY ON
THE ADOPTING ENGINEER