Thank you, and sorry for the flicker. I hope you can manage to see the slides anyway. Who here knows what Yelp is? Oh, that's actually Sorry, actually quite a few people. So I'll be quick Well Yelp Yelp's mission is about to connect people with great local businesses. We have a website an app and a mobile website We have 142 million unique active Visitors monthly. We have 77 million reviews by those Users and we are available in over 30 countries. We most recently launched in the Philippines And we're not only for finding like great restaurants and bars But also like great doctors great shops and any other kind of local business We also have this is probably like less known. We have Yelp for business owners So if you're a business owner, you can come to Yelp. You can claim your business. You can market as your own And you can then measure visitor activity on your Yelp page You can interact with customers. So if customers leave a review for your business You can reply to that in public or in private and you can upload photos for your business and do a bunch of other things So who am I? I'm a back-end developer for the Biz owner app I worked on the main Yelp app back-end before that I'm a Python user since 2008. I Started doing a lot of Django work back then before switching to application and now mobile development So let's take a look at why we're going to Okay, that's already not good. There's supposed to be an image there Um About Yelp. Let's take a look. We were founded in 2004 and actually like one of the co-founders Jeremy Stoppelman is still running the The company is our CEO and all of our code was in a central repository. We called Yelp main Which means the code for the website including templates the mobile web the mobile back-end and the business owner site all in one Repository, which means we had a lot of homegrown code And as people worked on it and they introduced new abstractions They didn't remove the old ones and it was hard to Reason about the code do these big refactoring so as Yelp grew and we are still growing We're still hiring people this started to become a bottleneck. We actually like at one point. We had three different ways to do SQL statements was execute SQL statements in Yelp main. That was not nice So, yeah, we cannot really refactor all the code and I want to dig deeper into another area that really highlights our bottleneck I'm really sorry like I need to really sorry about this Yeah Sorry about all of this. Yeah, so we had a lot of homegrown code Finally, we see the images. This is what Yelp look like back then We have a lot of Yeah, abstractions. I talked about that. So let's talk about the push process, which is what we call when we deploy Yelp code We do deploy Yelp code several times a day This is done by a push master, which is an engineer that has production system access people Take their code changes their code review changes They want to push to production and they join a push and then the push master runs this push we have like several tools to Assist us in doing this. You see a screenshot of push manager, which is actually open source Where we manage the pushes and people can say hey, I want to join this push and I want to Push my changes to production and as you can hopefully see It's not that clear. There's like a small red bar next to my push Are you I ran and it's red, which means this push didn't make it to production We had to abandon it and I'm going to talk a bit out about why this might happen So when we run a push at first there are some automatic checks that take all changes Build a deployment branch where they merge all the changes in that deployment branches then yeah Well deployed to a stage system And then after manual verification so all people that joined this push they need to be present They need to verify that their changes work on the stage system and if everything is okay or test suite We are happy with our test suite runs then we send this branch to production We do the same thing we watch production for a certain amount of time And if we are happy the push gets certified the changes get merged into master and starting from that the changes are live and We're done people when they branch off and they started to work on a new change They will branch off of these changes. This is a two-hour process with really no upper bound Why no upper bound because like if we find problems let's say on the stage system We need to take out the problematic change Rebuild the deployment branch put it again on stage system run our test suites Go again to production and so on and so on until we have a new code version that is good and that we can Leave on production and you see here a screenshot. This is actually like another tool that helps us during the push Where you can see? Which hosts in our data centers are already running the new version of the code. This is the green bars which Hosts in the data centers are running the old version of the code Which is the red bars and the yellow bars are the hosts that are in the process of bouncing So switching to the new code version I have to say like our release engineering team. They are hard at work and like optimizing this process. They're really Like making it better and better more automatic But still it was obvious that like this doesn't scale you can run only so many pushes a day and The more people join Yelp and we are still growing The harder it becomes to have like a push without issues so Some yeah Intelligent mind set together at Yelp and they thought about a solution and they found one I don't think we are the first company that came up with this solution, but it's yeah kind of obvious We need to modularize We are at a certain size where you cannot work with a single code base You can only run so many pushes a day as I just said And even if you increase the number of pushes the number of people that develop at Yelp also increases Yeah, you will run into problems eventually. So let's build services How do services solve this problem? Well, each services Developed and deployed independently. So you don't actually need to know about this huge code base You just need to know about your service Service pushes are very easy and very quick People can do it themselves After like short training Services usually only cover like one aspect or one set of features Which also makes it very easy to like introduce new technologies to refactor code Reduce technical debt all that kind of thing and it's Actually, it might even bring some performance benefits Since when you have like this big monolithic code base and Python It's not that easy to parallelize things, right? So when you switch to a service oriented architecture, even though at first you might think hey Like I'm doing network requests instead of like function calls. This should be slower It might be actually faster than before if you do those requests asynchronously at the same time and Just wait for the longest result We actually also wrote like job service principles It's like a list of do-and-dones for services or reasoning about services or thoughts Go check it out. It's on on github. Yeah, so why might we not want to do services? Because well chaos might ensue like I actually stole this from had Fred Hatful like a colleague of mine He also gave a talk about services. You can find it online. It's really good Well Why not services consistency is really hard. It's actually like non-existent There's no such thing as a transaction over like several service calls You don't have clear dependency or usage graph So which means you need to maintain your interface with your API forever since you don't know who is going to use it And for how long it also means like that testing like one huge self-contained code base It's easy. It might not be simple, but it's easy But how do you test your loosely coupled services which are out there? So this is the chaos I was talking about. How do you make sure stuff doesn't break? Unit tests everybody loves unit tests or at least many people do but in my opinion They are great, but they are not enough since in a world of loosely coupled services a breakage Many times occurs at the interface level. So like some service you call it subtly changes its interface its API the developers maybe didn't even intend to and Yes, your call breaks. The answer is not that what you expected it to be and this is a huge problem What's our solution to that our solution is acceptance tests? So instead of mocking either like with unit tests at the function lever or further out We don't do any mocking we run all the code from the request as it comes in through all services. We might call Back the whole workflow and then we test the response we get and make sure it's what we want it to be It's as close to production as possible without like setting up your own dedicated stage environment And it's yeah, what we do at at Yelp So we put all the components the services anything else you need in docker images We spin up those docker containers. We use production code for these containers And we use docker compose. It's it was previously called fig to manage these Infrastructure, it's a bit heavyweight. So it takes a long time to run not the test itself That's actually fairly quick, but like spinning up all those docker containers Setting everything up that takes quite some time And it actually grows with the number of services you have obviously like so you call more services So your acceptance testing setup has to grow accordingly Yeah, so it's a bit heavyweight, but We're really happy with the results since it gives you a certain amount of Confidence in your changes because you can say yeah, this is going to work in production So just an example of what this might look like This is part of the acceptance testing setup for the biz owner app back end So we have some configs. We have the main Biz app definition where you can see under links. This is like all the dependencies we have all the direct dependencies Those are like several different Services within Yelp internal API is actually like to service Front-end of Yelp main. So that's like our legacy code base and you can see on the right That one itself has a bunch of dependencies. So that's how your acceptance testing Setup grows. Yeah, but as I said It can be a bit cumbersome also like setting up test data because some services have their own Data store. So when you create your test fixtures, you need to make sure like all services are like in sync have the same data So your tests work, but overall We're pretty happy with it. So now that we know why we do services and how we make sure They don't break randomly. What's our service stack? We originally started with tornado, but that Didn't work out quite as well as we hoped So our current stack is pyramid just the latest version of pyramid with you whiskey and sql alchemy and It works out quite well We use HTTP obviously as transport protocol JSON for the data format and one very important block of our service stack is swagger, which is an API framework So with swagger you specify your API you write actually JSON to specify your API And there's a bunch of tools included one of them is swagger UI, which helps you visualize The API you just defined This is what it looks like For for a random service at the Elb. I think this is business media So you see your methods get and post you see the endpoint you see the request parameters Your service expects or that endpoint expects the data model You will get as a response So you can browse and find all the endpoints you might need for your work Swagger does more. It also does request and response validation optionally, but I would encourage you to to activate that since it makes sure like your request parameters are There and in the specified type as as specified in the spec your response is actually Fits what we saw here in the data model It does data structure and basic type checking on individual field level And it works dynamically by reading a services back. So there's a library called bravado It was called a swagger pie. It's open source We it's on get up on our get up account And it like dynamically reads the spec and generates your stub So you can like do function calls or method calls in Python would actually do the HTTP requests and We used to do that with client libraries, which was quite painful So say you wanted to develop a new endpoint For your service you would do that then you would check out the client library. You would generate The stub code for that new endpoint You would commit that after it went through code review You would bump the client library version number and only then when people upgraded to the new client library They could use your new endpoint all of this Swagger pie or bravado takes care of it for us and it makes it really nice to work with it So let's talk a bit about a specific service the biz app service, which is the service that powers our biz owner app Clients Android and iOS clients It's a bit of a special snowflake since it's one of the very few services that you help You can reach from the outside usually they you can only reach them from the internal network It's also unlike other services. It's not constrained to like one set of features or one area It contains the whole API for our app clients And it has no local data storm. So actually many services have their own data store We don't so oftentimes we are just a proxy. We are calling other services We are calling Yelp main. We are aggregating data and returning Formatting it enriching it and returning it to our clients So how does our mobile API look like well, it's it's a rusty API, right one resource per endpoint do multiple calls To fetch related resources Blah blah blah probably already know all of this and this is how we develop services at Yelp But not how you do a mobile API Because you are over a cellular network You want to be as efficient as possible and you want to do as few calls as possible So what we do is we have one endpoint per client app page. So for every page Your app displays We just wanted to do if possible just one network request and send it all the data it needs For post-end points whenever like you you want to save something from the client We not only acknowledge that the right happened successfully, but we also send the client back all data It might need for follow-up pages to display that this is quite different from our yeah lower level service APIs That really are more rusty so you can say that Yeah, we aggregate we do like many service calls for typically many service calls for one Client request we get and we just aggregate and send data back and yeah act as a proxy So what does it mean to develop? mobile app Backend I come from web development. I imagine some of you do as well Turns out mobile apps have releases in our case for the this owner app They are synchronized. So we release Android and iOS at the same time with the same set of features and iOS apps need to be reviewed as you might have heard and This actually takes quite some time. I remember it like it used to be like five days Nowadays, I think our longest review time was 11 days. I think it's back to about nine days That's actually like quite a long time and you probably want to test the whole thing before you release it And in this case releasing means submitting it to review to Apple So our API needs to be done sooner than the client implementation And which means it needs to be done way sooner than when the app is released So when you can download it on your phone How else is it? different than web development You cannot upgrade the client whenever you upgrade the server. In fact, some Clients never upgrade like we still have a tiny portion of users on the 1.0 release for the biz owner app Which we released late last year So unless you want to drop support for those Users you need to support Your API forever, which means you cannot do backwards incompatible changes How do we deal with that? We do a multi version API So we have the same endpoint with a different version in this case We append the version at the end and we do maintain and test all versions to make sure they still work This is obviously It costs something it costs effort so maintaining multiple versions We don't want to do that needlessly so what are the ways we can think of to make sure we don't have to do Multiple versions all the time. It turns out if you just add data to the response That's backwards compatible our clients. They will just ignore it the legacy clients the old clients and Our response validation what swagger does for you It's also smart enough to just ignore additional data I just make sure that the data as it's defined in the spec is there and once we Develop on the server and we add that new field. We also add it to the spec. So actually our response will be It will be okay. It will validate right So this is what it looks like this is an example out of a JSON spec for an API And you see the green part. We just added one field time zone Type string with a description and we could do that without having to do any other change to that file So obviously like we didn't introduce a new version endpoint It would just work So how do we make sure it actually does work in production well, we do some monitoring We monitor the number of requests the server errors Task you send push notifications. Here are some examples. This is a tool like an older tool Almost not see it where we look at the types of errors that happened at the rate of errors We now have like a bunch of nice kibana for dashboards. We can like actually do almost anything you want We send a bunch of our metrics to signal effects so we can build nice dashboards You can visualize them analyze them and we use the last alert, which is really nice open source tool Be open source. I think last year you should really check it out. That's very easy to set up your own alerts So, you know whenever something is wrong For app crashes so whenever our client apps crash we use crash litics both on Android and iOS And as soon as you reach a certain size you probably need an on-call rotation So you need to wake up people whenever things break We use pager duty for that. We have integrated elast alert into pager duty So for severe errors we get paged. We have integrated crash litics. So if our app crashes spike We get paged Yeah, that's Basically already about it. I want to just Mention another talk if you're interested in services Scott Trillia is going to hold another Give another talk about services arrested development Surviving the awkward adolescence of a microservices based application That was hard It's Friday 11 a.m. In the Python anywhere room. Go check it out. It's really a great talk Also some other shameless plugs. We are hiring. So if that sounded interesting to you Check out yelp.com slash careers and even if you don't find like your ideal Job opening contact me or contact us on our booth. We will figure something out We are always looking for talented people. We actually have offices in Hamburg, Germany. This is where I work also in London And obviously in San Francisco Yeah, we also have an engineering hub where we aggregate our blog posts We have our open-source efforts documented there and more we are on Twitter And last but not least this is a fun one I urge you to check it out the Yelp data set challenge If you ever wanted to do some data analysis, but you didn't have data or you didn't know what to do Go look that up. The last one just ended But the new one will probably start like before the end of summer Go check the website. It will be announced there and the deadline will be sometime by the end of the year Yeah, it's a lot of fun and you might actually even Win some money So that's all. Thank you very much. Sorry for the technical difficulties and yeah, if you have any questions just ask Can you talk a bit more about your aggregator? Like is it something open source? Do you plan to open source it or Is it a process on its own or is it a web server module or How does it work? aggregating what? for your APIs Well, you you say like you have an aggregator for making only one request and To not and one request per page and not ten requests That's basically like what our biz app service does so when when a client on an app makes a request HTTPS request to our service it hits To our servers it hits our service and our service does everything it needs to like satisfy that request So it will do multiple service calls Aggregate the data collected from different services from Yelp main put it together Fetch related data everything the client needs and then send that back to the client in JSON Over HTTPS. So actually like our service. This is like what we develop is the aggregator and does all of this and Yeah, and sometimes like when we want to aggregate that data There is like I mentioned this internal API interface into Yelp main Sometimes there is no interface for the data we need so actually we will also be developing that interface And then use it to fetch and aggregate the data I have actually two questions. The first one is what was the problem with tornado? Just curious. Yeah, I was Fearing that issue might come up. I was actually not at Yelp when when this was Tried out You might try to ask Scott about it. I don't know if he knows or you can also come to our booth There are other people we can ask honestly, I can I cannot tell you I just know that it didn't work out well And now we are really happy with pyramid. Okay, and the second question is how do you handle logging in the docker containers? Yeah, that is an issue We do logging. It's it's done inside the docker containers. We exposed The logging folders as volume so you can actually like start another docker container and mount Those volumes from the individual docker containers and look at the logs Hi, thanks for the talk Can you comment more on Your development process because I can imagine that testing it's a huge overhead. So do you have separate team that makes the Testing or does every developer is able to set up the whole Infrastructure with dockers. How does it work? Yeah, thanks Yeah, that's a great question Yes, every developer is supposed to not only write the code but also write the test So typically like the development processes you you create a branch From within git, right? You do your development once you're ready You post your changes for code review other developers review the code and hopefully if they pay attention And you did a change without adding tests for that change They will say hey like you should write a test for that the developer then decides well is a unit test enough Do I need an acceptance test? But yes, every developer is able to run the whole test suite on their local machine and Then run the test Yes so actually like When I say local machine we have something called developer playground where you look log into a machine where you do your actual work on and It has like everything ready for you to run the test. So docker is installed everything is there We have our own local docker registry. So it will just yes run the tests and you can write them and run them by yourself Hi, thank you very much for the talk. I just have a basic question. How do your services communicate actually I didn't get this You mean us in San Francisco No, your internal services because you said you have a modular structure and yes, so it's just HTTP calls With yeah, Jzone data exchange. So that's basically how they all communicate unless it's like something very special Thank you You mentioned the acceptance tests when you do deploys Do you do any locking to avoid? two deploys of Services that are required in the acceptance tests so if if one service depends on service B and both this service and B once they want to be deployed What do you do then? Ah, yeah, okay? That's like since it's so loosely coupled either you have to pay like real Good attention or you cannot do that. So each service is considered independent. So If you need like a deployment or you have a deployment of your service and it needs to Have some other changes and other services before you can do that deployment You you just you as a developer as owner of that service. You need to make sure you don't deploy too early Usually like when we do a deploy The whole test suite is run as the first thing even before we go to stage So hopefully if you have good test coverage, you would like notice then that things are not there But generally it's your responsibility since we have loose coupling that you don't deploy breaking changes to other services That you remain backwards compatible and that if you depend on changes from other service that you do the deployment in the right order Okay, thank you. Hi. Thank you for the talk. So can you please clarify? What is the problem with the testing services? So you said that each service has a specification There is some tooling around it like swagger which Verifies that search a server response matches the specification and so there are service a which depends on service B and why cannot just service a expect the service B is always producing valid responses and It looks like you don't really need to run Request through all the services around and with the production version of service B for that Yes, great question. So it's mainly about the human factor. So We don't have the tooling in place to check for this automatically. Basically our acceptance tests are That tooling to make sure a new service deployment doesn't break anything. It it has happened in the past multiple times I actually remember once that a service got deployed which then broke Something inside Yelp main because Yelp main called that service because the developers they just didn't think of the fact that this small change Was actually not backwards compatible Since we don't have something like as rigid to make like sure. Hey, you you cannot deploy a change. That's not backwards compatible We have to write tests for that and that's basically our our check for that Hi, thanks for the good presentation If I understood correctly, you have a mobile API like an API specific to mobile applications Have you ever considered having different slightly different? structure or information returned to different types of devices like different for Android and iOS Yes, we actually do that for our what we call consumer apps So basically the apps you will download on your device We not only might do that depending on device type But also depending on the version of the app you run and other factors. So yes, yes We do that up until now We will we have been able to get away with just different version endpoints and sending generally the same data Both to Android and iOS But we are in the process of actually developing something similar for the biz owner app as well Doesn't it make testing your API more complicated? Oh much more complicated It's it's like basically any of these checks is like another branch in your code So yes, that's why we are trying to avoid that as much as possible. Yeah, completely agree Thanks. Hey, I think One more, okay Thanks for the talk. So question is you had a Yelp main and Was the definition of reasons like how you Recognize that you need to decouple this main From service. I mean, how you recognize service first like what's the definition of first the service first Well, we try to put like any new code we write if it's Reasonable we try to put it inside in service and then use that from Yelp main or wherever To decouple our code. There are also efforts going on and taking code, which is already in Yelp main Extracking it and putting it into services. Just so our development speed can increase Ramping up new developers actually becomes much faster since code is just simply less complicated and less huge That's Difficult to like answer generally, but if you look at our Yelp service principles, there's like I Could actually reasons about that So I cannot like mention all of it, but I encourage you to check it out. It's actually like handles that topic and If you want to talk more about this like I will be at the booth now There's also a bunch of other awesome Yelp engineers there. So just come talk to us. We're happy to nerd out about this Thank you again


So, good morning and welcome to the IIEA's latest public webinar. It is a great pleasure today to welcome Dr Enrico Letta, who was Prime Minister of Italy in 2013-2014, and previously Minister for EU Affairs and also Minister for Industry and Commerce. He was a member of the Italian Parliament from 2001 to 2004 and again from 2006 to 2015. In the middle of that period, from 2004 to 2006, he was a member of the European Parliament. He currently lives in France, where he is the Dean of the Paris School of International Affairs at Sciences Po. Italy has been one of the countries hit hardest by the coronavirus, and on behalf of the Institute, I would like to express our condolences and solidarity to Enrico during this difficult period for his country and indeed for all of us. The pandemic has been a great shock. It has led to a significant loss of life across Europe and the rest of the world. It has pushed tens of millions of people into unemployment, and it threatens the survival of millions of businesses. It has also generated political strains, not least among the members of the European Union. Dr Letta will address some of these issues over the next 20 minutes or so. He will then take questions which can be submitted via the Q&A function on Zoom, located at the bottom of your screen. Feel free to send your questions at any time during the presentation, and if possible, if you could keep them shorter rather than longer, it makes it easier to moderate the discussion. So thank you, Enrico, again for joining us, and we look forward to your presentation over to you. I thank you very much, first of all. Thanks, the Institute, and your personally for this invitation. For me, it's a great opportunity, and thank you also for your kind and very warm words. I will propose five different points that I would like to raise in this presentation related to the European response in what different countries like mine are experiencing, which is the way in which we are living in this period, and what are the potential risks for the European Union. I take for granted, maybe the Brent and the slogan, very sad, that one of my mentors, Jacques Delors, decided to tell us some weeks ago, saying that the European Union is in a mortal risk in this very period. And I think Jacques Delors, his voice is very rare, in this very period. And I think he's right, there's a mortal risk for the European Union, and we have to act to avoid this mortal risk. So five points. One first one is the fact that this crisis is creating a big, big, big challenge for the rise of inequalities at the European level and within our societies. Second, there's a second big challenge is for other democracies. Democracy is in danger, human rights, digital human rights are in danger in this very period. We are under pressure on privacy rights and on democratic rights, and it's a second big topic for me. Third topic is the fact that European Union is giving two tracks, responses from the corporations, the cooperation among member states, and there's a big difference. Fourth point is the big divide on the post-coronavirus policies and which kind of response to tackle the economic recession. And there's a big divide within the European Union between two group of countries. One group of countries thinking that growth policies are only at national level. And another group of countries thinking that we need European growth policies, and I think the next European Council will be the ground of the battle on these two different ideas. And my fifth point is about the fact that we have to follow the way in which the political debate at European level is raising in the last weeks and is developing itself because there's a true political debate, maybe for the first time after a long period. At the same time, this political debate is more influenced by stereotypes, nationalistic or national stereotypes, lazy stereotypes, and the big risk is also related to these stereotypes and this kind of communication. So, start by addressing my first point. I think inequalities are there, raising, because of men are the most, for me, important in our society. First one is related to education. We are all experiencing, what does it mean, passing to online courses, online school activities, education activities. We are all thinking, even in my university, on how to start again next fall semester and it is not for granted that we are able to have full classes or physical presence in our universities in September, the same for schools. And my point about education is the fact that when you have someone in difficulty in a learning experience, online is the way to leave him alone at the end of the day, not to take care of him. And the physical presence is the only way to take care of someone who is in difficulty or risks to be marginalized. And the big and the first big inequality today is in the education field. The second one is on social, on jobs, on labor market, we had to face a big revolution in the labor market because the digitalization of labor market is bringing a situation in which after the crisis, I think many jobs will be fired because of the acceleration of digitalization is something that we can't avoid. But at the same time, the social disease and social consequences will be a sort of earthquake. And at the same time, the other point in terms of inequalities, of course, is related to the fact that the virus is the same for everyone, every country. But there are countries with room for reactions because of less debt and countries with less room for reactions because of the past and because of debt of the past. And of course, we need to react all together in a very strong way, not pushing for widening the gap because the big risk is to have countries with more money today and able to respond and able to relaunch. It's very important to stop any narrative based on the grasshopper and idea, the idea that there are countries that deserve to be attacked by the virus because they were with debt and finance, not in order and so on and so forth. The virus attacks without any law and this could be a more challenge for Europe in this very field. My second point is about the way in which democracy is under pressure. There are many subjects. Of course, there's the Hungarian issue, the fact that in Hungary we had this experience that is until symbolic, but maybe it would be more than symbolic of how does it mean to close parliament or to have because of this emergency and approach to democratic values and democratic rules that is not the correct one. I think it was very important that the European Parliament decided to keep open and to work in these very hours while we are here connected in this seminar. The European Parliament is discussing, debating, voting remotely and it's a great lesson of democracy because I know very well that the role, the substantial role of European Parliament in this crisis will be very important. Having the European Parliament closed will bring the European Union to have different responses, more technocratic responses. Having the European Parliament open will help the European democracy and the European response. So I think this great topic we have to use this emergency to move towards a more maybe virtual way to apply democratic values, democratic rules. It is very important to show the great lesson. The other great lesson on democratic challenges is related to privacy. Digital human rights, I just mentioned this point. I'm very much worried about the fact that we are not discussing about it. But at the end of the day, we are tracking patients, we are tracking people in disease. We are all happy because we are tracking because of the effectiveness of lockdown, but frankly speaking we need to continue to follow our values, personal freedom, digital human rights and not to transform our society. In a, I would say, Polish state, it's not, I think, the way in which we can convert our European values. I mentioned this point because I think it is a crucial one. My third point is about the decoupling the responses by the European institutions. We had very effective responses coming from European federal institutions. I already mentioned European Parliament, but I paid tribute to the European Central Bank and European Commission. Frankly speaking, in four weeks, European Central Bank and European Commission did more rather than the Commission and the ECB did in four years from 2008 to 2012. During last crisis, they took four years to try to solve the crisis and to invent new tools and to react. In this crisis, four weeks and the Commission and the ECB were able to be very effective in some important responses. We are today able to discuss, apparently, in a quiet situation on solutions because of the effectiveness of the ECB response, for instance. And I paid tribute and I think the European institutions after maybe some mistakes, some communication mistakes at the beginning, but every leader in every country had committed a lot of mistakes during this crisis. So I think it's acceptable to think that some mistakes were there. But at the end of the day, the European institutions, until now, made a very good job. It is not the case of the European Council until now and the cooperation among member states is the crucial negative point. Of course, we have next week a very important rendezvous that is the European Council and the European Council can change the direction it can give and I hope will give a very important and positive responses. But until now, the feeling is that the cooperation among member states is not good. The reactions are not positive and the way in which they found agreement within the Eurogroup was not the best way. And yes, the agreement was there, but we are very much worried about the evolution of this agreement. So there's a big distinction between European institutions responses, very effective and ineffective responses coming from the cooperation among the member states. My fourth point, the other cleavage is the cleavage that will be at the end of the day the mood and that will be the frame of the European Council meeting next week. It's the fact that how to react to the crisis. Of course, we need to tackle the sanitary emergency immediately today and it is clear that this is the main emergency, the main priority, but we know very well that the figures, the recession, the worst recession ever, we need unprecedented tools for an unprecedented crisis. This is why I think this is what I guess the most important part of the discussion for next European Council will be the famous fourth pillar of the conclusions of the Eurogroup for the European Council meeting. So this famous recovery fund that is mentioned also in a large interview today, the FT by Emmanuel Macron, I think this point is the crucial key to understand if the half glass is full or half empty glass at the end of the council. I think the key will be the perception about the evolution and the development of this fourth pillar. The other pillars are more traditional tools, the ESM, the investment bank, they are still there, they are traditional tools like also the budget, maybe the less traditional tool is this program sure by the commission is a positive one, it's a big positive step, but it is not something completely unusual. It was there, it was there in the perception and in the elaboration of the European Commission and the Commissioner, Nicolas Schmidt was working on this topic since the beginning of this mandate. But what is for me important is this fourth pillar and on this fourth pillar is the recovery fund that needs creativity because we need an unprecedented tool for an unprecedented crisis. There are two different philosophies. One is the idea that, that is the idea, the typical idea coming from Amsterdam or from the Northern countries. This Unseatic League has framed it that the European Union is there to assure financial stability. Then growth policies are in the hands of member states. I can't agree. It is not the right way to address modernity and the real situation of Europe today because Euro area is very integrated area. It's a very integrated in real economy terms. So we need to have three levels. We need to have the stability, financial stability assured by the ECB. We need to have national initiatives and national policies, but we need also European and Euro area policies for growth because our Euro area is so integrated that we need to have these kind of integrated policies. And the fight between these two different ideas will be, I think, the big frame of the next European Council. And the final solution will enlighten us to understand what will be the future of the European Union in these terms. My final point is about political debate, stereotypes. I think we had in the last months a debate full of stereotypes that changed very much the perception in our countries about the European Union. I was really negatively impressed by seeing some polls in my country, Italy, with the change we had in these four weeks. I mentioned four weeks in which European institutions helped our countries and helped Italy, but the perception was slightly different. You have a poll saying that today the true friends of Italy for the majority of the Italians are China, Russia and the US. And the true enemies for the majority of the Italians are German and France. And frankly speaking, I think that this perception, the idea that our neighboring countries and European friends are not there to help us, but we have countries like China or Russia that are there to help us is the perception that is there after one month of crisis. And because I saw a very stereotype based debate, I repeat this, grasshopper and narrative was very negative. This is why I think we have to switch and we have to change completely the narrative saying that the virus attacked Italy and Spain, not because they are countries with large debts. They attacked Italy and Spain. It was by chance like New York City today is the biggest city under attack by chance, because it's a southern or an ant city or country. So it is the virus is there, is there in an unprecedented situation, asymmetric situation, and we have to consider that the response has to be symmetric. So we have to consider that all the recession we will experience will be problematic for all of us and we need to have a general response. And this political debate that we are experiencing for the first time we had in all our national debates, interviews of European leaders, debates with other European leaders coming from other countries. And for the first time maybe the domestic debates where they're trying to understand the point of view of the other people or the other countries, but these stereotypes and this race of nationalism in the domestic debate was very negative. And I hope that the second part of this narrative yesterday, Ursula von der Leyen gave a very good speech in the European Parliament. She was very good. And I hope this speech will start a second time, a new narrative on the European response that makes solidarity in reality, because union means solidarity and without solidarity there's no view. This is my take, this is my general guess, and those are my five points and I will be more than happy to discuss with all of you. Thank you very much for that very comprehensive and clearly structured speech. As I say, we're open to questions, a lot of questions already coming in and I might go to our director general Michael Collins, who picked up on your very last point in relation to President Collins comments yesterday at the European Parliament where she said Italy deserved an apology from the rest of the EU. Michael asks, should Italy accept this apology and he wonders whether or not irreparable damage has been done to the legitimacy of the European Union in Italy? I'm afraid damages are really very, very wide and very deep. The words are showing these damages. I think now, of course, words are important and what Ursula von der Leyen said yesterday was positive and very important. I think there's a last chance, the last chance is next Thursday, next European Council next week. I think the results of this meeting will be decisive because if these results are presented or communication is very important, if these results will be full of tools, I'm sure. But if they are presented in a positive way, in a good way with the idea that really there's a common path and common mission all our countries, European countries are thinking that it's a problem of a common reaction to the recession, I think we can cope with this complicated issue and complicated situation. Otherwise, if next week we start with the narrative of Prime Minister Wouter or Finance Minister Erkstra, the two Dutch that were so tough against Italy and Spain with the idea that it's laziness, that is the reason of why the virus is in Italy and Spain and not other reasons, I think it's damages will be very high. I have to say that almost everything is in the hands of one person. And this person is Angela Merkel because at the end of the day, she was very tough and the previous European Council, stopping any idea of Eurobond. Now she has to be very open on the recovery fund because the recovery fund and the effectiveness and the concrete result of the recovery fund are the only potential possible solution. So I hope that Angela Merkel will be at the level of the expectations, at the level of her predecessor Helmut Kohl when Helmut Kohl decided to take some important decision more as European leader rather than just the German leader. It's time for the leaders of European Council to think to themselves that they are European leaders and not on the national leaders. Could I follow up on that point? Do you think in countries such as Germany that the population feels that kind of European response is legitimate? So is it possible for a leader such as Angela Merkel to lead her people to do something that is very different from the past and may involve considerable amounts of money? Do you think the legitimacy is there for such a decision? I think it is very important that the rest of the European debates can help her to be convincing and to help her to be convincing. We have to clarify that there's no mutualization of the debt on the table. That is the key point in political terms. If we are all very honest and clear on that point, I'm sure that the German people will understand. But in their own interest, I know very well that the German Entrepreneur Association is pushing for European solutions. But they know very well that there are many important outcomes of the German industry that are with German flags. But at the end of the day they are European. I mean, for instance, car industry. If you have Mercedes in mind, Mercedes is a typical German brand in the world, but one third of the part of Mercedes is made in Italy. And they know very well that they can't allow Italy to collapse because Mercedes will collapse with Italy. And that is the way, this is why I mentioned my presentation, the fact that the euro era is really integrated. And this is why we need integrated responses. A question from Antonio Oraldi, who asks if this crisis could generate changes in the EU that would address its democratic deficit. I suppose the question presupposes that there is, is it in the EU? You may have thought about whether there is and whether this crisis could change that. May the 9th was the date supposed to be the starting point of the conference of the future of Europe. This conference will be postponed, maybe start in autumn. It was, in my view, a very important step for the future of the European Union, because there are many things that the European Union has to rethink and to reshape. About democracy and about politics. My point is related to the fact that we are all in the hands now of 27 national leaders. These national leaders are national leaders that are under a national legitimacy. They will be in the European Council taking decisions, but they will be all legitimated by their own national constituency. I think time is coming to start with a European legitimacy for European leaders. And this is what is missing today, because it is very difficult to find European legitimacy, a European constituency. A political leader is there to take decisions, but is there also to respond to his constituency. And the 27, their own national constituency is very complicated to ask each of them to be leader of a European constituency, which doesn't exist. This is why my key point is the fact that we have to build up a sort of European legitimacy in the future. That means transnationalists at the European Parliament or a sort of rebuilding of popular election of the European Commission president or something like that. But we need to reinforce the European legitimacy of leaders. Thank you. Peter Gunning, a former diplomat, thanks you for your presentation and agrees with you on the risks to democracy. But he asks the question around digital rights and privacy and wonders if digital tools such as tracking could be used as a means of addressing the health dimension of this emergency. Yes, this is what is happening in Italy. It is what is happening. The digital devices are used to track and to use information. We are all aware that there is no alternative because we have to face a mortal combat with the virus. But at the same time, I think we need to understand that it is an emergency and we need to consider these rules as emergency rules. And we need to consider, we need walls, we need digital human rights, we need data protection, we need to be very strong with the giants, tech giants, because it is clear that this acceleration of digitalization is done without guarantees. Who is in charge or who is owner of all data that we are exchanging in digital way in this very period with an acceleration without any precedent in our history. So my point is that we need to have in our European institutions and our national government, we need to have to have in this very moment people thinking on how to restore normality or restore normality means how to restore rules and values, digital human rights for the normal period after the virus. And not to translate or not to move the emergency rules in a sort of inertia way through this period to the normal period. Because I frankly speaking I'm afraid of what is happening because we are all aware of what is necessary today, but we are allowing a limitation of freedom and liberties that is unprecedented in our lives and we have to be aware of that. Column lauder of a financial services company good body here raises that very question and he gives examples of the use of decrees in Italy, the limiting of purchases of goods in France from Amazon. And he asks, is there a double standard in the EU treating hungry in one way when there are possible, the political rights violations happening in other countries. So he asked double standard. I don't think there's a double standard because of a very simple reason. The Council of Europe, that is not as you know, a European institution the Council of Europe that is the international organization based in Strasbourg, and for the respect of human rights and principles, rule of law is and was. Accusing Hungary for one precise reason and precise reason was the lack of a deadline for the emergency powers that the parliament gave to the government, and that is the key point. That is not the case for the rest of Europe, we have emergency situations, but within rule of law and within deadlines clear deadlines. That was not the case in Hungary. So I think the key point for Hungary is this deadline, the lack of deadline and is very, I think is correct to point out the fact that you can't create an emergency situation emergency powers without in our rule of law having a clear deadline and having the parliament in charge for this deadline. This is the key point. Question from Bill Ennis, who's an author and journalist, including rights regularly in the Italian papers. His question is, what do you expect to be the future of the current Italian government over the next few months and year, given that the largest parliamentary component five star is opposing the fundamental content policy, namely access to the ESM credit line. That's a very good question and the limit is someone who knows very well the Italian political debate. And I think it is another reason to consider next European Council as a crucial moment for European history because the way in which they will organize the response, the way in which they will organize the recovery fund, the way in which they will clarify the no conditions for the use of the ESM money resources for sanitary reasons will influence very much the political debate in Italy, exactly because of the reasons that Bill Ennis raised. And I think the response to his question, the answer will be also, it depends on the way in which these European responses will come, the way in which Conte will manage, will manage it in the relationship with the rest of the leaders. Until now, I think Italy is standing because of the right choice to create this alliance and the alliance among France, Spain, Italy, Belgium, Ireland, Portugal, Luxembourg, Slovenia. It was a very good choice. It was a very good choice and I think the final result will depend on the solidity of this alliance and the solidity of this alliance means that France needs to stay there, has to stay there and not to leave this alliance to join Germany. France needs to negotiate with Germany to find a solution, but representing the entire group of countries signing with her this document. And on the other hand, Italy has to stay there, not to isolate itself, because it would be a disaster. My point is that the isolation of the country in this very period is the mortal risk for Italy. If we stay there in this alliance, trying to have the solutions that we can have and because the four pillars are all very important. And then if the fourth one is not an empty box, I think the solution is there and it is an European solution. And so that can help us so five stars for the future to develop their more pro-European approach and to strengthen the relationship with the party of democratic. Of course, Italian politics is unpredictable by definition, I may say, and this crisis is unpredictable. So it is very difficult for me to say what will happen in one month or two months time. But frankly speaking, I don't see a crisis of government or a change in the Italian government in the next months. Okay, Lane Davis has a question about your skepticism in Italy, and whether it has deeper historical roots, where you see it evolving. She raises parallels between anti EU feeling or your skepticism in the United Kingdom. Would you care to draw any parallels between how Italians have become more Euro skeptic and the trend in the United Kingdom? I think there's a parallel. I do share the fact that there's a parallel. There's a parallel related to grassroots and reasons. There's also in Italy this division between a sort of big cities pro-European approach and rural areas anti-European approach. This approach is typical of Italy and it was of course typical of the UK debate and the Brexit debate. There's another reason, and the other reason is the fact that Brexit influenced very much the Italian debate and the Italian relationship. Because Brexit happened and the fact that it happened was an help and a push, a boost for the anti-European populist leaders in Italy, because it was considered as before the referendum and it was considered as something impossible to happen. And it happened. So even this fact that it happened helped the Italian anti-European leaders. Of course, the other key point is related to the fact that Italy had two crises, two financial crisis plus migration crisis that helped very much the anti-European. Because in both crises Italy was in the first front, first line, and in both crises Italy was left alone in the previous one because of the timing of the response. In the second one, yes, in the refugee crisis, it's clear that this asymmetric crisis in Italy was left alone. So it was very easy for the anti-European leaders now to start a narrative, an anti-European-union narrative saying that is the third time that we have a crisis and we are left alone. So we have to put together all these different aspects and these aspects are showing that the risk, the Euroscepticism raise risk for Italy is very high. This is why we need responses and this is why we need very, very effective responses from the European Union in this very period. And we are really on the edge. And I'm very worried, I say frankly, but I have to say that is what is worrying me is not only for Italy. I was seeing some debates or following some debates in Spain too. What happened in the last months for the first time created in Spain, one of the most pro-European countries ever within the European Union, for the first time a sentiment that was a sentiment of mistrust. And is the demonstration that this division between North and South core European marginal countries and the way in which the European Union needs strong communication, narratives, reframe and reshape is there. So I think it will be one of the main issues for the future and next week will be decisive. A linked question from Francis Jacobs, a member of the Institute about attitudes to globalization, something that was quite prominent in President Macron's interview with the Financial Times today. He asks, do you think this will have an impact on how people perceive globalization? Will it make people less favorable to globalization? And what will the impact be for politicians like Salvini in your country or Le Pen in France? Will it lead to an increase in support for what might be called populist politicians and parties? Very good question. My answer is that the immediate response, I would say the God's response is that globalization will be stopped by this crisis and this is the end of globalization and so on and so forth. In reality, I think it is exactly the opposite. This crisis is the first crisis of the global world. It is the first crisis of a totally connected world. We understood suddenly that we all depend on each other and these global interdependence, it is not just thought for dreamers or for people, cosmopolitan people, it's the reality. And the last two big challenges in the last 12 months in our lives, pollution and virus, they didn't need any passport to pass borders and borders are totally unaffected for virus and for pollution. So I think the key point is that we will have a sort of mad split because the populist narrative will have a lot of boost because of this crisis because they will start with a very national narrative. This national narrative is raising because national pride, the fact that we are all locked down in our countries, is a way also to raise national pride. And at the same time, this national pride has to become a European pride, not a nationalistic anti-European pride. I say that because I think it's very difficult to have leaders with a sort of track record, negative track record in terms of position or statements like the one that Salvini for instance had in the last months or Marine Le Pen too. They did all the possible mistakes, all the possible mistakes, but at the same time they are there because they work on people fear and they have the European Union as the target. So they are taking advantage of the situation in which they made a lot of mistakes. They failed completely. Salvini is a complete failure. Salvini is the leader of Lombardy in political terms and Lombardy was the main, I would say, responsible for the crisis and the way in which the crisis was mismanaged in Italy. So I think Salvini is unable to say that is because of someone else, because of scapegoat. Scapegoat doesn't work in reality, but at the same time these kind of fear narrative and the topic of European Union and scapegoat works. So I think that we need to have responses, quick responses, effective responses and to avoid the recession or the worst recession to avoid populism. So populism is always the outcome of recessions.  I'm not out on that. Many, many questions. Can I take two, because they're both related to next week's European Council meeting. Bobby McDonough, who was Ireland's ambassador to Italy while you were a prime minister, asks about the role of political leadership in Italy in terms of influencing public opinion in relation to the European Union. The second question comes from the Irish Times Europe correspondent Neiline O'Leary. She asks about the risks of having a discussion at the Council about this, that if we talk about this, a European response is being absolutely essential. Is there a risk that the demands actually cause a crisis in the EU? Because some people are bound to be disappointed by the outcome. So are expectations being built up too much, which will make everyone believe there's a failure at next week's European Council? Thank you for these questions. To my friend the ambassador, I have to say that I think the political debate in Italy and the political space was occupied by wise positions. As I mentioned, for instance, the big role and the very important role that Mario Draghi played, his position, his paper on the FT was very important in data and political debate. I think we are all very happy because we have the president of the Republic, Sergio Mattarella, playing always a very important role, unifying the country, and he's always linking national efforts to European efforts. At the same time, I'm afraid that the big division, the big separation between majority and opposition is today a problem. It's a problem because there's a mortal combat between majority and opposition and bridges are very few. We were all positively surprised. I was positively surprised by the position that Silvio Berlusconi took, for instance, three days ago. He took a position that was a very pro-European position in a completely decoupled way and in a different way with Salvini and Meloni. So I think Berlusconi's position was, I think it depends on the way in which the media will try also to present what will happen and I move to the second part of the question related to expectation. I think what is missing until now is the correct management of expectations that is fundamental in any complex decision and in any decision-making process, how to manage expectations and how to, at the end of this process, get results that can join the expectations. It is incredible what European Union and European institutions did until now. I repeat, it is more than what they did in four years from 8 to 12 during the other crisis. So in four weeks, more than they did in four years. But the perception is not enough positive. This is why the work in terms of communication but also in terms of relationship among leaders is essential. And this is why I think it's important that Merkel can play a positive role and can say to their own public opinion that the European response is also positive for the countries. Leadership is important to make public opinion aware of that. It is important in Italy to make aware Italians that we can expect a European help, but we had also and we have also some problems, domestic problems. The difficulties in managing the debt in last years was also part of the lack of credibility today. And at the same time, we need to manage the expectations also because of our own mistakes. But the same we have to ask to Merkel and to Rute to say to their own public opinion to lead their pan-European explaining that it is impossible for Germany to save Germany without saving the rest of Europe and the same for the Netherlands. So the interconnections are so important that we need a European response and I hope they will be able to manage expectations. I am optimistic on the next European Council. I can't see such a disaster because a lack of agreement will be a disaster and they can't allow to have a disaster and the disaster will be terrible in terms of consequences for normal people the day after. So it's very important I think to now to be able to manage these expectations and to find the right way to fulfill this fourth box. I focus my attention to this fourth box, the recovery fund. If they are able to fulfill this fourth box, then I think the result will be the famous half full glass that is needed. Let me conclude with two big questions, but they're short and hopefully they'll allow you to give short answers as we're almost at 10 o'clock. Gabriele Colatina asks, do you think the crisis will accelerate environmental policy response? And Pierre-Emmanuel Debord who's the Belgian ambassador to Ireland asks, do you think this crisis will lead to an expansion of social policies at European level? More green policies, more social policies? My answer is yes for both. More social policy because of what is happening. One of the four chapter is for the first time a big social chapter and this short chapter is a way to relaunch the idea of a social Europe that was not part of the response last time and we paid the price of this lack of social response. And that's a very important point. I pay tribute to the European commissioner, Nicolas Schmidt, because of his commitment on these topics. And on Green Deal, I think there are some thoughts that maybe Green Deal can be the victim of what is happening. I don't think so. I don't think so because for the recovery fund, for instance, the European leaders and European commissioners are thinking to this recovery fund, applying as model the Green Deal. That means that the Green Deal is a success, is there a success in terms of narrative, in terms of tools. And I think the Green Deal can be the way in which the European Union can move towards the future. And at the end of the day is exactly the meaning that I was trying to develop minutes ago, saying that pollution and virus are together. And they are part of these words of interdependence and they don't need passports to pass borders and there's no more borders for them. So I think we have to keep this fight. And what yesterday Ursula von der Leyen said in the European Parliament was, I think, a very good signal. Before thanking you for your excellent presentation and fantastic answers, let me just remind those in attendance that we'll be continuing this discussion on Tuesday. Among the participants will be the former Prime Minister of Finland, Alex Stubb, which will be interesting to get a Northern European perspective on many of the issues we've discussed. So with that, Dr Lett, we'd like to thank you very much for your time, for an excellent presentation and for covering so many issues with such expertise. Thank you very much.