← Ingestions

Ingestion 482550a6 extracted

Format
transcript
Kind
talk
External ID
Miron Marczuk - Multi-region data governance in Rails application - wroc_love.rb 2023.txt
Content hash
898f7dde647b
Source at
2023-03-31 09:00
Manual extractions are temporarily disabled.

Extractions (2)

Status Model Tokens (in/out) Duration Cost Nodes/edges Read set (nodes/edges) Time
completed claude-opus-4-7
243,430 / 10,902
94,500 cached ยท 15,750 write
168.7s - 25 / 44 102 / 2 2026-04-17 22:12
failed claude-opus-4-7 RubyLLM::BadRequestError: You have reached your specified API usage limits. You will regain access on 2... 2026-04-17 16:18

Content

yeah thanks a lot for having me


um yeah I'm really excited to be here


and yeah actually I'm I'm from Poland


um but this is my first time here in


verotoff if you can believe it um it's a


beautiful city and as it was mentioned


it's my first ever


um public Tech conference talk as well


so a lot of things to be excited


um a bit stressed but I hope you know


I'll give you a good example to you know


next year be in my position


um Okay so


today we'll be talking about a


multi-region data governance in rails


application that's the name of the talk


that I submitted it


um I lied I liked not with bad


intentions but I think the topic that I


chose it's quite wide


um we'll get in a second what exactly


multi-region is however


um because this is such a wide topic I


decided to focus on a very specific


aspect of that multi-data multi-origin


data governance and actually about


moving from having a single


just what small technical glitches for


at the beginning


doesn't work obviously


okay yeah


nope


cool okay so we're going to speak about


a specific um case about moving from


having a single region multi-tenant


application to a multi-region


multi-tenant application


um yes and I know a year ago there was a


really good talk about the multi-tenant


this year we're going a step further and


we're going for multi-tenant to


multi-region multi-tenant and so let's


get started and today's story will be


actually about a success about think


that all the people that build


applications actually dream about


because


um you yourself as entrepreneurs or


developers you build applications to at


the end maybe earn money create


um business value to the clients and


today's story The reason why we even


talk about the multi-region is because


of a story of success about the idea


that picks up and then creates the


problem that we're going to solve later


so let's imagine an entrepreneur that


kind of has an idea and for the sake of


the example let's assume that that


person


um thought about a SAS application to


host merchants and allow them to build


shops so their clients can buy stuff


through their system


yes


you know you they recognize the market


you they saw the opportunity and that


idea grew in in an entrepreneur's mind


and in order to go from idea to actual


um application you need to kind of grow


that seed and build build the thing that


you imagined and what's the best way to


do it in the web framework environment


rails new command yeah


and yeah it's so cool


okay and by the way I kind of this is my


first talk so I can't imagine like


people just stand up and standing up


hmm


awesome and okay so we're going from an


idea to actual implementation and


um well we have our neighbor who


actually sells some stuff for the


internet so maybe let's get them on the


platform and he agrees and he picks up


and creates a shop and there are people


who actually go to that shop and start


to buy things in our application there


are users that start to use the shop on


our platform and then the word spreads


out there are new clients and there are


more and more and more people and more


clients in those shops who join the


platform yay I think it picks up we have


clients and then you kind of start to


see hmm maybe there is more potential


for my platform so let's move and attack


other markets let's grow Global globally


and that's what you do


initially you were just based in let's


say United Kingdom but you see a market


at this in states in USA so what you do


is to start bringing clients in another


country in another region and you know


the shops start to pick up and there are


clients there as well but what happens


is this um development is organic so you


kind of you're still that entrepreneur


who had this idea and you build that


application and it's it was built in the


place where you were close which was


United Kingdom so kind of it's still not


uh not really separated all your data is


still where it was initially but you


grew globally


now


you start to face a problem because


there is a big client there are a lot of


actually big clients who say okay yeah


I'm going to join your platform however


I have a requirement for you


you need to store data in the region


where I'm from I don't want to have my


data across the ocean I don't want to


have it I'm from USA I want to have my


data here not on the service in England


so you end up with a situation where


kind of the initial setup with data


being stored in UK is no longer valid


and you actually want to have the need


from the clients is


um to have their data in the place where


they're originally from this is a cause


of your success this is because you grew


you grew globally so now the question is


how do you do that how do you move from


having that single multi-tenant because


we had multiple clients and two


multi-region multi-tenant application


and this is what we'll discover today


during our talk and this is exactly the


problem we a team in apply for faced and


yeah we don't build shops actually and


we are permitting SAS application for


film and event


um for film and event industry and my


name is Miron I work in apply for


through secret source and the reason why


I mentioned two companies because


sometimes it's difficult to find a good


one job I was privileged to find two


really really good jobs one with a


fantastic product in the growing Market


the second with an office in the place


like this so in Gran Canaria so it's


kind of not bad but don't worry


I'm not going to leave the beautiful


dark November of Poland it's


in a month and getting back to the


business


so we are applied for and we build this


permitting SAS platform


um for for like I said for film and


event Industries and our clients are


authorities in UK


um Canada States and in New Zealand


authorities that allow people to have


their events or


um filming shoots


um held in their city for example to


block the streets in order to have a


safe event


and our end users the people who


actually go into tenants are even film


producers or event organizers and kind


of the example that I started with the


shops


um it matches our case matches the SAS


application that we have but instead of


shops in our case and what we have are


authorities so we um we yeah the tenant


in our setup are authorities and this is


um the only difference to the example


that I started with


and the problem that I that I mentioned


it's exactly what we faced are you as


clients decided that they no longer


um can support the architecture in which


their data is in UK and required us to


move to the U.S to move their data into


U.S and that brings us on a journey of a


multi-region how do you do that how do


you actually


Implement that in a real system


so what's the goal of this change kind


of we are taking thinking about


conceptually about moving data from one


region to another what does it mean it


means that the data which was of the


clients which was stored previously in


um one region in UK suddenly needs to


end up in a different infrastructure on


a different side of the ocean and let's


talk kind of details now so we have our


United Kingdom that's where we initially


store the data of our clients that's


where our initial clients are from and


then we have this new infrastructure in


the US that we want to introduce and


separate the data and place it there


and


the setup is as you can see first of all


it's multi-tenant because we have multi


multiple clients


um operating within an application


clients with their own users and and


then we add this additional layer of a


multi-region so we instead of having one


multi-tenant application we only have


two and that's why try to and what


that's what I mean when I use this


expression of a multi-region


multi-tenant


and kind of you know going back to the


fact that we had a talk yesterday about


the multi-tenant


yeah I think kind of next year


and yeah maybe in 10 years yeah we'll


end up in this so a lot of potential for


future Ducks yeah


good


ah that was okay I'll work on it


details so what exactly is data I


mentioned the data we need to move one


thing from uh one place to other what


actually is data in our case


um we're talking about database records


and files that were uploaded by the


users and stored in the region


and to kind of give you a bit more


context and I'm going to mention just


quickly briefly the stack that we use so


you have a picture of the infrastructure


that we have to deal with


um so we have our Ruby on Rails


application in a container deployed to


es ec2 ews service we're using AWS but


it doesn't really matter what you use


and then we have our


data persistent layer that consists of


database consists of file system and


consists of redis so you can store data


and these are kind of the pieces of


infrastructure Plus on top DNS and load


browser that allows you to connect your


application to the outer world I


mentioned this because we'll actually


use it but not that detailed in the


future it's not about infrastructure


today


um okay so when you think about that


multi-region multi attendant setup what


options do you have what type of


architectures you can Implement and use


to make it kind of satisfy the


requirement from the users


so one option is to keep having just one


application but separate the data layer


the data persistence layer so you end up


with something like this


um where the data is kind of clearly


separated and however the complexity is


that the application takes takes the


challenge of actually


going and um taking the right data for


the region so a lot of complexity about


this multi-region now lays in your


application and you know there's a lot


going on in applications there is a


whole domain to be modeled and


implemented so do you really want to


implement another really


challenging concept into your system and


the other option is to actually separate


applications completely that means from


one go from one application from one


data persistent layer to two different


separate ones and then there is the


option number three which is sort of a


hybrid option


where okay you separate the application


you separate the data but then you have


something in between that is shared


between the two regions to kind of


handle the data that is required by both


applications and it depends on the case


so I'm going to now tell you why we


picked one of the options but for your


applications when you'll be facing this


challenge in the future you have to pick


what kind of works best for you to help


you with that I have a set of questions


so the first one is can tenants move


across the regions so


can and how much data is shared between


the region so how often do you need to


synchronize the data between the regions


and also


the third thing is can users operate in


tenant in different tenants across


regions and the answers for us as we


kind of found out is now tenants don't


move across regions I mean it's


difficult to change a country like


between the oceans so kind of we're


pretty safe in that regard


secondly how much data is shared we


found out that not much and there is a


bit that needs to be put into two


regions but we are okay with kind of


going two different roads for that


specific piece of data and thirdly


um


can users operate in different in


different regions yes they can but it's


not really supported it's not expected


to apply for event across the ocean


because most probably doing your work in


the region that is closest to you and


for that reason our big decision was


just separate


completely so that was the decision that


we made and that's what we followed with


so to kind of just understand we go


again we go from


um this one single application to that


consists data from both regions and by


the way the colors and I know it's not


that clear unfortunately there's some


problems but there is kind of two


different flavors to the data please pay


attention to that because I'm trying to


Mark exactly where the data is


with those colors so if something is of


a color that means it's physically in


that country in general


um which can be beautifully see um where


you can beautifully see here where those


applications are physically stored in


two different regions okay so then you


start to think what I need to do


what actual task I need to do to end up


in this situation


well you need to separate your


infrastructure you need to separate your


data you need to move the data to the


correct region you need to adjust your


rails application to support two


different regions you need to get users


to that correct region because they were


using one application now they have two


that's a lot that's a lot of work


um and it kind of when you think about


it seems daunting and when I was kind of


thinking of the challenge of this I had


this picture in my mind maybe some of


you recognize this


aspect


um of yeah jumping I think it's called


leap of faith something like this


um


and kind of if you implement this at


once and just


you know deploy and close your eyes and


jump


um well I think you know that little


Haystack waiting underneath like it's


it's quite small and it's pretty


difficult to actually pull it off like


Assassin did


um so what I suggest is maybe you know


stairs and let's just walk down step by


step by step and this is what I really


recommend and this is the first tip that


I'm going to give you


um to do um the change gradually to the


steps until you're on the bottom until


you deploy the change


um and yeah and that will probably uh


make a give you a better chance to


actually finishing it


um with success


but


it's based on the real example so


actually I have the stages that we did


to get to this


um situation to actually separate the


data and we separate it into two stages


the one is redirecting users to the


correct region and then actually


separating the data


so the first part


is


keeping the data not touching it at all


in one region


create a situation where we already have


two up the two applications two


different URLs so we're split in the


application and but kind of not touching


the database at all not touching the


data persistent at all


and then in the Second Step only then


separate the data and move the


application to the other region as you


can see after the step one we still have


applications in our original UK region


and


so how do you do that first step how do


you redirect users the correct region


conceptually what we implementing here


is we're splitting up our application


previously we had one application and


now we go into two applications suddenly


it's quite a big change for users


actually


um so yeah conceptually it looks like


that and for the context so you are


aware what we're dealing here with is um


the infrastructure looks like this so we


keep the data persistent as it was but


what we do is we create additional


containers and load balancers which will


come handy in a second and and that's


kind of the infrastructure after step


one


and so


um


what's really important here is that the


business requirement is to make it


seamless for the user to go from using


one application going to a one single


URL let's say app.apply4.com and


suddenly be in the world where there are


two different applications and they need


to choose


to which application they need to go and


the business requirements to make it as


seamless for the users as possible and


some of you might think like who are


using App one and up to not for example


UK dot apply for.com or or North America


apply for the com it's a very good


question and again it depends on the


situation that you're working on in our


case although it's quite vague and


doesn't provide you information where


that region is based it allows you to


move around the countries that are


included in the region so it gives you


more flexibility and it made sense for


us to go for that specific naming but


yeah it might not work for you


um so in terms of


business requirement that we are


implementing we want to get users


seamlessly from app.apply4 the region


agnostic URL to a region-specific URL so


thinking about in in kind of what is


happening whenever you send a request to


a region agnostic you want to have a


redirect region specific


and ideally that redirect is correct and


kind of the data that you're trying to


reach is there and


so let's now kind of think what tools do


we have to achieve that what can we do


to make that process seamless


and the answer is we have two things and


we can utilize and we'll utilize


um DNS and load balancer and from DNS


we're going to use a very very specific


feature of it which is


um geolocation


um yeah it's specific for Route 53 I'm


not sure about other providers but I


think there should be option there as


well but essentially DNS can resolve


your IP based on


where the origin IP is from so when you


send a request from UK the IP behind


your the URL will be


based on what you put in the rule and


the second feature is from load balancer


so you can make redirects based on path


patterns so depending on what's included


in the path you can


make a decision where to redirect


specific requests


um in our case it was handy because we


have country in the URLs sometimes it's


kind of makes the URLs too long but in


this case it was very useful because we


had this information about the country


and that means a region about the region


in the URL


and that's what we did we took the the


find the DNS in a way that


if the origin of the request is from


North America go to load bouncer 2


otherwise go to load balancer one it's


not happening per request because DNS


you know it's cached what the the result


of the resolvement however


um it works because it kind of points


you to the right right load balancer so


then when you are handled by a load


balancer


in a loan balancer by default you go to


the URL from that region so if you're in


load bouncer1 you go to app one you're


redirect it to up one if you're in load


balancer 2 you go to app2 easy


but there are cases where you want to


override that behavior and this is where


you have information in the URL that for


some reason you are not in the correct


load balancer you should be in the other


one and that's where we use the feature


of a load bouncer that kind of picks the


first rule that applies and we try to


find those paths that include the


country that is not in the right region


and redirected to the other one and


that's how we kind of allow users to


seamlessly go to the right region note


here the case I described applies for a


301 HTTP response but actually we had


problems with it because it was cached


quite aggressively by Chrome


um so actually we ended up with using


302 it's not perfect from sap semantics


but yeah it worked and kind of sharing


this paint with you


and just to clarify when the when we


reach kind of the actual app one the


region specific request no


um nothing complicated happens here we


have a simple a DNS record and we go


um up one goes to Old bouncer one up to


to load bouncer two and then we go


straight to the application which


handles all the requests for a region


specific URL


um and one last point for you to


remember don't forget about seal so set


what's called alternate links to point


when you have those two applications


that point to each other and there is a


feature they need to and that kind of


code that you need to add to your header


to actually when you have two regions to


point each other


um so kind of both of them know about


the existing of the other one and the


end result of a stage one is that we end


up with same data to Applications two


different paths


good we made our First Progress we


actually like halfway down the stairs


nothing broke users start to use up one


up two seamlessly we control that they


can always reach the data because you


know it's we haven't split anything yet


so now let's


separate the data and this is where


a real task and challenge is hitting


hiding


um so yeah conception we move from


kind of having this one data persistence


layer with different pieces of data


belonging to different regions and we


want to end up in completely separated


applications and when I mean separated


again for a context infrastructure wise


we separate everything so we create a


second copy of database BFS like file


system storage red is they are


completely independent they don't have


they don't know anything about each


other


um


so now we need to challenge the task of


actually splitting our data how do we


split our database


this is a beautiful


picture of a database with tables in it


and


a record in a table and just to kind of


be sure that we know what this picture


looks like so yeah we have our database


and essentially the records belong to


different regions they should end up in


different places because that's what the


requirement was from our


from our clients so we want to


separate it and put it in the two


different databases


and in order to even start that


separation first thing to do you just


need to categorize your tables so some


tables have to be shared because the


data in them is required by both system


by both applications to operate


it depends how often change so you need


to think how to synchronize the data but


this is kind of first thing you do you


categorize the table to a shared ones or


the tables that actually include data


records from both regions


and then when you select those tables


that kind of have info data records from


both regions


then you need to take take it and


separate a specific table so yeah to to


put the data in the correct region and


this is the process I love this name


um that we called bucketing


um you know in the process of


development sometimes you come up with


like really cool names that stick


um and we came up now with this graphic


which is also even cooler because


conceptually that's what you do you put


um records in the buckets in the buckets


that you know will then will be moved um


to their final destination and what you


do is just kind of assign each record to


the correct bucket until you have all of


the records assigned


and this is kind of conceptually kind of


you think okay this record should go


there so let's now talk about actual


implementation


what we did we added a column bucket to


our tables to all of them and this is


just a


bully sorry integer simple integer


column that is added and kind of


represents


to which bucket the record should be put


in


and here is the code that actually makes


it implement it uses a feature I mean


this is a rails code that defines an


anim


that has the bucket value so it's either


not defined so we haven't bucketed yet


region 1 Region 2 or shirt and we


included for all our models so you kind


of include in the Base Class you know


it's not really great to do it on a


regular basis but I think our use case


is uh yeah


um


justifies that


we're half an hour into the system the


presentation and this is the first time


I show Ruby code and the Ruby conference


finally


[Applause]


let's go


um


okay so we have this column


um in our tables so how do we actually


assign that bucket value how do we put a


record into a bucket and here a bit of


kind of knowledge about your domain


about your system comes really really


handy we had our authorities kind of


conceptually they belong to a country


they are in


they are in the country but they have a


concrete implementation in the code they


there is a model called Authority that


has an attribute country that has a


value for example UK or USA that kind of


indicates where this Authority entry


belongs to


and starting from this you have you


start to build the associations related


to that Authority and it depends on your


system in our case the application this


is what people


um you know the event organizers used to


get a permit then you get server kind of


entities connected application etc etc


but I think the most important thing is


you end up with this kind of tree like


structure with a root of authority


from which you kind of have all those


entries


um to start to pan out and then you need


to decide


for example on the leaf level to which


region that specific record belong we


see kind of clearly connection and so we


know that we can kind of decide based on


connections to the authority where to


put it but how we actually reach that


and there are two ways the first one is


bottom up so you start from the leaf


level you have this tree of associations


and you go kind of one level up until


you reach the authority so first you go


up now it's not an authority you go up


now it's not the authority finally you


reach the authority and that gives you


information to which region that record


should be put in


however there's a different approach the


top-down approach where you start from


Authority we know where to bucket


Authority because it belongs to one


country and then you go level


one level below one level below and kind


of we know already to which bucket plays


them because we start from Authority


and until you reach that leaf level and


at that point we are also now to reach


the region that leaf should be placed


into and this is a tip from the practice


the top-down approach worked a lot


better in terms of how complicated it


was to implement and how efficient it


was to actually


um yeah do the job so bucket records but


it's although it's better like it


doesn't mean it's nice or clean this is


a view of our Authority associations


with quite a lot of record with quite a


lot of associations has many because we


had to reach the basically all of the


tables in our system there's a lot more


I will need to remove that later but


um yeah just to give you a view of how


it looks like and then what you do is


iterate through each Authority through


each SOC through all of the association


of that Authority and update


records in that Association to the


bucket value that you have from the


authority yeah


yeah simple right


um


yeah so this is how you can efficiently


assign buckets to the authority and you


end up with a beautifully separated


table with a bucket filled for every


record


so you separated the data


and now there's a really really cool


feature that you can do is because you


have assigned the records to your uh


yeah to to Regions you can preview how a


region will look like because you can


just query all the data that will be


later used in the specific region


and you can use it by I think dreaded by


many default scope method probably


rightly so but again in this case it it


just works like a charm because what you


do is you default you define a default


scope scope that takes all the records


only from that specific region so


as you can see there are usages for


things that you know are not recommended


generally and then when you test and


everything is corrected how do you


actually separate the database and worry


not I have a advice on that as well what


you can do is


um instead of you know making a copy or


deleting the correct records what we


found is the best work is to take to


create a copy like an empty copy of your


table and put only the records They want


there to be placed and then swap the


names


and in that way


the authorities table which was on the


left is now authorities old the correct


region that you wanted to have on the


right you delete it and you end up with


a beautifully separated table and that's


how you can achieve


a quite efficient separation of of


tables just for you to know be aware of


constraints and how to increment values


these are things that you need to look


out for so be sure that it's covered in


your application and and also a good


advice if you do this and remember you


can provide a buffer in one of the


regions for example 10 of all of the


records just to make sure that for some


period of time there is no Clash of IDs


in your database because you'll have two


database into regions make give yourself


a bit of time so the things go wrong so


yeah that's advice that's another advice


for you to remember and the end result


of database operation we end up with uh


nicely separated data and then


file split up which is kind of the last


piece of data that we need to separate


we have files which are in some


directory and they do belong to some


region we can figure this out by


the Association to which that file


belongs similarly to what we did with


the records


and you basically want to recreate what


you did with database in a sense that


you have this bunch of files that belong


to different regions and we want to


extract them so and the file system in


region one includes only data from that


region in order to do that you can


you have the file which is which belongs


to a region because of its Association


or kind of to which record it was


uploaded but there is kind of no clue in


that path to which region it belongs


what you can do is


add change the path for that file and


add information about the region to the


path where the file is stored so


suddenly


um


you have a kind of a parent folder that


tells you where to put


um the files in that region although


file like didn't really change only the


path to it changed and that's the way


you can quickly then move the whole


folders and place the files where they


belong to


and for testing a copying of the files


you can actually use empty copier files


especially if you have millions of


Records it's very useful to just create


empty copy for each file that you have


in your system and then you know run


tests on on those files


um in terms of of that move what you can


do is


um you have the old there that doesn't


include any information about the region


and you can then point change the files


the new files to be placed in a region


aware folder and then once it's kind of


live and all the new files go to the new


folder migrate all the files that you


left behind that were put in the kind of


region agnostic folder and


in order to provide support for both


cases where the file is in the new


region in the alt region you can have


this conditional where you check whether


the new directory exists if yes then


kind of that's where you should look for


your files otherwise probably means that


your file hasn't been moved yet go for


the older but the default behaviors that


you already Place files in the new


directory and we found very useful


especially to work with large file


amount of files is to use data sync


it's an AWS tool probably in other


in other


providers you'll find something like


this as well and we end up with this


beautifully separated file system and


which ends up the face of the


preparation and means that we are now


ready to


go live to finally deploy that to


production and I have just a few


suggestions for you to do it and to


actually get the change in place


so first of all inform your clients


about what you're doing


they will point you to places that maybe


you were not aware of that you need to


change to address in our case we need to


for example adjust payment gateways that


was URLs um so be in touch with your


clients and then


planning and preparing for the go live


date first of all find the low usage


time so it probably will be Saturday 5


a.m


as a yeah as an example so be prepared


to wake up early when you go live


and then schedule the maintenance window


in advance so users know that you know


something's cooking some things are


going to happen and then very important


Define the go live procedure


on Saturday 5 a.m it will be very


difficult to figure out what to do


Define steps that you want that will


follow almost


without any thinking exact steps that


you will follow on on the big day that


means include the command that you need


to run all the checks all the tests


everything should be in that document


and then assign people


um to do that so everyone is aware


what's the responsibility and they know


what to what they need to do on the big


day and then Define the contingency plan


in case things go wrong so you really


don't want to end up in a situation


where you go into maintenance window you


do a go big life moment and then


something goes wrong and you end up with


messing up with the system for a very


long time make sure you know how to


revert things to


how they were before


before you actually started the the go


left procedure and yeah enjoy the


process it's fun you've made it all the


way down from the stairs so that last


step yeah


save it


um


and in this case I will also want to


mention rehearse rehearse rehearse


the more times you run it for example on


your staging and the more time surround


on your local machine and that means


splitting the files the whole go live


procedure the more familiar and more


confident you will don't be afraid to


make mistakes but do them before going


live so that's my don't wait with the


whole process to happen on the go live


and then as a tool to actually do the go


live


use DNS records DNS is kind of a a


connection between what you're doing in


your application and yeah again the


outer world so


for example for the step one when you


have connection to your region agnostic


app URL that points to the previous app


you deploy the new infrastructure you


don't change anything at this stage yet


so everything runs as it was you have


this you know that will you will point


the new URLs to the new infrastructure


but you kind of don't do it


intentionally and now you test you


tested everything that you did


um works fine that the containers that


you deployed kind of behave correctly


you for example connect


write the nest rules on your local


machine that point to a specific


um your IP of app one and up two and


only when you're sure that everything


works fine and you can do use DNS as a


trigger Point them and kind of from that


moment on is live and if people will be


able to access it and but if you kind of


test everything well


you can be sure that it's fine it's okay


you hope so at least


um and kind of it makes kind of the


previous app Obsolete and makes you able


to uh delete it but you can kind of make


it as well as a contingency plan


um


yeah and one last advice for you if you


are going with this whole process and


you've done all this hard work to do


please book your holidays for the moment


that the go live moment is scheduled


because that means you can pull the


trigger in such beautiful conditions and


the island next to Scott Scott well


Stockholm and yeah on 5 a.m in a


beautiful Sun so please when you go live


make it in style


and that will get you to the happy end


with two applications with separated


data and clients that actually want to


still continue be on your platform and


that's in terms of the content that's it


I want to just say big kudos to home to


my whole team because who kind of helped


me help us to get to this stage kudos to


Charlotte Leo Matt Max Raul and some and


yep that'll be it thank you and you can


find me on


X Twitter X Twitter


um yeah please make sure that you give


me maybe some feedback because that's my


first presentation so really really like


and other than that enjoy the rest of


the conference and it was a yeah it was


a pleasure to to be here thank you


[Applause]


thank you


okay thanks for the presentation and I


got the first question to you uh because


uh if I understand you correctly you


promise to your customers the data of


these customers will be stored only in


the particular regions right


but data is installed only in a database


right we have monitoring tools logging


Etc


and so for example


with datadoc if we are if you have uh


monitoring there we can store this data


in a different regions on that level but


what in case of the business report I


mean if you would like to aggregate the


data from the


you know like let's say five regions for


example to present it to the business


then you will aggregate them only in one


region right so you will break this uh


statement to your customers and also


there was one example with the data


extraction like the old tables and you


moved it to the new one but still in the


logs in that region you still have this


data right so it's it's still there


so my question is how do you deal with


this yeah so in terms of of logging


um and the business reports that these


are the kind of the two First cases


um yeah so so the first case the logging


we also Implement in kind of region


specific so the logging is stored in


that particular region so in that sense


any information does not leave the


region so you need to add it to the


pieces of infrastructure that you


actually separate and put into the new


regions in terms of the business


analytics yes you do


um have the situation where


um you kind of you can get insight into


just one region but not really into


multiple and that aggregation


um it's a challenge that we actually


haven't faced and so if I have a answer


yeah probably see you next year with


that answer


um and your last question


um was about


um the data extraction and the logs for


example because in the logs you will


still have the disk customers data right


yes and start in the different Dragon


yeah so we kind of have this


um phase where kind of all the data is


in the UK which is fine for now so we


actually that face of extracting the


tables will happen in that region and


and we will end up with the US for


example data in the UK region and only


then put it into the us what we really


don't want to happen and we kind of


um we need to prevent that is the UK


data reaching the US


servers U.S database and that's what we


don't really want to do so we only


prepare USDA in the UK region and only


then put in the new one that way we kind


of keep the situation


as it was before


at worst


thanks


are there any other questions


you have mentioned the this table


renaming thing and I am wondering why


this way like you created a new table


you move the data you move them back


like you you you you you create like a


fresh fresh image of the old table and


you moved like necessary data why just


not


um remove the unnecessary data


and just avoid distributor naming


Integrations and end and so on yes so um


even with the the deletion you need to


end up in a situation where you have


kind of two different tables to delete


kind of um the cross region data and


however what we found out and this is


kind of based on the experience and the


test that we did is kind of in that way


when you just kind of insert and copy


the data that is correct it's way faster


than


um deleting the data and this is kind of


based on the on the test that we did so


um it's a tip kind of from the bottom of


our hearts that this is the the best way


proven in practice to actually make that


switch


thank you


um sorry we need to cut it here so


thanks again thanks a lot


foreign