preparing for the cloud - topconf software conferences · preparing for the cloud. about me. agenda...
TRANSCRIPT
Agenda
• Intro to TransferWise
• Technical Platform
• TransferWise and the Cloud • Opportunities
• Risks
• Next Steps
Poll
7
B) I will transform existing not-Cloud hosted solution to the Cloud.
A) I will build a new solution, running in the Cloud from the start.
Which best describes your current activities or plans for the Cloud?
TransferWise
• New way to transfer money abroad
• Transparent pricing
• At lowest possible cost
• Trustworthy & credible
Founders Taavet & Kristo
Short Term Goals
• Growth • Best customer experience
• Global coverage
• More supported countries and currencies
• More alternative payment methods
Global CoverageSupported Countries and Currencies
Euro - Single European Payments Area (EUR)
Switzerland (and Lichtenstein) - Swiss Francs (CHF)
Singapore - Singapore Dollar (SGD)
United Kingdom - Pounds Sterling (GBP)
Sweden - Swedish Krone (SEK)
New Zealand - New Zealand Dollar (NZD)
USA - US Dollar (USD) Denmark - Danish Krone (DKK), Norway - Norwegian Krone (NOK)
Hong Kong - Hong Kong Dollar (HKD)
Australia - Australian Dollar (AUD)
Canada - Canadian Dollars (CAD)
Georgia - Georgian Lari (GEL)
Hungary - Hungarian Forint (HUF)
Japan - Japanese Yen (JPY) Romania - Romanian Leu (RON)
India - Indian Rupee (INR) Czech Republic - Czech Koruna (CZK)
Turkey - Turkish Lira (TRY)
Poland - Polish Złoty (PLN) Bulgaria - Bulgarian Lev (BGN) Malaysia - Malaysian ringgit (MYR)
TransferWise Team
• Developers organised by technical Products/Services/Unified part of user interaction
• Developer count from 10 to 40 in past year
• Infra team: • Has recently doubled from 1 to 2 persons
• QA Team: • Only 1 person as dedicated manual QA
Platform: One Monolith
Consumer, Admin (Operations, Customer Support) Groovy Server Pages
(Grails app)
Database (MySQL)
Admin Web BrowserConsumer Web Browser
Platform: Modularisation
Consumer, Admin (Operations, Customer Support) Groovy Server Pages
(Grails app)
Database (MySQL)
Admin Web BrowserConsumer Web Browser
Shared Modules
Admin Only Modules
Consumer Only Modules
Platform: New ClientsAndroid iOS 3rd
party
Database (MySQL)
Web Browser via VPNConsumer Web Browser
Consumer Groovy Server Pages and REST API, Admin (Operations, Customer Support)
Groovy Server Pages (Grails app)
Shared Modules
Admin Only Modules
Consumer Only Modules
Platform: Split ProcessesWeb
Frontend (angular.js)
Android iOS 3rd party
Consumer REST API (Grails app)
Admin: Operations, Customer Support
Groovy Server Pages (Grails app)
Shared Modules
Admin Only Modules
Consumer Only Modules
Database (MySQL)
Web Browser via VPN
Platform: MicroservicesWeb
Frontend (angular.js)
Android iOS 3rd party
Consumer REST API (Grails app)
Admin: Operations, Customer Support
Groovy Server Pages (Grails app)
Shared Modules
Admin Only Modules
Consumer Only Modules
Database (MySQL)
Microservices (Java apps)
Service 1 Service 2 Service 3 Service …
Monitoring APIs
Web Browser via VPN
Sample Service: Rates
Rate Service
Database (MySQL)
3rd Party Rate Service 1
3rd Party Rate Service 2
Consumer Admin
Rate Consumer
Module
Rate Admin Module
Services Platform
• Shared by majority of services built internally, but not limiting the choices for the future
• Java Virtual Machine based (Java 7 & 8)
• Spring Boot early adoption
• Shared Database
Service Contracts
• API definition
• Protocols
• Client libraries
• Common packaging and deployment process
• Common monitoring standards
Today’s Situation• Private Infrastructure
• Virtualisation by VMWare
• Primary Data Center in UK, Secondary in Germany • Data replication between Data Centres
• Some development tools are SaaS solutions • Google
• Assembla
• Bugsnag, New Relic, Mixpanel, Datadog
• Slack
Deployment ModelData Center 1 (Active) Data Center 2 (Standby)
Node 1: ConsumerNode 2: Consumer
Node 3: Database
Node 4: Admin
Node 1: ConsumerNode 2: Consumer
Node 3: Database
Node 4: Admin (Used for time-consuming
read-only reporting)
ReplicationVMW
are
VMW
are
Cloud Opportunities• Lower latency
• Run apps closer to customers for lower latency
• Better global coverage with multiple active regions
• Improve availability • Ability to scale and failover one region to other regions
resources seamlessly
• Reduce system maintenance efforts • Take advantage of PaaS services
Cloud Risks
• Lack of competence in the team
• Lack of control over the data and computing resources
• Lack of compliance with financial regulations
• Price
Next Steps for the Cloud
• Continue separation of Micro-Services and following the best practices
• Evaluate alternative Cloud Platforms
• Start moving to the Cloud Service by Service
Cloud Ready ServicesThe Twelve-Factor App http://12factor.net/
I. Codebase One codebase tracked in
revision control, many deploys
II. Dependencies Explicitly declare and isolate
dependencies
III. Config Store config in the environment
IV. Backing Services Treat backing services as
attached resources
V. Build, release, run Strictly separate build and run
stages
VI. Processes Execute the app as one or more stateless processes
VII. Port binding Export services via port binding
VIII. Concurrency Scale out via the process model
IX. Disposability Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity Keep development, staging, and production as similar as
possible
XI. Logs Treat logs as event streams
XII. Admin processes Run admin/management tasks
as one-off processes
Summary
• TransferWise is growing rapidly
• Transformation to Microservices supports growth
• Private Infrastructure with early cloud elements provides best options for now
• Future steps are evaluated based on direct impact on company main goals