Hands-on case-study context mapping with Michael Plöd

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
so welcome everyone to the another virtual dvd so for the viewers who are now looking at youtube we're just started in a bit it's different than usual because it's a hands-on today and michael our plot is with me today we're gonna do some context mapping and um yeah so please if you have any questions feel free to ditch it in the chat on youtube i'm keeping an eye on it and you can hopefully enjoy and learn something from where you are back to you michael do you want to uh or is it i'm mike whatever you prefer i'm flexible regarding these things right so uh welcome everyone um it's great that there was so much interest uh in that session so um if everyone shows up from the folks who have signed up on meetup.com we will have a pretty crowded place um for the people joining in yeah please go to the mirror board which i have just posted to the chat and i think kenny did the same and please fill out the two areas uh in the check-in section that's going to be very very important uh for today because this is a hands-on that means i don't plan um to explain a lot about context map so this is not going to be a talk where i talk about context maps we will apply context maps in practice in order uh for you oh some folks are moving stuff around on the mirror board let me quickly [Music] let me quickly repair some stuff okay and lock this and lock that as well so um i'll quickly share the mirror board um so if you just um yeah pick yes something how are you today what have you done um how would you rate your experience with context maps please enter in this section your zoom name and your experience the reason is since this is not going to be a talk where i talk and explain a lot about context map this is a hands-on i plan on building groups of all of you together and i want to mix people with experience and people with no experience at all into groups it doesn't make sense to build a group with folks who have not a lot of experience about context maps yeah so um the plan is for today we will work on a case study yeah the case study um is i have a text document shared about that there is a brief event storming example for that and also some domain message flows i will give you some explanation about the case study in a verbal form but i'll also grant you some time yeah to read through it to check it out and then we will do three working iterations each iteration will take 15 minutes of group work and i will give you a task yeah for each iteration yeah for instance hey please check out this bounded context and this boundary context and take a close look at for instance an anti-corruption layer conformist or open host services for instance which are popular or very common context mapping patterns if you want to check out more details about context maps in your group work i've shared with you a slide deck to a context mapping talk which i do quite regularly at meetups and conferences for instance at ddt europe 2020 i did that slide deck as well and on the working boards i'll get i'll go to to one board to show you how that looks i have shared the stuff which i have contributed to the ddd crew github organization however also kenny is active folks like christina hilt or nicktoon and many others who share stuff there and so for instance um here is a context mapping cheat sheet yeah which gives you a explanation of all of the patterns including yeah a proposal for a vis visual representation i have all the icons for that over there as well this mirror template is also downloadable at the ddt crew github organization yeah so you can use that for your own work after the workshop it's all creative commons free for use and you can do whatever you want with that and over there i've also given you some small examples about possible context map scenarios so the task for today is that you get your hands dirty with that stuff yeah that you just use these things um we could spend hours and hours and hours and hours discussing those patterns but i always see that this may be fun for some people but most people need to apply them in practice and that's why we do it in a hands-on way this time around yeah um i have planned to let the meetup go until uh 9 p.m yeah and usually i'm pretty strict in terms of time management so i have the assumption that we will hit the 9 pm spot please don't have the expectation that you will solve the whole case study with a big context map now that's not feasible in three iterations of each 15 minutes and that's not the ambition that we follow there the ambition is to give you some complexity yeah and the patterns that you play around with them after each iteration i will give you a brief explanation yeah how my thoughts are what i would do and i will also post a um a solution i don't like the the the term solution uh because it feels so so like the ultimate truth and as you know all models are wrong some of them are useful um i consider that to be a useful model uh in terms of a context map and uh yeah so mikhail in five years we'll have the mikhail plitt model everywhere in the world yeah for everyone copy pasted it yeah for more gauge loan the micro plug mortgage loan template okay i need to license since that and uh start selling certifications for it that would be awesome no won't happen um so as i said this is a hands-on session are there any questions from your site so far no questions so far so let me uh quickly check out um how many people do we have um in the as participants i have a question sorry yeah sure go ahead sorry i i went through a bit of trouble connecting at the beginning i missed uh i see people filling in stuff in the my report i don't know what [Music] yeah um it's hard to understand you because you have a lot of disturbance in your audio but i think your question was that you need some help with the mirror board what you need to fill out there right write your question okay perfect so first of all i'll share the mirror board again in the chat so give me a minute for that um so this is the mirror board and on the mirror board yeah you can go into those sections and fill out how you are what you have done today yes someone was creating a powerpoint for instance uh then how you would you rate your experience with context maps have you done that before haven't you done that before um in terms from 1 to 10 and i see already we have a few rather experienced folks some rather unexperienced folks that's no problem but i see uh over 20 people um in the call right now and i would highly ask you please fill that out because it helps me to build the groups for the breakout session where you do your modeling work yeah because i want to mix experienced people with rather unexperienced people yeah so all right while you keep filling out that stuff i still see some folks missing over there i want to move your attention towards the case study i have added quite a bit of information to this mirror board first of all we have a text document that describes the case study in a little detail yeah so there's some text a very nice specification which contains the total truth about everything as always um i have a brief event storming example and i will lead you through that in a couple of seconds with some pivotal events some external systems some commands some actors and also a rather complicated domain message flow which already contains a bunch of bounded contexts which we are going which we are working with so um i will go ahead and um i will uh now use the next five minutes and give you a little bit of an explanation about the case study where i explain it in my own words since i created it and probably one the one that knows it best and after that i will give you 15 minutes of studying time please make yourself familiar with the case study yeah please make yourself maybe you want to skim a little bit over that slide deck regarding the context map yeah i think the most interesting part about that slide deck will probably be [Music] somewhere in the middle yeah i think yeah i'm starting with um slide yeah 33 or something yeah i'll post that to the chat as well so that you have a direct reference for that um that can be interesting as a well because there i describe all of the patterns so let me jump into the case study basically the case study is about a park dog who owns a bank and since um pack dogs are um usually um very greedy especially for food they need to earn money and that's why the dog owns a bank yeah just a hilarious kind of thing now he wants us to ramp up a mortgage loan application system ever you apply for a loan as a customer but for private persons in the retail sector yeah and we can apply for a loan in there and um the process starts um with us um going ahead and or with some applicants filling out an application form submitting the application to the bank yeah where you tell hey that's my application for the loan please grant it to me so to say and then there is some validation going in and after that we go into a first step of scoring called the pre-scoring this scoring runs on the information provided by the applicant so when i say i earn let's say um 20 um i earned 20 000 euros um and then the pre-scoring believes that yeah it goes ahead and draws a credit term request from a credit agency um we go ahead and determine the account balance on the on the accounts of the customer if they are a customer we assess the real estate by calculating a collateral value and a market value comparison and this results in a result green or red pre-scoring is red pre-scoring is green when pre-scoring is red we reject the application we say oh no not going to happen [Music] and we won't go into business with you sorry no um that's not good then if pre-scoring is green we ask the applicants to prove some information on the application form based on some documents so for instance we go ahead and ask for a pay slip we ask for an expose of the real estate um stuff like that and then a bank clerk checks if some information on the application form is correct and if not they talk to the customer and maybe they adjust the application so for instance someone says huh i earned 20 000 euros but the pay slip says ah it's just 5 000 euros the person lied now so they reduced that amount to hey sorry you just earned 5 000 euros that's what you take in there um when the application has been marked as checked by the bank clerk sooner or later bankrupt goes ahead and says yeah check that's okay we can proceed with that yeah that's the application mark just checked against the documents we go into the main scoring yeah the difference between main and pre-scoring it is the one runs on information provided by the applicant the other one runs on verified information by a bank clerk and it uses a different kind of a credit agency request yeah the credit application result every main scoring result goes into a manual credit decision where a hierarchy of the bank takes a decision depending on the amount of loans that people have applied for so people we ramp up a credit decision template where which is just one sheet of paper for instance where the main scoring result is where we say okay the real estate assessment with the collateral value and the market value looks like that and by the way uh folks applied for 300 000 euros in loans so we need three hierarchy steps to decide yeah in the bank for that one when all decisions were positive we offer the applicants a contract now that's what we do yeah so we send a contract proposal to the applicants and when they get back to us in time with the signed contract yeah we have an accepted contract proposal so we have a contract basically um maybe the applicant doesn't get back in time um then after two weeks we send a reminder letter after four weeks we send a reminder letter and after six weeks we just say okay our proposal is no longer valid yeah in the case of a negative decision we reject the application again after that we need to create the contract in our old school legacy at least back office systems yeah like an old school crm behemoth or a core banking system where we need to create the credit accounts and finally yeah we calculate a repayment plan and send a welcome letter to the customers yeah so the boundary contexts which we are going to work with um are listed in the domain message flows and basically you can go through that whole story yeah starting with a bounty call context called application registration yeah where we can where applicants can submit an application that fires off an event yeah this triggers scoring yeah for the pre-scoring yeah we assess the real estate yeah um scoring goes ahead and needs to talk to the credit agency the core banking system when we have a pre-scoring green we ask for documents to be uploaded yeah after that we do the application and document check yeah we finally go into a credit decision after a successful main scoring yeah go into a contract proposal boundary context and a contract creation boundary context so those are our bounded context candidates that we are going to use there yeah so much for a brief overview for you folks um jakub just raised a question to me regarding the domain message flows he found out that there is two bounded contacts called scoring on them that's true that means it's the same thing i just split this one up for readability issues because otherwise um yeah and you also i don't know if i pronounce you correctly um it's for readability issues in the flow yeah because we have one on the one hand the pre-scoring part on the other hand the main scoring part but this means it's the same bounded context yes it's intended and the reason for that is readability without further ado i will now split you up in four groups yeah um [Music] one group won't be in breakout sessions they will stay in the main room and this group will go to the um to the main screen yeah on the mirror board yeah um that's um this one over there the main room yeah and then i have a breakout room uh two three and um i have a breakout room uh four yeah just check your room number and you can go to the respective mirror boards i'll now go over to the um board for um for the second group for this breakout session and as you can see yeah i i depicted a couple of uh bounded contexts over there like here scoring we only have it once and the domain message flow it was in there twice for readability uh reasons um real estate assessment and reference properties then we have contract proposal contraction the manual credit decision the application registration document upload application check now in the first iteration we will focus on three patterns three the one is open host service the other is conformist the next one is anti-corruption layer all these three patterns you will usually find in a so-called upstream downstream relationship usually the open host circuits which can be seen as something like a public api one bounded context offers their services through a dedicated api that can be a synchronous one or also the publishing of events and the others in the downstream they get a model through that open host service now how do they consume that model are they conformists do they conform to that model or do they um transform that model in terms of an anti-corruption layer where we have a model to model transformation going on usually at the adapter level of the software architecture but that can also be a dedicated micro services or anything like that i don't want to go into any implementation details now if you take a look at those three patterns where do you have use cases for that let me give you a brief example um i think for instance and you can copy and paste yeah those patterns over there that i'm pretty sure that we have an almost service on the openmost service of most services on the core banking system and on the credit agency now in terms of scoring i also think that we may have an open host service on the external data providers yeah where we integrate with the reference properties and i think we should harmonize those uh this information with an anti-corruption layer for instance so we can add an acl there and then build a connection to them now usually i don't do any arrows on those things and we have a clear upstream downstream relationship between the two and so we can add the u and the d over there um we can add them on those things as well so now in your groups take 10 minutes of time and find out where you have use cases for open host services where do you have use cases for anti-corruption layers really have maybe a use case for a conformist for instance make up assumptions yeah play around with those patterns airplay if this is the case then i may have that pattern because that helps you in collecting a bunch of heuristics for the patterns maybe okay then i would start the sessions and i will bring you back in 10 minutes okay where can we see their groups um the groups you will see them when you're in the breakout session yeah yeah when i start the breakout session you will see on the top of the screen you're in breakout session four in room two or in room three or you're in the main room and then um when you don't get moved to a breakout session then you just stick in the main room and you go to that board i will iterate yeah after i've initialized the breakout sessions i'll go through every session and tell you you're two year three you're for okay thank you you're welcome have fun yeah the others they are now in the breakout sessions i'll um leave uh the main session for now yeah you're in the main room i'll go to the other groups and see what they do uh can you will you stay in the main room yeah i'm staying here perfect so i'll see you see you i didn't quite understand is something expected from us in the main room so are you in we should click on the link which says main room and then we will be getting guided to a uh a different myro board that's uh where i have come to yeah and i see a lot of people there but besides that see eight people so that shouldn't be right but let's just uh let's just start we can profit from some help huh why does my board say group one that's that's wrong okay yeah group one is main one is main group so that's oh okay okay okay main room is group one yeah yeah we switched it up because this way the streaming starts uh still doing crap all right and he said we can just copy and paste those markers yeah i can see it's possible i guess yeah if you click on it then you can yeah so it's something like this i'm doing the core banking system i guess this is something like this external data provide this why would you test the microphone sorry is it me excuse me can you please adjust your microphone you're really hard to hear oh uh yeah can you hear me now yep better okay it's better yes it's better okay okay thank you sorry for that it's just behind me you're saying core banking system open host system can you uh uh yeah well isn't that kind of a legacy system with the with the accounts and the customers um and they are exposing a kind of legacy api i guess something like this yes so i don't think we have much influence over them and the credit agency is the rating i guess credit worthiness rating and external data providers are the property data right so [Music] um yeah yeah i guess the acl is the right thing for the um i actually haven't got um enough information or i don't remember which context does the uh translation um i guess this discovery context will contact the credit agency to the open house and i would use some anti-corruption layer here so it can be protected from the external domain model i basically this is a system which we can't influence just take it yeah okay okay definitely so so uh what you're seeing is our strategy is to do an anti-corruption layer on on on the boundary on the edge of each each of our internal context that's right yeah okay uh all right so then let's do this uh real estate so a bit about the anti-corruption layer anti-corruption layer doesn't mean specifically that you do translations because an open host can do translations as well or maybe not an open host but for instance a customer supplier can do translations as well a anti-corruption layer mostly goes into deeper is that you create a separate system or layer to to decouple this in this case the scoring from the rest so anti-corruption layer doesn't per se mean or anti-corruption layer always means translation but it doesn't mean that a customer supplier cannot do a translation so just so you know uh okay yeah yeah yeah understood yes uh so suppose kenny i i'm just i just want to verify what you're saying is that suppose we had some influence on craig agency if there were a customer supplier relationship we can still do the translation without having acl explicitly written on the supply sorry on the customer side yeah okay yeah hcl means uh yeah hcl there's a lot of confusion there acl so anti-corruption layer is a pattern usually you implement it with a separate system that integrates several systems so in this case the way you describe that is the anti-corruption layer to scoring make sure that core banking system and credit agency can go consistent to scoring so that makes sense to me to do it that way but if it was a customer supplier relationship that can also imply you still have translation yeah yeah i think there is a a a fundamental difference yeah customer supplier is an organizational pattern it's how various teams talk to each other who can make requirements against another team and who can't hcl is about model translation yeah that's not so much organizational okay michael but then uh a related question would then be sorry you you go ahead no no no no you go ahead okay okay sure i'm just uh thinking that uh if we think about a hexagonal architecture usually the acl is on the edge and then you have the you implement it using the adapter pattern but suppose you have instead of acl put a custom supplier here do you then uh imply that uh that there is a there is an adapter on the edge of the hexagon of the customer side or do you explicitly write acl beside the customer if you know what i mean um i think uh the two yeah they they can be combined yeah used uh one is yeah the i think the acl is i always say the acl is something that you see in the code base because you will have some sort of a translation usually at the edge in an adapter the customer supplier thing is something you don't see at all in in the code base because it's more a communicational pattern where one team tells another team hey you need to do something for me yeah in a controlled manner it's not like unlimited wish list or something yeah and i don't think uh that you see that you can't see customer supply in a co-pace a customer supplier within a customer supply can still do translations right absolutely yeah so it doesn't so when you go to your hexagon yeah and and and customer supplier can still do the translation that doesn't mean it's an anti-corruption layer per se right anti-corruption is more for complex translations and relationships you can also have a customer supplier relationship and be a conformist yeah um what i usually do is and that's where i usually break away from the classical ddd literature i usually explain those patterns in terms of various categories i think um conformist and anti-corruption layer describe model propagation how models propagate yeah on the one hand with the with the conformist you see a propagation on the other hand with the anti-corruption layer you see a break in the propagation through the translation customer supplier on the other hand is something that i categorize as an organizational even it's basically a governance pattern taken various perspectives would you say that uh anti-corruption layer is more or less a go-to pattern when you deal with external systems which you don't you you more or less can't influence that's a great question let's discuss them in the round i'll stop the breakout sessions and that's a good discussion we should have in the big round i have another question then the conformist thing is it not wishful thinking that we just drawn the anti-corruption layer uh in front of the scoring context because we might happen to be conformists that's also a great question i will have that in the round as well yeah it's a really good question the breakout session starts in in 30 seconds um so let's wait for the other participants to join us yeah yeah i think somebody said something really sensible i think now that on the scoring side it's probably better to have a conformist i but i don't know yes right let's get let's get it let's get everyone together um can you can you leave i don't know who's sharing the screen right now i think it's yeah just leave this right there um oh sorry i said something with language right yeah yeah here we go yeah thank you back let's stick into this picture over there i've briefly skimmed through the other boards and i saw yeah something quite similar with everyone here we should have an anti-corruption layer against those external systems and anti-corruption layer is about trans translation of models so we translate from one language into another language so to say conformist is basically about the propagation yeah and usually i i like to explain yeah when i when i explain those patterns to folks who didn't have a lot of exposure to context mapping i i usually say if we look at the propagation of models between bounded contexts i think we address that with the anti-corruption layer or with the conformist conformist is a very strong propagation of models the anti-corruption layer isn't now one question was shouldn't we have an anti-corruption layer um for every integration with an external system there um i think basically that may be a good idea yes but it depends now imagine uh the credit agency answers you let's say this rating is it has a repayment percentage count yeah that the credit agency thinks that i will repay my loan at let's say 93 percent and that they have a couple of warning messages and negative remarks yeah in in their model as well that they published through the open host service now which pattern is suitable when you have a set of rules in scoring and we let's say we have we calculate points a point-based score and a no-go criteria based score what if we have the following set of rules the repayment percentage equals points in scoring so if i have 93 percent i get 93 points um if i have three warning message that's the no-go criteria and if i have a negative remark that's a no-go criteria as well would anti-corruption layer still be the pattern of choice here not really it doesn't have much value yeah because then suddenly yeah your rules conform very strictly to that external model if those are the rules you need to be a conformist another thing in terms of because that's what i see very often in terms of the conformist what i see very often is teams going ahead with the strategy and the corruption layer everywhere conform is this bad i think that's a dangerous strategy think about another thing one boundary context provides computations of values which are highly regulated like a collateral value for instance that's a highly regulated figure in the mortgage loan business do i want to allow others to mess around with that stuff maybe not or when you say let's say the credit decision we have a credit decision template that has for instance a scoring result in it that has a collateral value in it and now please also take a look when you think about those patterns in terms of the subdomain categories let's say scoring and the real estate assessment they are core sub domains now especially scoring is pretty much a core sub domain in that area credit decision on the other hand is something that we consider to be a generic sub domain um maybe i want to force my generic subdomains to conform in this case yeah that can be an heuristic there yeah um i think what i want to to bring across as a message i think anti-corruption everywhere is not a good idea the world is not black and white yeah there are there there is a space between yeah and i would also say that conformists everywhere are something that's highly problematic because you have unlimited yeah model propagation so to say yeah and everyone conforms to everyone and it's going to be a mess yeah i think you need to find a good balance between the two usually i prefer anti-corruption layers yeah because they lead to a higher degree of decoupling please or to looser coupling yeah anti-corruption layer is not about decoupling you still have some degree of coupling now in the translation in the adapter but you reduce the an amount of coupling yeah so talking in terms of connor sense with the conformist your core of your domain model is connor sent to the external model the anti-corruption layer probably only your adapters are connor sent there is a very interesting vddd session where we had a discussion i think it was me nicktoon julie lerman and i think hindu alagaristami was also in that session kenny right where we discussed i think for one and a half hours about the anti-corruption layer yeah yeah and that that went into just having a translation layer doesn't mean it's an anti-corruption layer exactly too long didn't read yeah version yeah all right do you like those longer explanations at the end of the exercise do we want to keep that yes yes yes yes okay yes yes it's a hard case study isn't it do do we have time for one question just wondering uh you said the credit decision this domain is a generic sub-domain um does that mean that's a purchased a commercial off the shelf system or is it those systems usually have yeah yeah i would say if something is a generic sub domain that doesn't mean automatically that it is something of the shave purchased it's a hint that hey maybe you don't want to implement that by yourself yeah it depends on the situation where you are when you assess an existing id landscape yeah you will probably find many many yeah systems and generic subdomains that have been implemented by the company itself maybe because they were implemented 10 years ago where this wasn't the generic sub domain yeah times change yeah maybe nowadays it's generic yeah because there is no way for differentiation uh everyone's doing it the same way and now there are products available and and stuff like that yeah um i think when you have a generic sub domain you could look into that yeah if you look at the case study the way the credit decision is ramped up i always choke around in my training courses on ttt and tell the people hey you can still you can implement the credit decision in gyra if you want it's so simple yeah there's no way for differentiation in there why not excel michelle come on excel excel is uh the biggest competitor to every self-written business software out there and then i have an access database underneath somewhere yeah um yeah um at iaf road um [Music] in the banking sector has such a common language the credit agency api not a published language instead of an ohs i will i would like to postpone that question to after our break because then i want to discuss with you published languages and can you just repeat why the scoring is conforming to the credit agency or i didn't understand that i think um no scoring would be a conformist to the credit agency when you have scoring rules that are highly coupled to the to the model of the credit agency let's say credit agency reports hey there is a repayment probability of 90 and scoring grants 90 points yeah you have three warning messages that's a no-go criteria yeah so you ramp up the set of rules that make up the scoring yeah extremely along the model of the credit agency yeah so if you switch the credit agency let's say from in germany the shuffle to something like arvato infoscore yeah typical credit agency in germany um that wouldn't be feasible okay and that's also the reason uh at ief uh why the credit agency may not be a published language because their model which in which they reply is pretty proprietary yeah is there is there any case when you probably have more than one credit agency you would like to connect scoring and then what would happen then probably the acl would be justified to use here then acl is the strategy of choice beautiful all right i would say um we continue um with um the um with the next exercise um i would like [Music] let's just go into um two more patterns for today yeah i'll we'll do one more exercise i'll give you a little more time for that yeah and i would like to discuss with you published language and customer supplier in the next exercise um [Music] let's start with customer supplier customer supplier is a plain organizational pattern so there is a customer supplier relationship between teams the town stream team is considered to be the customer downstream requirements factor into upstream planning therefore the downstream team gains some influence over the priorities and tasks of the upstream team usually in an upstream downstream relationship the downstream team is helpless yeah they have no power however in some circumstances it may be interesting that certain teams get an influence over the uh upstream this influence should be controlled there should be boundaries for that influence now it's not like hey which whatever you want from the upstream and remote control the upstream team no there should be a a defined set of influence i want you especially to discuss this relationship between application registration and scoring yeah who is upstream who is downstream do we have a customer supplier relationship don't really have a customer supplier relationship and the same i want you to discuss between real estate assessment and the application registration yeah usual i would say mortgage loan application form i don't know maybe some of you have bought an apartment or a house or something like that and had to deal with such a form that's usually at least in germany four pages of stuff that you need to fill out that's a real complex beast think who is responsible for that complexity yeah the next pattern i want to go through i want you to discuss in your groups is published language a published language is the well-documented shared language between bounded contexts which can translate in and out from that language published language is often combined with open uh almost everything and look at stuff like icalendar or vcard yeah where you um every calendar app can implement icalendar and they can talk i calendar yeah but um because icalendar is a standard so to say does every application every calendar application have an influence on the standard no and this is a very interesting thing with regards to the open host service would i for instance consider the model of the google maps api which is without a doubt an open host service to be a published language i don't think so because it's google has just defined it it's google's thing yeah it can become a published language when others start to adopt that if they are allowed to yeah but i think probably what i expect from an open host service is a well-documented interface yeah and just by having a well-documented interface for me personally and that's my my personal opinion here that doesn't qualify for a published language a published language is more in my eyes yeah it's a standard something like that yeah it's a documented shared language yeah and uh especially if you look into um for instance von vernon's uh literature yeah one only has examples where he combines openhouse service with published language i think you can have open host services without a public published language however please be aware that's my opinion and if you look at the definitions in the popular books there is some some vagueness man there is room for interpretation there others may not agree with me yeah but i for my personal work i found yeah this distinction to be quite applicable yeah now what i want you to discuss in your groups as well in the next exercise where do you see a use case for a published language in our case study do you see a use case somewhere yeah who should influence the published language yeah are there any question from your side i think there was something going on in the chat given credit agency based on german exams is also proprietary shall we even consider open hosts on their side yes yeah because they offer a defined interface yeah they don't offer you direct database access or something like that yeah i think almost service means this boundary context has something like a public api yeah they have that so that qualifies for me for an upmost service yeah um okay i would say i'll split you up again in the working groups discuss that for the next yeah i'll give you 15 to 20 minutes for that after that we get back together discuss uh your learnings and then um we'll do a wrap up and we'll be okay for today for the handsome all right cool it's the same group yes right yes yes so where should we start uh so the question is uh where do we see a need for published language right now the first question was uh to decide on the relationship between application registration and scoring context oh sorry i missed that part um and then who's upstream who's downstream which is kind of tricky that kind of depends and i think here's scoring is the driver because they are defining what data they need in order to support a customer so they are defining the needed information to the application registration are you implying that scoring is upstream are you are you saying that i'm i'm not sure the information is flowing from the application registration to scoring however i think scoring defines what they need but yeah okay so scoring is one party that can have some influence on uh on on application registration but uh what about the real estate assessment doesn't that context also have some influence uh and uh how about the credit decision i'm not clear but i'm just thinking maybe there are several there's a joint venture influence on application registration because usually it's a it's a forum with different sections that uh some some data is needed for scoring and others might be needed for real estate assessment um this sounds like customers of a relationship to me i'm still not clear who is upstream and who is downstream and what is uh what is the definition of upstream and downstream again is the one who is uh who is defining the rules and downstream is the one who is playing by the rules you can uh you can imagine two cities one is uh up the river up the floor of the river and another is down the floor of the river so if uh if the upstream they spoil the water then downstream cannot drink okay then i would say that scoring is top stream i think they're defining the rules do you think that scoring is upstream actually almost sure yeah i'm almost sure that uh yeah so you think the scoring model will be propagating to application registration but the application registration must be understandable by the customer so um i'm just yeah i can understand your point but i i i'm not completely sure that i would yeah that is another thing ask yourself this question for upstream downstream if upstream has a action does that affect your downstream or not right so if if is if scoring changes something does will that affect application registration or not or vice versa well but then then we are kind of constraining ourselves to the data flow because well okay of course when when the data flows from a to b uh a is always having a better an advantage in this situation but i don't think upstream and downstream has anything to do with the data flow no no it wasn't about the data flow exactly it's about decisions so model decision change in model decision or the way they work or they change their i would say to support the argument of christian i would also say imagine the business which is running this who is going to have uh more influence i would think that scoring uh will be the guys uh behind the real business and they will just come and say oh we are sorry guys you are doing it like this and that's it i think they would say in order to score we need this data and you should give us this data we don't care how you get it voila but does that make scoring upstream then um i would say data changes the scoring model would propagate to the application registration okay and and then okay let's let's say we do it this way how about the data that is needed by a real estate uh um assessment is that also upstream then and then the application registration is also kind of obedient to to that at first glance it seems to be a similar troop situation yeah it's just i see the application registration as a big collection of a lot of data and some might be related to scoring others might not be related to scoring per se but some other risk assessment or even just the you know data you need to register a customer kind of thing yeah so how about that heuristic kenny was saying if you change something in the app application form would that implement scoring and real estate assessment can imagine they will let you change something which will influence their rules without asking them okay yeah well uh so so so then if we go with this assumption like scoring is upstream and application registration is downstream what would you uh suggest that the kind of relationship between them are they customer supplier or are they some something else should be customer supplier and scoring and real estate are customers and application registration is just a supplier in my opinion to support that that means you need to search yeah then that you're reversing that because the upstream the downstream is the side that can be this customer yeah right yeah so so it's it's like even though you're downstream you can have some influence anyhow that that's how i understand it so application registration that's exactly it yeah a customer has influence on maybe even veto power as they say so the customer in this case let's say application registration is downstream and scoring is upstream like you say it then if you have a customer supplier relationship then the application registration is customer since the customer is asking the supplier in this case scoring to supply to to get new functionality in or develop some stuff on that side so hold on uh they are downstream they're kind accepting everything customer is just so customers downstream yeah yes yes because if they accept everything customer supplier is the arrow is reversed so that's always the confusion part and it confused me a lot of times as well just so yeah okay i'm i i just uh count uh i don't have the fantasy or imagination to think how uh what kind of veto power can application registration uh bounded context have on scoring because scoring has some set of strict rules um yeah so what kind of influence i would also think that scoring will have the veto power and application registration just follows everything this would make application registration at conformist right yeah exactly so if that's the case then it's not this guy but the cf we have done before so i'm just going to copy this different alternatives so then it's like this yeah as i put in the chat right if you look at eric evans pattern book it's on thedomainlanguage.com it says agile teams can make the downstream team play the customer role to the upstream team in planning sessions so meaning your application registration has influence on what scoring needs to build their priorities or what they need to build so that's a customer supplier if the application registration has nothing to say to scoring that means it's a conformist relationship and then there's a difference between what is and what you want right so there's difference to what it is now and what you want it to be but i think you talk about what is it now yeah yeah so so we are actually listing two alternatives here uh one is the conformist and the other is customer supplier but i i'm raising the question i can't think of any example that application registration could influence that the modeling of scoring and but yeah but however i'm just also not convinced that the scoring is completely upstream though um because then why aren't you uh yeah i don't know it's just uh i i just feel the scoring model is not directly propagating to application registration it's the other way around it's somehow the yeah i don't know i'm a little conflicted with myself i guess maybe we can ask the expert now yeah is michael here he just popped up yes i just popped in okay yes michael we are not agreeing and we uh uh we are well i am at least confused i can only speak for myself uh the group i think my the other teammates buddies proposed that scoring is upstream and application is downstream and then we can either have a conformance relationship if application registration doesn't have any say or we can have a a customer supplier relationship where application registration has a little influence at the downstream but i i'm um i'm a little confused myself because yeah about the downstream and upstream i i think i'm i'm i think it's also plausible that application registration is upstream because it has relationship to credit decision and real estate assessment as well if it's downstream then it has to be downstream to a lot of other domains and that's kind of messy and now we uh i stop i will ask what is the definition of upstream and downstream in this concrete example basically the influence is bi-directional upstream downstream is a unidirectional influence actions of one team have an impact on the other and not the other way around mutually dependent is a bidirectional influence yeah that let's say uh application registration scoring would be in a mute uh in a mutually dependent team relationship then actions in scoring have an influence on application registration and actions in application registration have an influence in scoring i think that's something we don't have there ask yourself the following question what is the impact of the scoring team changing their rules their internal structure how they assess and credit application on the application registration none they get the application form in and after that they can perform whichever rules they want without application forms there will be no scoring however when the application ratio stream duration team does something it can have an impact on scoring so application registration is upstream and scoring is downstream yeah because scoring i mean they they can change the assessment of a no-go criteria however they want does it affect the application registration no they can change the calculations internal values how they get to green or red does it have an impact on application registration no not at all however the other way around when the application registration team decides huh we go from a 40 field application form to a marketing sales compliant 10 field application form it will have an impact and a pretty severe impact on scoring yeah doesn't this mean that powering can can we do this change which would make him the driver and this is where he gets interesting so the first relationship type that we have there is upstream application registration downstream on the scoring and then we need to think is a powerless scoring team a scoring team which is fully dependent on the mercy of the application registration team something that we want and i think the obvious answer is no we want to grant them some influence because when the application registration team this is the marketing a sales driven team basically yeah they get paid by the amount of applications they get in yeah when they come up with hey we have a cool new form five information fields and you're in for a mortgage loan the scoring team should have a say in there and say ah no that's not gonna work for us so this is why i would combine add a custom supplier relationship to that to give scoring some influence over the priorities of the upstream team yeah okay so just to paraphrase and uh verify my understanding you're you're kind of like saying the application registration since it's customer facing so it's usually some um customer journey kind of people that decides what what goes into that application form and because the a bank would have some risk management requirements that sort of feed into the the application form but it doesn't control how a application form looks like eventually perfect so it's still application registration is upstream but scoring has some limited influence and therefore that makes it a customer at downstream i i i would say i would i'm pretty sure we both mean the same i would say scoring has a defined influence yeah around ah defining a certain piece yeah so we define a certain piece of influence yeah and please do that yeah not that everyone says ah i want that from you i want that from you i want that from you because then you bog down the whole application landscape and you're getting totally away from independent teams yeah so yes i could that that yeah for instance you can say okay scoring may ask application registration once per year to change the form now to add information or to remove stuff yeah that's something that is a defined set of influence yeah when application registration wants to simplify the form scoring can have a vetto and the same can be true for the real estate assessment it's the same thing yeah because that's what i see as a very big problem in very big grown application landscapes i'm quickly getting the other groups in again um in in very big application landscapes is that the set of influence is not defined that everyone can wish something that everyone can ask for something and then you're bogged down by huge governance boards and huge meetings and in the end you end up with a foul compromise every time because it's just politics that are being played out there and that's something that we actually don't want exactly but that doesn't that speak for making application registration and open host service then um like having so many customer influences um from all sides oh you bring up a great question let's wait with that question when all participants are in is a customer supplier against the open host service a good idea no no that's uh probably a very bad idea because one if the power of scoring is very high it can actually veto the whole process and nobody gets progress right exactly all right welcome back everyone um i was just in a very interesting discussion uh with uh uh airwisksin and we we raised the question uh is a customer supplier relationship against an open host service a good idea what do you think what's your opinions oh can you repeat the question can you sharpen the question what do you mean against okay so you have an open host service yes and you have a bunch of consumers of that open host service on the downstream and one or two of those consumers they are in a customer supplier relationship to the upstream system is that a good idea and what would be the consequences of that wouldn't that influence everything so one changes would influence on the other one so few of the services can influence the other services with having these dependencies if they influence the open open service yeah exactly okay yeah the message is be careful with that an open host service is an interface an api for a broad range of consumers yeah now when you grant certain consumers and vip access to the open host service yeah you run the risk that they indirectly also have an influence on the other teams i've seen a very nasty example for that i think it was four years ago at a company in southern germany and uh one of my friends a very good friend of mine is the i.t manager there and she leads uh many teams and she complained to me oh michael we are making no progress everything sucks it's all horrible and whatsoever and um we started drawing a context map in order to find out what's going on and we found out hey there is one open host service yeah one team provided an open host service they were in the upstream they had i think five or six teams in the downstream who all had anti-corruption layers against the open host service so first so good for most of the teams especially for two teams the integration with the open host service was very important for one team it was pretty optional and what that team did was very often saying oh no you can't do that we have no time we have no budget the risk is too high for us so um they were in a what i call a veteran customer and helpless supplier relationship so they were not not really a customer in the sense that they had requirements for the others they were just veteran around yeah that's not in the sense of the customer supplier pattern i would say that's the an anti-pattern version of the customer supplier pattern so to say yeah but what happened is that this team was able to block the progress of all the other teams because they were successful with their betos and in the end we found out that this was a political foul play by our manager of the one team it was very very specifically trying to block certain other teams in making progress in order to look good in the organization yeah that's a problem yeah sometimes you want to have something like that but please be aware of the consequences and look how you define the influence of the customer that's very important then did any group discuss a potential candidate for a published language we did yeah yeah we did okay tell me uh we briefly discussed that application registration could be a candidate for a published language because it has a lot of clients and a lot of them um probably have negotiating power so in order not to let everybody anybody take overhand perhaps it would be good to have um kind of a yeah a gentleman's agreement sort of thing yeah 100 points exactly yeah the application form in itself may be a very good candidate for a published language yeah because there are many other bounded contexts that need it it's used highly in the communication between the boundary context so that we can describe a model yeah in a way that other boundary contexts can translate in and out of that yeah and the application registration can have an open host service which speaks that model and the same goes also for the application check application marked as checked event and you add the checked corrected application form in there you can also speak that published language and we also can grant a defined set of influence on that published language for instance in that i would say in the committee defining the application form i would put in the registration scoring and real estate assessment yeah so they can you can limit the influence of the customer part of the customer supplier pattern on the published language and that they tell them hey just deliver us the thing in that language and it's all good how they get their form whatever is not in their influence and so that would be a perfect candidate for a published language absolutely that's what i wanted to hear do you have any questions can we talk about a little bit about the customer supplier in this to application registration scoring and really a state assessment how do you perceive that how what what is decision factor did you say this is a customer and this is a supplier um that's a very good question so first of all i would start with the team relationship yeah um i would say the context map knows three different kinds of team relationships one is mutually dependent that's a bidirectional influence between two teams actions of one team have an influence on the other and it's the other way around as well so they are very tightly coupled upstream downstream is a unidirectional set of influence the actions of one team have an influence on the other team but it's not the other way around and then finally you have free which is there is no real influence between those two teams customer supplier is only relevant for upstream downstream relationships yeah usually the upstream team has all of the power and the downstream team is helpless as some people in the literature like to call it yeah now um but we want to grant the downstream a defined set of influence now in our case study let's take a look at application registration and scoring the first question to ask which team relationship is it i think actions in the application registration that have an impact on the application form do have an impact on scoring actions of scoring in the way how they calculate their pre-scoring red pre-scoring green main scoring red main scoring green have no influence at all on the application registration so application registration is upstream scoring is downstream now the next thing to think about is take a look at how those teams are driven i think application registration is a team that is very marketing and sales driven yeah with a blinkering eye you can say they get paid for the amount of loan applications they bring in and the more they bring in the better so they may come up with the idea huh we do a loan application uh form with just 10 values yeah easy mortgage loans great i think the scoring team will say [Music] folks that's not the best idea yeah that's not feasible for us in order for us to do our job you need to provide us with the following model yeah and they need to have that influence so when they come up with new rules with new ideas for rules i think we should give them a chance to also grab more information through the application form so we could put them in a customer relationship and the application registration in a supplier relationship the same actually also applies to the real estate assessment part it's the same thing yeah younes has a question how do you define those relationships without talking about the strategic classification of each context yeah i think the strategic classification of each concept context goes a long way there yeah it really helps you but i wouldn't consider it to be 100 necessary i think um if you look into my slide deck which i've shared um on the mirror board as well you will see me at the end of the deck discussing some impacts of the strategic classifications some heuristics around that yeah for instance do i want to have a bounded context in a core domain being a conformist against one in a generic subdomain i think that's not the most useful model around in many cases i mean there are always exceptions and whatever but i would say as a general purpose answer not the greatest idea yeah um i think this helps but it's consider that to be an add-on help for the discussion yeah i meant by that that in this case that you the example you took between scoring and application registration what would be the motivation to change the influence introducing a customer supplier relationship if not about the fact that scoring looks like a core context i mean what would be the motivation apart from that i mean in the end um let's say scoring is generic for whichever reasons they still need to be able to do their job yeah and if if they are helpless they won't be able to fulfill their capability but then i guess you could introduce that pattern everywhere you have upstream downstream be careful let's say um the credit decision yeah um i think it's it is a very strategic decision but not uh not so much on the on the level of i mean yeah the strategic classification can play a role in there but let's take credit decision yeah credit decision is generic let's say like that yeah and what we tell credit decision hey you can display everything you want in your credit decision templates you can ramp up your credit decision hierarchy in any way however you want based on the stuff that's being offered to you but you take no influence on the other stuff at all okay you just play take it or leave it you get no influence yeah you can get what the others offer you great yeah do whatever you want with that but you don't go to scoring and tell them hey we don't want green or red we want emojis you don't do that okay thank you so i guess there is an underlying uh heuristic there to define like when you choose one or the other but yeah yeah um look at my um a related yeah a related question to uh to this uh credit decision example you just mentioned um i was just thinking um for that consortium we talked about those people with influence i'm just thinking about a heuristic who do you want to put in that consortium because you want that consortium to be as small as possible so in this context you put scoring in the in in the consortium and probably you also want to put what's on the right side of that yeah a real estate assessment i think it's mentioned um and and suppose you have these customer potential customer supply relationships then you put those concepts in the consortium but you don't put generic sub domains in that consortium like credit decision isn't that what you're saying because they anyway are kind of uh conformist in or most cases and many many many most cases i would say yes however under circumstances there may be exceptions yeah so that may be the case and the the answer is it depends but if you go for that as a yeah general purpose heuristic i think you're on a on a pretty decent path yeah that's most of the time applicable the same as the open host service is upstream yeah i would say in 99 of the cases that's the case however i've also seen the case where we had an open horse host system which was definitely a downstream system yeah but that's a ver that was a very exceptional case yeah and it had to do with an extremely strong regulator yeah but i had the same experience yeah i had the same experience there open whole system and downstream with the regulator yeah exactly that's something that can in a very strong regulator yeah uh that's something yeah that can happen yeah but that's that was the only exception that i've ever seen where an open host service was downstream have you seen other cases kenny no no what's actually your take on this published language thing um does every open host service always publish a published language or do you see open host services standalone thing what's your take on that there is always a language published question is there's always a language the question is is it formally published or not what do you mean with exactly how published that is it's a general good idea to have it just thinking about examples where there isn't a formal published language and i cannot think of any at this moment most to have apis so why else would you be an open whole server well actually to be honest i come from the embedded electro yeah electronics and before you all had these smart uh thermostats yeah correct work yeah i had my own thermostat and i could hook in i could actually integrate on it but it didn't it wasn't open host but i i needed to use the bits and the bytes and send stuff over uh yeah lower level communication so it didn't have a published language i needed to find that out and re-engineer it from the start so there sometimes is but yeah it's not really so useful right so that would be an example that if you you know you can integrate with it but they just didn't take the effort to publish it yeah yeah the language a good api so yeah yeah there are examples but not in the business consultancy i'm in at the moment which is mostly financial you wouldn't generally see that all right i i have a question about uh perception versus reality has it happened to you that you built a context map and for example customers or some teams have the opinion that some open host uses a published language however this doesn't correspond to reality they're using some proprietary language only they understand i mean when you model the system based on context maps has it happened to you that you discover some differences compared to reality where some people get mad because they disagree with your findings most of the time and that's why you want to do that yeah you want to always say one of my main tasks is uh making explicit stuff uh making implicit stuff explicit and this may lead yeah to [Music] tension yeah of course um yeah um i i often see disagreements but what i do is that usually when i do context mapping in a rather difficult environment i usually discuss the patterns and how we interpret them beforehand with the teams and the folks who are involved in there so that they know okay that's how they see that that's how they see this and here and there you will have some some pieces where everyone ever a lot of people um disagree with certain things yeah and that's something that needs to be discussed then so i just uh linked a tweet to root milan yeah and and i think we keep need to remind people that things like context mapping there's no there's no output here so the context map and wordly says itself the wordly map is not the artifact it's the journey it's conversation it's the collaboration it's the feedback loop you get from it so yeah you definitely take assumptions but then maybe a week later you find out we learned something new exactly yeah so it's it's not a one-off it's a continuous learning definitely yeah for sure yeah and i've also seen some idea for context maps with rather strict governance models being loosened up after four months because we realized that that's basically not necessary so let's not do it yeah we learned something that's always a good thing all right i'm still yeah i'm still trying to understand um open host service at downstream uh it's uh very well both you and kenny said you knew some examples but for me it's a bit uh counterintuitive because the open host service is by definition you have a lot of clients and you are usually upstream to your many clients how can you be a open host service with many clients at the downstream side what what does that make your many clients then all of them being upstream having influence on you how would you ever tolerate and cope with that so sorry the the example that i saw was uh there was a regulator that forced certain companies to provide certain interface in a certain structure for quite a few of their applications of the regulators applications so the regulator came to the organizations and they told them you provide this open host service in this structure with this output for us and when we tell you that you change something you have to change that yeah so it was a service yeah and many organizations had to provide the same thing yeah and they had applications that talked to that service yeah so each service had multiple clients yeah but the the the the team providing the open host service was absolutely helpless and they had no say in this thing at all and they just needed to comply so in this case they were downstream because every action of the of the regulator in this concern had an impact on them and hey so the regulator is up upstream yeah exactly the regulator had the clients ah okay the regulator has the clients okay yeah so that makes all the clients also upstream okay got it yeah was your case similar kenny yeah yeah yeah the regulator just demanded uh yeah the mom demanded what they want to do yeah yeah i misunderstood your examples uh i thought the regulator or the the contacts in the upstream is only one context but now i understand that there are many people behind the regulator yeah the many people many content is it is it like that if you have such a such a relation that is open house and it's downstream is it like something a little like published language because you decide what this language between all those there's definitely a published language involved there yeah because you because there's like writer who decide what kind of language you will talk to the those yeah i definitely see a published language there doesn't it make them the regulator the open host well because the regulator doesn't know they ask yeah exactly yeah all right but you won't see this uh oftentimes yeah it's a nasty pattern that you will only usually see in that case that regulatory side as far as i've seen it maybe banking and insurance that's where you see it most of the time maybe maybe i see a potential also in terms of cars when the connectivity of cars races and races and races and regulators demand certain interfaces to cars but maybe another case yeah but i think let's see how that goes yeah but it's it's nasty and um please yeah as a rule of thumb most of the cases stick to open host is upstream and i think you have a very good starting point for a discussion okay michael i just want to give you a feedback i really like your distinction between um uh open host service and publish language that do not necessarily have to go together like in vernon's book i actually like the analogy of the consortium that there are multiple parties that need to agree on the published language like the google case the google map example that unilateral decision about a language probably doesn't make it a published language i i think that's quite useful for me that's my personal take how i use that i know quite a few other folks who say the okay model from the google maps api is a published language because it's a published part there is a language from google which is being published there if you go through the formal definitions you can go one way or another and my to be honest my my personal opinion that if someone provides an open host service i expect them to have a well-defined interface including the language that they give out through that open oh service yeah if they don't have that maybe it's a messy open host service or something like that but my personal take here yeah that's that's something that is very applicable for me and the work that i do maybe i'm breaking some rules here can be the case um so going into the official eric evans he also says often combined with open host servers exactly so yeah i agree with that statement myself as well because sometimes as you said people might provide a published language but then you try it out and then it's like what no it's like speaking to a language uh speaking to a country with several languages yeah i don't know which language they will reply so yeah not a well-defined published language i mean i i need to give to give credit to vaughn in the text yeah he also has often combined with published language but in the images in his books there i i think i haven't seen one open nose service without a published language in any image yeah and that's where i sometimes that where i once came into a discussion with a team they said hey look at that we we see that it's always the case i was like ah nah i don't think so yeah maybe he he wasn't the aware in with regards to the images i don't know but in the text it's very clear as well yeah but i think i think the reason why i like your way of seeing it michael is because you open up the possibility to use published language not only in terms of interface and implementation but also in terms of organizational relationship because if you need several parties to agree on that one then there is a coordination relationship as well if we can generalize exactly exactly okay one last thing for today at the end of the mural board i added a voucher for my ddd book and if you want to read a very lengthy discussion this this book is about the case study that we have just gone through yeah it's also in the book and this book has some theory part but also many exercises regarding that case study around bounty context technical design patterns and also context maps so if you want to reread a lot of that stuff there is a voucher where you can get it cheaper yeah the book and otherwise if you have any further questions i'm happy to answer i'm on all platforms you can find me on twitter linkedin yeah and so on so feel free to hit me up with any further questions and yeah i enjoyed the evening with you i hope you had a great time again as well and i hope you managed to learn a little bit about context maps yeah thank you yes i learned a lot really thank you the board details wait a minute i'll repost them in a second i'll post them in the link as well yeah sure i'll leave the board up yeah so um you can there are a lot of extra boards so if you want to take [Music] this exercise with your team or with your mates yeah i think uh boards five to ten are um untouched so to say grab one and play your play around with it good okay with that uh we're gonna close the session uh i'm gonna leave zoom open for just a few more minutes but i'm gonna close the stream uh thank you everyone who's still watching on the youtube site thank you for joining i hope you learned a lot and uh in the next two to three weeks there will be new sessions a small sneak peek next week on tuesday we'll talk with dave farley about test driven development as a design tool so be sure to tune into that tomorrow we'll go live and see you next time and go to our virtual dvd platform to learn more bye-bye thanks guys
Info
Channel: Virtual Domain-Driven Design
Views: 996
Rating: 5 out of 5
Keywords: Domain-driven design, meetup
Id: OthhRfqp-44
Channel Id: undefined
Length: 110min 1sec (6601 seconds)
Published: Tue Nov 10 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.