I'm not going to use the microphone. If I'm not a lot enough, just let me know. So if you're here, you're here to hear about cloud-native application development with Spring. So we're going to be talking about that today in a little bit of cloud foundry as well. A little bit about myself. I'm Kenny Bostani. I am a Spring developer advocate at the Hiddle on the Spring team. I joined back in September. Before that, I was at Neo4j, their graph database company as well as digital insight. I choose to be into it. I'm writing a book right now with developer advocate, John Schwann. It's called Cloud-native Java from O'Reilly. You can get an early release of it today. This book is all about building cloud-native JVM applications and microservices using Spring boots, Spring cloud and cloud foundry. Also, I am from Silicon Valley. So I live in San Mateo, California. I'm doing a trip through APJ. I went to Tokyo, SEAL, and now Singapore, I go to Las Vegas tomorrow. Alright, let's do that all again now for the... I'm kidding.  It's a busy schedule. Today, for our agenda, I'm going to talk about microservices primarily, talk about cloud-native applications, talk about Spring boots. Who's using Spring boot today? Wow, who's using classic Spring framework? Who doesn't use Spring? Okay, so we'll talk about Spring boot. We'll talk about Spring cloud. Spring cloud is a tool set that we provide in the Spring ecosystem for tying together your distributed applications. So if you have a lot of microservices and they're Spring boot applications, you can use Spring cloud. So we're primarily focused on Spring cloud today because that's how you build cloud-native applications. We'll talk a little bit about REST. I'll show you an example architecture of 10 microservices I put together. This is a cloud-native application, which is an online store. So I'll show you that. Okay, so let's start with microservices. So when we talk about building microservices, we have to really look back and see what our application architecture looked like before we embarked on that journey. Who here today is working on microservices or looking to adopt microservices? One, two, three. Okay. Well, it's going to be a very boring presentation. Okay, so we started with a monolithic application pattern. And with a monolithic application, we have our users coming in and they're accessing our application as a web application that's deployed to an Apache Tomcat server or a Java application server like IBM WebSphere or Apache Tomcat. There's a few different ones. So with this model, we're going to have our development teams organize and work on modules in a single deployment. So here we have a war file deployment. In a war file deployment, we might have different components. So we have modularity. Here we have the storefront UI, the accounting service, the inventory service, the shipping service. And if we have a large engineering team and they're all working on the same application, the problem is there are going to be a lot of conflicts. So the velocity of getting into production is going to slow down, right? Another problem is that when we have an application server deployment, we have to set up provision virtual machines, install the application server to those machines. It takes a lot of time. So that's something that we want to prevent if possible. Also we have a bottleneck here, which is our relational database. So typically what we'll have in organizations is we'll have DBAs who are managing the database schema. If we have any requests or any features to modify the application and it requires to change the database, we have to make a request, we have to go through gatekeepers, we have to go through reviews. And it's two months before you get anything done. And so this is a very inflexible model so we can do better. So we decided to move to a different kind of architecture, which is a service oriented architecture. So now instead of one monolithic application deployment where everybody's working on the same code base, we have more services that we're deploying. So we have independent deployments. Here I have the accounting service. I have the inventory service. I have the shipping service. And I have a set of domain resources where I'm sharing between the services. We have a single service team typically working on each service, but you can have individual service teams work on these applications. So we've removed one bottleneck, which is that we have one application deployment. We actually can scale these applications independently as well. But the problem becomes now that instead of one large application deployment, we have a few different application deployments that we have to coordinate at the same time. Because we have these resources here at the bottom that we're sharing, if I make a change to the customer or account or address record, if the accounting service owns those records, then the inventory service has to account for that change. So now with the complexity of this architecture, if I make a change anywhere in the resources that we're sharing or the shared libraries, I have to deploy multiple services at the same time. So I have to coordinate multiple releases instead of one large release that takes a lot of time. And so this is still an inflexible model, so we can do better. So we've arrived at microservices, which is this application pattern where we kind of analyze the monolithic application deployment. We've analyzed the service-oriented architecture, the shortfalls of these application architectures, and we've come up with a better model. So here we have, as a rule, each team and organization is going to get one service, one application, and one database. And the idea here is that it's more flexible. So when we have a team of developers working at a company, and they're organizing around business capabilities, that is, they're organizing around certain features of the business that they want to have implemented, for instance, here we have a movie application where I have a user service, I have a movie service, a rating service, a recommendation service, and an analysis service. And so each one of these represents a team, and we can deploy these applications independently of one another. So I don't have to coordinate my deployments anymore, because I'm going to use integration tests across all of my applications to make sure things are correct before they go to a production environment. I'm going to have my consumers drive those tests. So if I'm a movie service here and there's a dependency from the rating service, the movie service is going to have a set of tests that are implemented by the rating service. They're defined by the consumer, and those tests are going to run when this application goes through its deployment pipeline. So before this application gets to production, it needs to pass a series of tests that were defined by the rating service. This is called consumer-driven testing. And so what happens here is that the movie service wants to move at their own pace. They want to implement breaking changes and screwing one's life up. But what's going to happen here is they can't actually get into production unless they pass the consumer-driven tests. So the rating service is going to be the one that the movie service contacts and says, hey, we have a problem. So culturally, things change where instead of moving at your own pace where everybody comes to you and says there's a breaking change, your consumers are going to drive that. So you're going to have to go and talk to the rating service and say, hey, there was this problem with your consumer test. We need to fix that. And so there's a lot more work here for this application and work with other teams that depend on it. A big difference here is, too, is that I'm going to choose the database that I want for my use case. This is called polyglot persistence. And so if I want to use, for instance, for the rating service, I have a very connected data model. If I want to use a graph database which is a connected data model, it's going to use a graph model in the database, I can go ahead and choose that application, the database, and deploy it myself. As a team, I'm going to operate my own software. So I'll deploy the rating service. I'll deploy the database. I'll manage that myself. So we don't have a central DBA who's managing these changes anymore. I can choose a different database for any one of my services. So at the bottom here, we have the recommendation service, and I'm using MongoDB. So I can choose the database that I want. Another thing about microservice architecture is that I can also have shared resources. So we have a couch-based document database in the center. And I'm using that as a centralized cache. So I can also share resources. One of the problems that we have with a microservice architecture is that we move away from a monolithic application transaction model, where if I have a database transaction, something fails, I can roll back to a consistent state within the scope of that transaction. So now my transactions are spanning multiple applications, where I have to keep track. Let's say that a user rates a movie. Well, I might be touching data in each database. So I need to worry about how I roll back my transactions that are now distributed. So I can use another shared resource in the middle. I can add something like Apache Kafka. And I can store an event log. So every application change that requires to change the state can be recorded in an Apache Kafka instance. I can have an event log where I can roll back across multiple services if I give my application into an inconsistent state. So typically people ask, how do I understand conceptualizing this migration to microservices from a monolithic application? So in the book, I describe a method where you can actually take your monolithic application, turn it into a series of microservices. So here in this example diagram, we have a budding microservice architecture. And in this architecture, I have my customer service, which represents my backend application. So this is the data service. You can see that it's connected to a MySQL database. We can see what the schema looks like. We have an account record, a customer record, and a user record. And what we'd like to do is to transform this customer service into multiple applications that we can deploy independently. So we've already started that process. We've created this is an online banking application. We have our front end here. Now, we've extracted out the front end, which used to exist in the customer service. And we've created a new application. So this is just going to have the front end components. And it's going to integrate with the customer service over REST. So maybe I have an AngularJS application here. It's going to use a REST API that's exposed by the customer service to display data to the user. I've also added in some cloud-native application components. I can see at the top that I have the discovery service. This is going to allow these applications to find each other when they get to an environment. So if I deploy the online banking application, when it starts up in an environment, it's going to contact the discovery service. It's going to provide information of where it can be contact on the network. And the discovery service is going to maintain a registry of all the applications in an environment. So we provide this with Spring Cloud. Also, I've added a configuration server. This is going to allow me to centralize my configurations. I can use a Git repository to do so. I can store a file for each one of these services, an application properties file. So when it gets deployed to an environment, it'll contact the configuration server. It'll grab its configuration, attach it, and start running. Also, with a configuration server, I can go ahead. I need to make a configuration change with applications that are running. Let's say I have 10 instances of the online banking application. I need to make a config change. I can go ahead and check that into the Git repository. The configuration server will notify all the applications in the architecture that depend on that configuration. And they'll take that new configuration in and reload. You don't have to restart the application. So the next step here, if we want to split this customer service into more microservices, we might want to choose one of these tables from the database and create a new application out of it. So what I've done here is I've migrated the user table that used to exist in the customer DB, which had all feature functionality related to user-level authentication. I've refactored that out of the customer service, and I've created a new application called the user service. Now for any functionality related to users, the user service inside of this application, I've now rerouted it to the user service. And I don't need to go and edit manual configurations or add new host names. Because these applications are able to use the discovery service, I can add as many as I want, and the discovery service is going to take care of how these applications find each other. As long as I give an ID to one of these services, they'll be able to find each other if they depend on each other in an environment. So with cloud-native applications, there's really one set of methodologies today that a lot of people use when they build applications, and that's called 12-factor application methodology. Who's heard of 12-factor apps? Don't be shy. Right, I have. Okay, so I'm going to go over all 12 of those now. I'm kidding. I'm just going to go over two. And the first one I'm going to talk about is configuration. So the main thing that changes here is that we have a single code base, and we're separating out our configurations. We're going to store those in the environment. So we're not going to store any configurations related to the environment inside the code base. We're going to take those and store them in the environment. And here, with Spring Cloud, we can use the configuration server to do that. So what a 12-factor application really is, is it's really a set of methodologies that allow us to deploy, build an application and deploy it to any cloud platform, such as Cloud Foundry, for instance. So this is the first step that we're going to do. We're going to take our monolithic application. We're going to separate out all the configuration and store it in the environment. The other one is that we're going to have that we produce, one code base that we build, and that artifact is going to be deployed to each of the environments. So I'm only going to build once. When I build once, I'm going to have that same artifact. When it goes into Dev, I can promote that to QA, staging and production. But I'm not going to rebuild that application in each environment. There's only one build that happens, and we promote that to the other environments. So when we're building cloud-native applications, there's really only one great framework that I recommend, and that's Spring Boot. And Spring Boot really is a JVM framework for building microservices. I really need to get a clicker. Okay, so what is Spring Boot? So raise your hand if you've seen this famous diagram. It's famous. Promise. Okay, so Phil Webb, he's the co-lead of the Spring Boot project. He helped found the project itself and explained the difference between classic Spring Framework and Spring Boot in one simple diagram. And he said that, well, Spring Framework really is just a set of ingredients that when you compose together, you get a finished baked cake. But the problem is that we have to bake our cakes ourselves with the classic Spring Framework. And what ends up happening is that developers spend all their day in XML rather than in Java. So Java developers pick up a competency of being an expert in XML, which is not very fun. And so with each one of these ingredients, for flour, for instance, might represent Spring Security, or eggs might represent Spring Data. So we have all these projects in the Spring ecosystem that Spring Boot, simply what it does is it composes them all together into a finished baked cake. So instead of having to configure your own beans in your Spring container, Spring Boot is going to do that for you with default configurations. And you're going to use annotations now instead of actually jumping in XML and making a lot of changes there. You'll use Java-based configuration. So when it comes to actually baking these cakes, we provide something called the Spring Initializer. And the Spring Initializer is really an open-source project we have as a website. You can go to start.spring.io where we host an instance of it. And you can specify what your ingredients are. These are called starter projects. So if I want to build a web service, I can use web, JPA, security, actuator, rest repositories. I'm actually going to build that now so you can see. And you can download this application and start it immediately. So if we go to start.spring.io, so here's the Spring Initializer. This is just an open-source project that we provide, meaning that if you want to deploy your own instance of it at your company and customize it, you're more than welcome. So the basic gist of this is that I can put in my dependencies here. Let's say that I want this to be a web application. I can embed an Apache Tomcat server inside my jar artifacts. So I'll choose web. Let's say we want to use Spring Data JPA because we'll connect to a MySQL database. We need a MySQL database driver so I can use H2 here. I can also use MySQL, but the idea here of using H2 is that if I'm going to do unit testing or integration testing, I can embed an in-memory instance of VH2 database, and then I can run execute my test against that database. I'll also choose rest repositories because I want to have a rest API be exposed for my data model. I'm going to choose Spring Boot Actuator. This is going to map a series of endpoints to my rest service, which is going to expose operational metrics from my application. Also, I want this to use the discovery service, so I'll go ahead and specify Eureka discovery. I'll just rename this to user service. And up top here, you can choose if you want a Gradle project or a Maven project. I'm going to choose Maven, and then I'm going to use the current version of Spring Boot 1.3.3. So I can go ahead and generate that project, create a compressed file here, which I can open up. You can extract it, and I'm going to show you the finished version of this. So you're going to get a series of files here. So this is just basically a Java project. We see here the source directory. We have a target directory, because I've already built this. We also get a Maven wrapper, so I can actually, instead of having to install the version of Maven that I specify with my Spring Boot application, I'll get a wrapper, instead. And so I'm going to go ahead and run this application. So I will use Maven Spring Boot Run. This is going to compile the application and start it. And so if I go to that application, it's going to be localhost80. Actually, it's going to be dynamic. Let's try that again. One second. This is how many times I've done the demo this week. Quite a bit. All right, so let's go to eight. Okay, let's try that again. Okay, so we can see that the application started up on port8080. So I'll go ahead and go to localhost8080. And we can see that I have a hypermedia response here from that application. So this is just a default response. So we use hypermedia. This is HadiOS. It's going to provide a series of links of how you can work with this application as a REST API. I have actuator on here. So if I go to forward slash actuator, I can see all those operational end points. So I can see I have environment. There's a lot of them. But I'll go over just a few. If I go to ENV, I get a list of properties and environment variables for the application environment where this application is running. And I can see all those system properties of my machine. So here we can see my AWS secret key somewhere in here. But it's obscured. So I see that automatically Spring Boot will detect. It'll look at the name of the environment variable and it'll obscure anything that's sensitive. So this is very useful in a production environment. So you can see information about the application running an environment. One of the other really helpful end points is the metrics endpoint. So here I can see information about my application, how it relates to the JVM, the heap size, how much memory is free. I can see my thread count and my thread pool. I can actually do a thread dump as well. I can see the amount of classes that are loaded. I can also see how many times a user's access of a specific endpoint. So we can see here that I have actuator the amount of times that it responded. That doesn't seem right. I've run this application a few times. So let's go back to actuator. There's also health. I can look at health, basic health end points. So here I see information about this service running. We can see that I've added Eureka Discovery as a client but it's not connected. So you can also see the database. See here. I'm using H2. So this is the basic idea behind Spring Boot. It's very easy to generate these applications using our spring initializer project as a finished application and run it and start to configure it. So it's very popular today. Back in January 2015 we had just under a million downloads a month. Today actually we're well over 3 million. This was in December which was 2.25 million. So that's a tremendous amount of growth in the application framework. And the reason for that is that microservices have become a very popular pattern for a lot of companies and they're adopting Spring Boot mostly because they have Spring competency but it's designed for microservices. So you can rapidly build these applications at an increased velocity and you don't have to spend all day in manual configuration. So the other thing we're talking about today is Spring Cloud. So Spring Cloud is another ecosystem project that we have and so this solves the problem of building distributed applications. So with Spring Cloud we really provide a set of integrations. So most of all we have the Netflix open source project. So we bring in a lot of the Spring Boot based applications or Spring applications that are in the Netflix open source ecosystem like Zool or like Eureka Discovery. And we create integrations for those with Spring Boot. We also provide a lot of integrations with Amazon Web Services with Cloud Foundry and we also provide discovery options with Apache Zookeeper and Console. So this is very popular as well because it provides a lot of these patterns, these operational patterns that you need when you build distributed applications and so some of the patterns that we provide service discovery which I'm going to go over in a second. This allows applications to find each other in an environment. So when you have a lot of these backend microservices you're going to need a way to expose a seamless REST API to your front-end application developers and so we have an API gateway that you can use to string them together. We provide a configuration server so you can centralize your configurations in an environment. You can run this service. It can serve your configurations to each of your services in the architecture. We also provide circuit breakers which is an operational resiliency pattern. With circuit breakers let's say that you have a large microservice architecture, 500 plus microservices and you have one of those microservices is a critical dependency meaning a lot of your applications are going to have that as a dependency. When that becomes the case, if that service goes down then you're kind of screwed, right? All of your applications are going to go down. So we provide circuit breakers which is a way for you to specify a default fallback functionality. So if the circuit is tripped and there's a high velocity of errors it's going to fall back to this default functionality. So your applications can still function. It's just going to have some default fallback functionality. We also provide distributed tracing integration with Zipkin so you can visualize how your microservices are communicating with each other which becomes a very simple way to debug these applications. So when you have all this complexity it's good to have something like a Chrome developer tools to actually visualize how these things are communicating. So I'm going to go over each one of those patterns in a second but going back to Phil Webb's wisdom on the difference between Spring Framework and Spring Boot, he had another tweet which said, well, if this is my Spring Boot application, Spring Cloud is just a lot of cupcakes with different flavors. And so what that looks like here, let's say we have our three cupcakes. We have the recommendation service, the movie service, a configuration service, and a discovery service. So I'm going to go over how the discovery service is used in this scenario. So let's assume there's a dependency between the recommendation service and the movie service. So with service discovery these applications, the recommendation service and movie service, they're going to find each other in the environment because they're going to use the discovery service which is going to centralize information about these applications. And so here we have our service registry. So when an application starts up, it's going to contact Discovery Service. It's going to provide information of where it's located on the network. And the discovery service's sole responsibility is to maintain the service registry. And this is kind of like a phone book. So this phone book is going to have the IP address, the phone number of where these applications can be contacted. Also it's going to serve a list of instances. So I can actually do something called client-side load balancing which is that if I want to load balance between applications from the client side because I have information related to each instance. So I'm actually going to demo this. So using that user service let's go ahead and add in another application. So what we're going to do here is we're going to add a Discovery Service. We're going to add a client application that's going to contact the user service and we're going to scale multiple instances of the user service. And we're going to see the user client application automatically load balance between these services. So what I'll do is I'll go to start.spring.io I'm going to specify that I want Eureka. So I'll choose Eureka server and I'll go ahead and generate. So I have the finished application here. So if we look at the POM XML we'll see that the configuration that was generated will have a Spring Cloud Starter Eureka server. I also have a Spring Boot Starter test. We have unit testing built in. My parent dependency here, my parent build dependency, this is a bomb and this pulls in all the Spring Cloud Starter projects. We also have a Spring Boot Starter parent which does the same just for Spring Boot Starter projects. If I go to the application class here I can see there's not much going on. There's just one Java application class and here we have enable Eureka server. This is going to enable this application as Eureka server. It's all I need to do. I'm also going to go into the application properties. I'll name this discovery-service and I'll set it to a default port of <IP_ADDRESS>. Now I'm going to go and start that application. We can see that it's started up. So I'm just going to go to the browser now. If I go to local host <IP_ADDRESS> we can see the Spring Eureka UI. So this is started at Netflix and we create the integration for it and so this is just one of the three discovery services that we provide. So what you'll see here in this user interface is just some information related to our application instances that are registered. So you can see here there's no instances that are available or registered. So what we want to do here is we want to add in a user service and a user client application. So we downloaded the user service earlier and I've since gone ahead and while you weren't looking I added up some code in there and what I want to demonstrate here is that we had that Eureka starter project. So I'm going to add an annotation here at the top which is enable discovery client. That's going to automatically enable this application to contact Eureka and register with it. I've also added in a basic REST controller here and why I've done this is I just want to show how this application is going to load balance and so what I've done here is I've mapped out port to property of field here which I'm going to return at the default endpoint. So we can see the application port that this service is running on. So if I go ahead and start that up so we can see that it started up I got to restart sorry my bad this is I'm going to sign it a port of 1111 just to make things simple. So we can see that it started up on port 1111 and we see that it also contacted discovery service and registered. So we see a 204 success. So if I go back to Eureka I had it up didn't I? If I refresh it now we can see the instances that are registered. So discovery service went ahead and registered itself and then we see the user service which is registered and here's how I contact it. So I have a link here where I can open up that application and it's going to give me an error which is fine. So if I go to the root endpoint here now I see 1111. So what we would like to do here is to add another instance to Eureka. So I'll go ahead and run another application. I'm going to sign the port 1112 now if I reload Eureka I can see that now I have two instances that are running up the user service 1112 and 1111. And now what I'd like to do is to create another application that also connects to Eureka that I'm going to use a REST client from that application to contact the user service and it's going to automatically load balance. All I've done is add an annotation to the default port very good question by the way the default port for Eureka is 8761. So I don't need to specify a URL or a port number if it's local host 8761. So that's just a little bit of magic. I can actually show you what that looks like in a production application. So now I'll create a user client so I've gone ahead and generated this so we can see here that I have my spring cloud starter Eureka dependency and I've also added a starter web so I'm going to run the API from this. If I go to the application class I can see here that I have I've added that annotation at the top which is enable discovery client and I've also created a bean here which is called the REST template. Now the REST template is a very common bean that we use to contact other services. It's just a REST client. Now the big difference here is that I can add another annotation called load balance which is going to create a load balance REST client which means that it's going to take advantage of the service registry and it's going to load balance between instances of services. I've created a REST controller here as well so here we have basically two fields which is we have our load balance REST template and we have a discovery client so I have a client for the discovery service and I can use that to get information about the services that are registered with Eureka and map that to the root endpoint here so we can actually get all instances of the user service and return that back as JSON. So the magic here is actually in this forward slash user dash service. What I'm illustrating here is something called reverse proxy which is that I'm going to call the user service from this endpoint that we're accessing on the client application and it's going to forward the request to the user service and we can see here that I'm using HTTP user dash service so we know that this is actually not a valid domain but the REST template is going to automatically translate that key to an IP address which is stored in the service registry. So if I go ahead and run this application so we see that it started up and if I refresh Eureka we can see now that I have a user client and if I navigate and go to the root endpoint we can see here's the information for that first mapping we have information about all of the user service instances so here I see instance one which is at this address and we have instance two now I'm going to demonstrate the reverse proxy if I go to forward slash user dash service we can see that if I reload it's going to load balance between those applications so I can add as many instances as I want and it's automatically going to load balance so that's the core idea behind spring cloud is that it really provides you a set of features for managing distributed systems I think client side load balancing is an excellent example of that so we also provide a configuration service I won't demo this but the idea here is that I can have a service that I deploy to an environment that's going to map to a Git repository where I've stored centralized journal configurations so I can actually go to a Git repository make a change to a file check it in the configuration service will pick up that change and broadcast it out to the applications that depend on that config so I have two environments here I have one for staging and I have one for production the API gateways one of the most important features that we have in spring cloud the idea here is that I can go ahead and add a service which is going to download the routes from my microservices my REST API here and here and expose that as a single gateway so it's going to automatically download those routes and it's going to embed that inside of itself which I can then reverse proxy in the same way that I showed you in the controller so let's talk about REST a little bit as a part of spring data we provide audio s which is hyper media as the engine of application state which is really just REST APIs that self-described and it's pronounced hot TOS like honey oat cereal not hate OS so this is based off of Leonard Richardson's maturity model so the expressiveness of our APIs this pyramid here shows that we started at level 0 which was single URI single verb and we moved up to become more expressive until we reach level 3 which is the top of the pyramid which is that our REST APIs are going to fully describe every single function that is provided with a part of that service and so we have this as a built-in feature with spring so now going back to the REST API gateway tying this all together the API gateway is going to reveal a series of links to our back end microservices as reverse proxy when we communicate with those services it's going to forward on the request to the back end service and return back a response and so what this looks like is that here's my root endpoint for the edge service or API gateway we have three microservices here we have the rating service the product service and the user service so this is hyper media it's returning just a set of links that I can browse and it's very similar who's used swagger swagger so it's similar to swagger so we actually have in the spring ecosystem a browser for this because it provides all the information of what you can do in the API you can build a browser on top of this very similar to swagger so if I traverse let's say I traverse the user's endpoint I will go to it'll route the request to the user service and return back the response so here I have a spring data repository we can see that this is paging and sorting repository so I have a list of functional links see here first next and search we have a search method and it's going to return back that page of results so I can page through this and return back different results okay so now I'm going to take questions before I get into the reference architecture but I'm going to put this up so that we can talk about it so if you have a question go ahead I'm not going to proceed until we get the question I need one question so I've added in this reference architecture here I have a online store I've added in a spring cloud I have my user service and these are backing services so I have a user service an edge service, a discovery service and configuration server and my front end I have my online store web then I have my backend microservices so we can see here that the online store is going to be redirected to these backend microservices it's going to communicate with them through this edge service but the user service is going to act as our gateway for any protected resources so the user service is going to try and sorry the online store web is trying to access the edge service it's going to be redirected to the user service if it's unauthenticated and it's going to have a token that's in its headers for its authentication state I'll go over it more how does the backend service validate the session so it's going to be stored in the headers so if we contact the online store web it's going to have that in the header so it's going to contact the user service automatically and it's going to pass that to the user service and validate that session state so it'll return back a response that it's okay and we'll have our session state available in our application the backend services do this as well it preserves and forwards on that authentication header to all of the other services so each one of these services can also call back to the user service to authenticate that session it's going to for any request even when the edge service forwards downstream requests to the microservices it's still going to forward the header through the user application the online store web so it's just going to pass that along in the header and these services are going to have to re-authenticate basically just call the user service to authenticate that session yeah so this is mapped in memory so it's in memory and we're going to scale it also can contact the database you can also use cache you can have a like couch based cluster so there's a lot of ways to optimize how fast this is but yeah that's a very secure model yeah I mean absolutely right there's going to be a trade off here with this architecture now that's a very secure way to be assured that they're only accessing the resources that they're supposed to but you also can just use the edge service as the gateway to say I trust that that user is correct and these services don't need to reauthenticate any other questions what is the edge service here I think I saw a answer there's another variance of microservices sub-contain system sorry sub-contain system self-contain I haven't heard of okay because for those architecture they have their own UI as a service from database to the business to the UI as a service so I'm way between the self-contain system and this architecture it's a 3-tier architecture no no no it's a microservice which where did you hear about it's from the day I came here well show me that later it was stated that there's another variance of microservices it's quite popular because I'm looking at the Euronka it's a self-contain system because they provide the UI together with the as a service so to me it's like a self-contain system I've heard that he called a back-end for front-end a BFF Sam Newman talks about it in his book on building microservices but I haven't heard the term self-contain system you'll have to show me the point any other questions the edge service is going to act as a gateway which is just going to send all the REST APIs that are exposed from these microservice here in the back-end so the online store web isn't going to communicate directly with those back-end services it's going to use the edge service and we have an AngularJS application here so it's actually going to embed the URL into its own application so that we can access that as part of our own host I'll show you that in a second I'm sorry edge service is going to act as API gateway the edge service is the API gateway in this case here My question is something like when you go with the microservices you can scale it like that but if you go in reporting like if you have to generate a report there's no relation now because users have different database records both the online store and different database so how we actually create a report we'll go with the data warehousing where you put all your data otherwise because it's hard to query like if you have to check there's no foreign constant or anything which I can see from now So one architecture I've seen that creates a data warehouse from the different microservices uses a transaction log so you'll have maybe a patchy Kafka and anything that touches the database is going to be added as an event to a patchy Kafka and these are going to have an exact order so I can use any database I want to replicate the exact domain of all of the applications in a single database and I can use that as my data warehouse that's one way to solve it otherwise you can either contact directly if you're just doing reporting it's fine to contact the databases and read so you can do that as well so I just wanted to maybe give them a question maybe I mean we used to have modular application a long time ago and now we have split the database to make the microservices so what technology has made it a neighborly in a way to come to this architecture and why it was not like so many years ago because there was some fashion earlier I mean this question was that to this point because people were centralizing the database for other purposes so what is the downside of this architecture there are certainly downsides right this isn't just green fields and what is the neighborly technology that brought you to this architecture the second one is what is the downside so to answer the first question it's all about velocity going into production that is to scale an engineering organization I can have independent units of deployment for each application I don't have to have one monolithic application where I increase that's the objective which was not possible before go ahead so I think the enabler was the cloud so if you think about let's say 5 years ago for you to actually build a service on the internet you had to build a data center which was capital expensive so you basically had to build a facility put service into it, rocket put electricity cables then secure it now you can actually pay compute with a credit card so the barrier to entry has decreased exponentially like it's really now I can go to run the Pivotal IO and I can run my application within seconds I don't need to go to approval I don't need to talk to security guys I don't need to talk to the finance facilities so this is a lower the barrier the second is I think the technology so if you look at the microservices part one of the advantages is that you want to deploy it more often and as needed so in order for you to actually adopt a microservice architecture you need to learn how to do continuous delivery that means that as a company you need to be able to do 20 releases per day so if you look back five years or ten years ago doing these sort of releases was also very expensive because you have to connect to the load balancer to the global traffic controller to the local global traffic controller to the DNS now everything is being API driven so I can do an Amazon call or a vSphere call which is software basically the fact that we now can pay compute power and buy any resources from the cloud via a card as a utility bill and then the second one because we have APIs to talk to the hardware and to the computer to all the resources so these are the two enablers to the microservice architecture like if you were to do you have to pay millions or even billions to be competitive now it's just the barrier very low and you can see examples of this at Netflix at Amazon they're using microservice architectures for a reason which is that they want to move faster be more flexible and use the cloud now what was the downside the downside is that now you don't have the safety net so for you to actually deploy a new change in a monolith it's much easier because it's a matter of adding an easy statement if you want to deploy a new microservice then you're basically building from that my operating system, my middleware my rest endpoint because it's a full stack the whole microservice that you have user service it's a replica of a catalog service so you need to invest in all the infrastructure top down but because you're using let's say Linux kernel, you're using containers framework that was built in the open source community you're leveraging all that intellectual property so it's no longer an investment from your company it's basically you are sitting on the shoulders of giants and you just implement the business logic the disadvantage is that you don't add an easy statement you're creating another deployable unit which needs to be managed which needs to have a product manager so you have a product road map now troubleshooting becomes an issue because you have cross-cutting consents that cause multiple services so if you're thinking about the transaction it will go not to a single monolith and then you are able to troubleshoot very easily but it goes through 3, 4, 5 as many as needed so you have to have a culture of test-driven development so that you make sure that the quality that you build into each individual service is a priority and it's not a by-product then the second is you need to invest in DevOps culture so that the team that develops is also creating it and then you need to have buy-in from the business that they need to have velocity if there's no need from the business to make changes then you should not invest into having releases that are it's a prerequisite of your business if you are working into a well-defined manner where releasing once in a month it's fine you don't need all these benefits but if you are deploying a mobile application that changes every day it has the application where you are working with wearables then you need that power that's very good answer any other questions? any dependencies like the order service depends on the card service the order service if I have a dependency between these two micro-surface because your architecture sounds like all these are different with the service-oriented architecture because the service-oriented each other also can depend on each other yeah absolutely so let's take a look at that so I have this application the source code here and we'll go ahead and look at the order service so I have a REST API here that's exposed for the order service which it's going to the basic idea here is that you can use this to create an order so if I go to the order service class here I can see that I'm using a go off to REST template that's going to be load balance similar to what I showed you earlier and if we go to the create order actually I'll show you different ones so here I'm validating the account number so I'm calling the account service similar to what I showed you earlier I just specify account-service and I call that at the end point here and I'm going to provide this is already about that decay it's just going to give me the state of that user what I can do here is that I can just map this to a local pojo so I've just defined exactly the fields I need for the account objects so I have this pojo in the account service itself so from the order service all I can do is have this pojo in this class and see the libraries between these services I'm just going to create a basic pojo here which I can use to basically deserialize the response and map it to my object so it's a very simple model I don't need to take the full object that's defined I want to change the API so you use versioned APIs and you just have to remember we have that consumer driven testing module so if there are any changes to that pojo that break this model they won't be able to deploy it into production feature for us to see which service is using my service so that I can know that when I need a testing of which other service I need to take care of it we provide distributed tracing so you can use Zipkin which will visualize that but if you really just wanted to get an idea of who's requesting your service you can use actuator I had that running earlier and used the trace feature so let's see if I have this running I think I bit away with it localhost8080 oh here it is so I have a trace endpoint here which is going to show me this is going to show me every request to my service so I can see here exactly how it's being used and that might be one way that's how I would do it yeah you can also pass along an ID you can onboard certain applications who should be using this app and you can validate them against a set of resources with the edge service here if I go to that configuration I can see that in this edge service remember this is the API gateway I can specify that I'm only going to contact the account service, payment service inventory service, order service certainly make sure that my applications are only communicating with who they should be communicating with any other questions? I haven't rebooted any I had running from before cool that's a good question I can actually show you that with cloud foundry so I have if you go to run.pivotal.io we provide a hosted instance of cloud foundry and I've created a manifest for each one of these services this is the edge service I can push this to that production environment so here I have my manifest yaml which is going to specify the name of the service the memory, some other information also the services that it depends on I'm just going to show you to push this production I'm going to go to that directory so here's all of the services and I'll go to the edge service and we can see here that if I do CF apps I have a command line client for cloud foundry you can see all the running applications this is pretty ugly I have the UI up here I don't know what that's all about I've been tethering a Sergio's phone all day and throwing up all of his usage so here I have the Pivotal web services UI and I can actually just visualize those applications so here are all my apps and I can see the instance count of each application so these are all of the services in that diagram now what I like to do is just push the edge service so I'll go ahead and actually I'm going to scale this down real quick and I can just do CF push here from the command line now that's going to look at that manifest file and it's going to go through the process of creating a container for that application uploading the jar and deploying it to that environment now I can actually stream logs from this if I can do CF logs edge service so now it's uploading sorry? there's a template provided you can also use CF command line to generate it but it's in the documentation it's very basic it's kind of a little bit like Docker compose and any second so we see that it's binding to the discovery service to the config service to the user service now it's restarting the application and we should be able to see some log output here so this is the application starting up it looks like it failed it just shut it down so now it's creating a container for it it's calculating the memory and now it's going to start the application so now we see the log output from the application starting up just like if it was local and we can see it's now started and registering with the discovery service so if I go to the discovery service which I have running I can go ahead and see information about the edge service that I just deployed I can see that I deprovisioned that one instance and we have the new instance here so actually I can open this up it should be unprotected I can't actually look at it because it's protected I have to actually assert my authentication credentials but I'm going to show you the finished application if I go to online store web and just to go through the diagram the top we have our online store that's what we're looking at here I'm calling from the front end I'm calling the catalog service I'm returning back a set of products from the catalog we can see that I'm not authenticated if I go to one of the products in the catalog I can see information about that so that's contacting the catalog service which is contacting the inventory service I can go ahead and log in here this is going to redirect me to the user service where I have a authentication gateway I can log in not admin user so now I can approve that grant so I'm redirected back to the application and we can see I'm now authenticated as user John Doe and now I have some more options here so I can actually go to settings this is going to contact the account service it's going to get information about that user's account I can look at their orders which we'll call the order service I can also start adding products to the cart so I'll go ahead and add a few of these now if I go to the cart I can see the products that I've added I'm going to have to decrease these because I can't afford I really can't so if I try to check out I get an error so now I'm going to check out here so all this is done it's contacted the cart service I can go ahead and check out now an order has been created for that user for those items so that's the basic idea I do provide this as a tutorial and an open source project so you can run it yourself you can deploy it to PWS or run it locally I have the tutorial on my blog it's just myname.com and you can walk through this it's going to explain about eventual consistency in microservices and event sourcing which I haven't gone over today but it does provide a working tutorial of this application that you can go and run on your own so I recommend taking a look at it it walks through step by step so if I spoke too fast tonight I apologize this is the 12th time I've done the talk in the last week and so working on the other cart platform yeah I have it working it will work on another cloud platform actually I'm supposed to tell you it won't just Pivotal Web Services so take a look at it it's a pretty comprehensive tutorial and you can run it locally if you want to as well here's the get repository on github so you can see each of those services here and yeah that's about it so I'm going to put up my contact information I'm going to stick around I have more slides I'll just put up my contact information if you want to get in contact with me please go ahead and email me and if you have any questions if you're up late at night wondering about microservices need someone to talk to just email me it's fine and then follow me on Twitter of course so thank you very much for having me it's great to be here so thank you


What's going on guys today? I am back with another destiny 2 video and today. I want to talk about their flashpoint weekly Activities how you do them and give you guys my opinion on the best way of taking advantage of such activities I mean have had so many questions on YouTube and Twitter and even my Facebook people asking me about flashpoints Hopefully within this video.  Be sure to subscribe. Okay, so the flashpoint weekly activity This is one of the many things that become available upon completing the story and will in turn arrive every week as a new thing to do So upon completing the story visit the tower and speak with every vendor within the tower upon doing this You will see the notification of new things to do in terms of quests and so forth Upon going to orbit bring up your milestones and you should see the EDZ flashpoint here So this week the flashpoint is located on the European dead zone and here you simply have to grind public events Not a specific type although I do believe heroic public events will help you get this done quicker as it gives you more of a percentage towards the Angle of 100% and in reality isn't hard to do and to be honest doesn't take long at all I did this solo and I did it all within about half an hour Maybe even less now upon doing this go back and seek aid within the tower who rewards you voluminous planetary engram this engram normally rewards you with great high-level loot One of the very few things you can do which will help you reach that 300 power level So with this flashpoint actually recommend you hold off completing it until you are at a point of where only Exotics nightfall's quests and so forth are the only other thing you can do to level up that power level of yours Up until this point there are many things that drop gear which will help you out But after that set level of 265, it's much much harder to get increased power level gear So with this flashpoint guys it makes sense you hold back and completing it until you are limited in things You can still do so on screen now You are seeing the contents of what I got and you can see I got that epic But broken exotic tractor cannon I say broken because I used it within PvP and it didn't seem to do any damage to people But surely with the next patch bungee drop it will fix the issues many people including myself are having You can see it dropped at a level 275 which is great Considering at the time of me doing this I was a little over 260 And I was also rewarded a pair of gauntlets that dropped a power level of 272 At the time my highest armor piece which is great Now you can do this across all three characters per week And next week the flashpoint will be on the planet Nessus The week after which will be week three will be on IO And week four will be on Titan So yeah guys a little tip on doing the flashpoints if you are new to the game Hold out on them until you're at a stage of where you struggle to level up Each week I will do a flashpoint guide so stay tuned for that And on that note guys I am ending the video If you're new around here and enjoy daily destiny videos be sure to subscribe If you enjoyed this video leaving a like seriously helps me out Thanks as always for stopping by and I will see you on that next one


We welcome you to tonight's special event associated with Dispossessed with Defiant, which is an international photo exhibit put together in 2014 by the CJPME Foundation. My name is Brian McIntosh, I'm the minister of this church, and I'm happy to be your host and moderator for tonight's event. Before we begin any further, I would like to share the acknowledgement that we recognize the history, spirituality, culture and stewardship of the land of the indigenous peoples of this region, including the Huron-Wendok, Patun and Seneca nations, and most recently the Mississaugas of the Credit, who are Anishinaabe people. This territory, in which we stand and work, is covered by the dish with one spoon walk-and-belt covenant, which is an agreement between the Haudenosaunee and the Ojibwa and Allied nations, and we seek to live and respect peace and right relations with them as we work, live, play, worship and plan and learn tonight upon their traditional territories. Right up of over 160 photos, the Dispossessed Defiant exhibition downstairs in the gymnasium, if you didn't have a chance to look at it yet, depicts different aspects of indigenous peoples' experiences of colonization and dispossession, and their inspiring struggles to resist such colonization. Spanning over 150 years, the compelling photos of the exhibition capture the experiences of three indigenous groups, indigenous peoples in this part of Turtle Island, the Palestinians under the Israeli occupation, and black South Africans under apartheid. Our sponsors for this week-long photo exhibit downstairs, for whose support our planning group is grateful, include the Social and Ecological Justice Commission of the United Church's Shining Waters Regional Council, Kairos Toronto West, Kairos Great Lakes St. Lawrence Regional Group, and Kairos Canada, the Palestine Network of Shining Waters Regional Council, the Ontario Federation of Labor, and the Unifor Social Justice Fund. Tonight's event and tomorrow's afternoon event, in recognition of it being September 30th, a national day for truth and reconciliation, as well as other program pieces tomorrow morning, form the bulk of the Kairos annual regional fall gathering for our part of South Central Ontario, entitled Decolonizing Hearts and Minds. So we welcome those of you who are here for that entire conference, maybe a quick show of hands of who's here for the Kairos Conference this weekend, quite a number of us, and more to come tomorrow, I believe. Of course we also welcome those of you from nearby churches in Etobicoke or elsewhere, or the general public, if you've heard of it, and are attending, where we appreciate you being here. Tonight's public event focuses on the Palestinian struggle and features Kairos Canada's Palestinian partners who are currently visiting Canada to our good fortune. We are especially pleased to have two people from the Weam Centre for Conflict Transformation in Bethlehem with us, both of whom are leaders in the nonviolent struggle against the Israeli occupation. And in addition, we also have a Palestinian-Canadian author with us to share his story and how his writing relates to the Palestinian question. I will introduce them all more fully in a moment, but before I do that, a few housekeeping items are in order. We always have to have housekeeping items, right? Yes, we invite you to partake of our snacks during the break, if you haven't already, or linger in this space afterward. We're going to go until about 8.30 here and then open up the exhibit for you to take a look downstairs. And we hope that you will consider doing that if you haven't already. If you need a washroom, there's one just to the right of the bottom of the stairs to my left. And just make a U-turn to the right, you'll find it. As well as separate men's and women's washrooms through the back door directly behind me.  The men's washroom is half the flight down closer to you and the women's half the flight down at the end of the hall. Now please note that we have Robert Massoud, a panelist for our upcoming Thursday evening event with us tonight. And he has a tune products for sale for our purchase during and after this event and that table right over there. Robert, you can wave your hand. People can see you after the event. From that, we'll be to hear from our guests for a time and then to engage you as our audience in a Q&A period following a break, which I'm going to be pretty strict about because we have wonderful guests here and want to hear from them. As we engage our energy in moving forward toward a post-colonial agenda, both here and in Palestine. And I would like now to introduce our guests. First, our two guests from Leon Center, a conflict transformation center, which is a grassroots organization established in Bethlehem in 1994 that aims to improve the quality of relationships and to promote peace and justice, a culture of acceptance and reconciliation in the community. Hara Tare is a researcher, trainer and peace activist with Leon who conducts trainings for youth and women on leadership, conflict resolution, communication, environmental awareness, and gender-based violence. She was the Middle East representative for the Women Peace Program working group in the Netherlands and contributed to the book called A Force Such as the World Has Never Known, Women Creating Change. That sounds good to me. 2013 was that book with a chapter on advocating women's rights in Palestine. Tarek Al-Zubi is a Christian-Palestinian American. You won't hold that against him, right? You're my friends here. He was raised in the little town of Bethlehem. He received a VA in economics and peace studies from Manchester University in Vienna and an MA in international cooperation and development at Bethlehem University. Tarek currently works as the project and youth coordinator at Leon is active in civil society, part of numerous fires which endears him to me as I am as well. I'm glad to know you're a sinner. And has the privilege of being part of the World Council of Church's 12 Faces of Hope campaign. Tarek has been with the Kairos Women Peace Program since its inception in 2018. And finally our guest author, Saeed Tubit Tibi, a writer and lawyer based in Toronto. He was born into Palestinian parents in Kuwait and has lived in Canada since 1993. His writing frequently engages the immigrant experience and his Palestinian background. His collection of short stories entitled Her First Palestinian was published just in 2022. It was a finalist for the Atwood Gibson Writers Trust Fiction Prize. Saeed's book is available for purchase at the publisher reduced price of $20 dollars this evening and we encourage you to consider purchasing it following this event. So a lot further delay as I say we're going to hear from all three speakers for about seven to ten minutes and then we're going to have a re-break and we're going to come back and have a dialogue. So I start with Han. Good evening everybody and thank you for your interest in this event and for your warm support as well. First of all I would like to say that before coming up into this sanctuary I had visited the exhibition downstairs and really it is a heartbreak to see all this kind of suffering injustice and violence against people. The disposition and the displacement of people it is really unfair for humanity and for human rights all over. For me as a Palestinian I say that it's always there like two narratives to hear. The first narrative you hear it from one side and the other narrative you hear it from the other side and it has been never ever that the two sides agree on the same narrative and this has been taking us so long to reach an agreement to reach injustice peace because no one agrees with the other. For me as a Palestinian I would say that my narrative is so simple that during the British mandates there was the Palestinian people living happily in their homes taking care of their gardens and their kids and their families and then they have been kicked out of their houses their homes and displaced all over the world. Now there are so many Palestinian refugees descendants as well all over the world and in our refugee camps in Lebanon in Syria in Jordan and in their own homes as well as refugees because there was the NAPCA in 1948 where people has been forced to leave their houses the NAPCA in 1967 where also people had to move from one area to another to become refugees. The other narrative says that no we have the right to come to this land because this is the promised land the land of honey and milk so how can we figure this out it is a problem but I would say that to reach a resolution to have a peaceful agreement and it's just this one not only peaceful because we can have peace but this peace can be just this is what we really want so in order to do this I would say that we have to forget about the past let's forget about our narratives and say that we really extend our hands for each other to talk about the future the future of our people the future of women the future of the youth they need to live and they deserve to live in peace in security and in safety everybody talks about security and we as Palestinians as women we deserve to live a decent life a life full of dignity respect for humanity for me I work with we are and I'm placed in East Jerusalem I work with women in East Jerusalem their story is a bit different from Palestinian women in the West Bank of course the sufferings there and but it is a bit different I'm a Palestinian woman from East Jerusalem as well and I feel like other women from East Jerusalem that I work with I feel that I am status I do not know who am I okay yeah so a I don't know who am I because I do not have a clear identity I hold the Jordanian pastor to travel and I'm not Jordanian I travel through Tel Aviv airport holding the Lasseh Paseh and I'm not an Israeli citizen the Palestinian pastor because if I ask for the Palestinian pastor they will ask me to leave Jerusalem and for me to be in Jerusalem this is my dream and I want to give it up here comes the importance of the women which really enlightened the minds and the life of women I worked with these women were so hungry for such activities for such workshops and there was a lot of success stories of these women that we were with this is really a thank you for Kyros for having this program and for the six years that has been really full of activities full of new stories where women has been empowered with capacity building leadership and reconciliation where this is very important that women has been taught that forgiveness and reconciliation is very important therefore we we had to know that charity begins at home and if we do not start with ourselves with our women who believe in reconciliation and peaceful approaches then we cannot reach a peaceful solution with our partner I would call them partners so therefore projects like this women of courage really it is as its name women of courage and I'm really happy to share one story maybe because I only have two minutes one success story of a woman who has been exposed to domestic violence by their siblings this woman had at the very beginning she used to come with different colors on her face on her arms and she won't say anything at the very beginning she usually wears long sleeves so that she wouldn't show but then I noticed through the training that she there's something with this woman and I kept like okay nothing and say okay come on tell me what's wrong and she said that her brother beats her because for many reasons she he doesn't want her to go out he doesn't want her to participate in activities but then when we talked to her and referred her to a social worker she was really empowered she was able to stand very powerful in front of this violence she has been exposed to and by the end she said no to violence and she was there and she is now a human rights defender this is a great story and thank you I think my partner yeah I'd like to echo some of the things that have been given and specifically direct them of course towards the organizers and helpers of this venue and event and of course to the Kairos staff and office who have been partners with us long before we had the funding from global affairs for this program so to begin this talk I'm going to contextualize just a little bit of the reality and I apologize usually it's like giving you a depression pill but I hope towards the end of this conversation we can talk about some of the positive changes and I can include some of the work that we are doing at VM because there is always hope and I think if there wasn't hope none of you would be here listening to our stories and maybe continuing to be involved in supporting this work as you do so thank you for your continued work so you see here three Palestinians with different citizenship one without any citizenship and with all that comes different rights you have myself a Palestinian of the West Bank you can only access the West Bank and when I talk about access here I talk about consistent access not access that requires you to jump through the many loopholes of the very different legal systems including the military legal system you have another Palestinian with Jerusalem residency who can access more of the land but doesn't have any voting rights beyond her local municipality and then you have a third Palestinian living here in Canada who's been to Palestine once she told me before the break who I believe doesn't have consistent access to Palestine because he's dependent on the Israeli authorities decisions and this doesn't just extend to Palestinians but it extends to those that we are officially or in some formal capacity connected to my mother is an American thank you for not taking that against me and she's been married to my father since 1990 and since 1990 they have applied for family unification and she was denied entry in 2019 for quote-unquote this is a literal citation or a reference to what the border control told her because she married a Palestinian man we have now paid a sum of 70,000 shekels which is close to 20,000 Canadian or sorry 20,000 US dollars to entitled her to come into her own home areas A and B of the West Bank only when Israel grants her permission for a maximum of 90 days my brother's married to a Palestinian woman who has no citizenship or residency as her family fled during the Ottomans and then her father left later before the Palestinian Authority was established and she's in that same position but yet we're all connected we all continue to work and strive for justice in Palestine and elsewhere when we talk about the Palestinian population we're very young 70% of our population is under the age of 30 and 87% of our youth wish to immigrate they don't wish to immigrate because they no longer like Palestine or Palestinian food it's because they no longer see a sense of security for themselves for their livelihood for their families in Palestine and of that 87% there are of course those who wish to immigrate permanently and temporarily but what it does is it allows this majority and this young energy and we always say the youth and the children build the future and so it seems we're building our future elsewhere if this continues in this trend when we talk about women especially young women women youth those between the ages of 18 to 35 especially those a little older from 21 to 35 they are the most educated demographic with the highest unemployment rate when we talk about the economic system in Palestine it has been stifled by the continuous practices by the Israeli military occupation when we talk about moving from one area to the next it took us around 45 minutes to get to this venue in Palestine that would have been a little bit longer as we go through each of the many checkpoints if we are allowed to cross them and so when we talk about the basic freedoms the right to movement the right to expression the right to build on your land I live in area a which is under the Palestinian authorities rule and I work in area C which is under Israeli military occupation and that means if I wish to build or if the center wishes to develop it's programming and needs to change its infrastructure to match that programming it is dependent on Israeli licensing and permits which are very difficult to come by and so we see land shrinking population increasing the economic situation continuing to deteriorate the average Palestinian received 2,000 shekels which I apologize I'm not too familiar with Canadian dollars so it's all going to be US dollars but it was right around 550 US dollars a month in the 1980s today the average salary is still 2,000 shekels a month but if you're able to receive access to work on the Israeli controlled territories or in Israel that now jumps up to 5,500 as a minimum and not as an average and so when we talk about the walls the settlements which make for the building of a Palestinian state less viable and almost impossible is largely constructed by Palestinian workers because we are given the choice and remember I said this is the depressing part so forgive me again we are given the choice between working towards our economic security and livelihoods or working towards our dreams of sovereignty and independence and it is difficult to work towards both and if you go down to the exhibition you can see that Palestine has been occupied long before Israel but that Israel's occupation formally began in 1948 and the situation continues to deteriorate so having to choose between the two it seems that one's economic security is more viable and is more helpful but we are not hopeless and we are not helpless we have friends who on a Friday night in Canada are willing to leave their homes to come and be depressed by us and we have a community that continues to inspire us and so this is part of why we have continues to work and serve the Palestinian community we started working in 1994 with conflict resolution within the Palestinian territories and even far beyond before the creation of the wall when we were able to traverse some of the quote-unquote borders through that program we found many reoccurring conflicts and we wanted to go from being reactive is my 10 minutes up okay perfect I'll speak much quicker we were able to go from being reactive where there is conflict mediating into becoming proactive how can we mitigate and limit the rise of conflict in our communities so it's a lot of conflict relating to women women's rights relating to women receiving equal inheritance equal say and it's important to say that the role of women has been diminishing in our territory since the 1960s since the 1940s and we attribute that as a direct reaction to the deteriorating situation there's this desire for sovereignty that has not been manifested or realized and so when gone unconscious it turns into the cycle of violence internally part of this internalized oppression and men begin to control women women maybe the children children become more violence beat the dog in the neighborhood the dog bites the old person the community in that cycle continues so part of what we try and use disrupt that cycle say enough is enough and so we work with women on social economic and political empowerment understanding that if a woman isn't able to live independently which often time is related to her economic security then she is only socially empowered in theory we also focus on male allyship because we believe we are interconnected as Palestinian men Palestinian women as Palestinians Canadians indigenous we're all related to each other and our liberation is tied we work with you because our youth no longer know who they are and they wish to leave their disconnected and we believe we can build a better future for all of us without having anyone to be uprooted especially in a history where so many have already been uprooted and we work with citizen diplomacy and because I'm lacking some time I will say part of our citizen diplomacy is welcoming visitors is being able to bridge across the continents across the many divides that separate us to say come see and we know you will act and we welcome you and we believe in reconciliation and I will stop there thank you very much I experienced in 1962 an experience in the holy land not having a visa to Israel at the time I was in East Jerusalem Jordan and at that time I took a shower I had shampoo in my hair when the Israelis turned the water off and of course at that time from the hotel one can look out over the bright lights of Israel it was like living in East Berlin it was a real shame but I experienced going out to Badeleum about three miles I guess it was from Jerusalem which of course was in Jordan as well as the Jordan River and the Dead Sea which I tried to swim in and so on it was really an experience that was heightened by the fact that I went to a place outside the city wall where apparently there was a cave and a Hong Kong where they figured that Christ may have been buried within that cave it was run by a Palestinian Christian by the name of Matar who very kindly offered me cool water which was wonderful his son studied at the Ontario College of Art and I got in touch with him when I came home the following year in 1963 he reported to me that a knock on the gate had occurred his father went to the gate opened it up an Israeli soldier machine gunned him and killed him thank you for your story to start mentioning at the end there it's a really good experience of many I will say that your tourism experience is probably somewhat typical of people in this part of the world who go on Christian tours and so on to the Holy Land and they're not shown the reality of the situation on the ground they're shown the holy sites and the places where there isn't a kind of daily experience that you would see of struggle or violence or insecurity or hardship on the part of the Palestinians at all and they come home and everything was wonderful anyway I'll ask for another comment and question John I know you know what you're dealing with it's a danger your comments have to do with that there's sort of an ignorance about Palestinian understandings in North America for instance but you must be aware showing that the Christian churches in North America have almost foul silence about the truth of what's going on in Palestine that the Christian church in North America in fact has the pious views about the text of scripture but this is entirely the gospel about Jesus who said the king of life is not about countries in the land and that ancient history that they try to generate now there's such an anomaly there's such a huge cast of understanding for Christians who think through these things and who want to honor the gospel of Jesus as to why Christians are so adamant in seeing just one side of this of this current religious conflict and seeing only Israeli truth and never, never seeing the truth of the Palestinians I mean there are two sides as it's a trouble but we're blinded here in North America with what happens in churches the piety, you talk to the tourists we both follow the footsteps of Jesus and as we do there we but we don't listen to the words of Jesus or follow Jesus when it comes to the truth of this king is not a political one this king is not about the things that we make our kings out of which is money and power and weather, the whole thing but remember the majority of the potential Christians are Trump supporters of all things so you're coming up with a hard battle to try to keep Christians on but my question is, what do we know thank you what do we know or think about that about the Christian church which is so pervasive in North America that has such a horrible story about these truths and that's 100% true to me it's no secret that the evangelical church has one of its driving dicta the idea that Israel, the kingdom of Israel has to be prosperous in the land of Palestine and that drives it and also it's a very powerful lobby group in the United States I didn't, if I sounded like I was trying to oversimplify that wasn't my intention this is a multi-factor situation there's many reasons why we only hear one narrative one narrative is highly privileged over another one that I think from where I sit is more of a question of who's driving American government who's funding American government who's controlling American government who are the likely presidents that you see historically people like George Bush and his father those are people who sympathize with that but in terms of popular thought the average North American person who is not necessarily part of the evangelical church even they have a sense of confusion the people who are part of the evangelical church essentially they're essentially a lost cause their dogma is such that Palestine can't exist but everybody else those are people who are suffering from an absence of the right narrative yeah they're sticking in the house well thank you again for that question I just want to add to the answer I think we oftentimes forget that the church is not infallible and we have both good and bad we have our partners from South Sudan where the church is really spearheading progressive movements in society and helping people but we also have a church in Canada that was promoting residential schools for the indigenous communities or running some of these residential schools I think one of the issues for us is the church and political interests in some places run toe to toe and I think I was sharing this with you before but as a Palestinian community we do have the word Israel in the Bible but we do not recognize it as a political construct we said recognize it as the people of God but there's one other thing especially looking at the New Testament for Christians how many times there were phrases along the lines of truth will set you free give on to Caesar what belongs to Caesar but the other thing is this truth is very important but I think sometimes the church tries to hide the truth when in some churches I should say when that truth is not in line with its interests and what it teaches and sometimes it does it because it is ignorant to what is happening and it doesn't know any better but I think one of the things we learn and I know tomorrow there will be a paddle on conflict transformation reconciliation and I want to say that in the context of our work truth is the utmost important ingredient to a healthy and effective reconciliation process if that truth is not out there it's very easy for anger to fester and anger can break down communication when it becomes the mode of expression it can also be anger can be that which incentivizes us to bridge but it can also break down the communication and so I think as it relates to churches we do have a long way to go but I think we are slowly getting there and we see in Canada so many of the churches especially within the past couple of years that have worked on their structures that have worked on their policies on what they say on Palestine Israel so that it is in line with a greater truth one that holds the narratives of the marginalized and the oppressed and that is more expansive than limited Thank you Eric I saw a Robert's hand so I'm going to give you a Robert's hand do you want to come down here Robert? You can be heard Is it okay? Thank you for the title but it can also be our first post in because it is a societal thing and what it comes down to is this concept of narrative and I believe the idea of narrative is actually the wrong idea to be working with because narrative is really built on an agenda to go some place specific so as Palestinians we cannot compete on narrative what we need to do is tell our story our truth story which is not a narrative because narrative is about injecting a certain agenda to lead people to a particular place a true story is just to share the truth the truth of what happened in history the truth of today the truth of our reasoning what makes sense to you what do your eyes see a narrative is not about what do you see it's about let us interpret what you see so as much as I live in narrative and work with it as we all do we also need to move away from the constrictions and the restrictions, limitations of narrative because the Palestinians will never compete on narrative if we just don't have it so if we could start thank you so my question is what are we going to replace that with? so I don't want to get into philosophical discussions of what constitutes narrative and not narrative but when I say narrative it doesn't necessarily mean that the narrative isn't true like 100% can be true but a narrative can also be false and what we see in this world now is where you have so many different people with so many access to platforms with so many different media is a conflict of narratives all over the place and so to say that my narrative is true is not novel everybody says that their narrative is true it's just from my perspective, the Palestinian narrative happens to be true so we have to figure out how to make that narrative or if you want to call it our true story how to make that true story more prominent more widely accepted more easily spoken about that's why for example marrying it or aligning it with things like the indigenous narrative is the right way because it's something that people understand and something that most right thinking people agree with whereas that kind of easy way to tell our story, our true story has just not been there before I think you're right that we can't really sometimes complete our narrative with the other narrative but at the same time we can tell our real stories and document them because we are in need for such stories and we don't have that they are just oral and present a huge or a real documentation of these stories of our people who has been displaced who has been obliged to leave under threatening and under the violence that they have witnessed so telling the story documenting the story and repeating the story is very important there we have to move from here and say that why should we only continue to debate about narratives that can be a truth or it can't be but as you mentioned that we know that our story is right so let's move continue and move into the future what are the needs of our people how can we really talk about a sustainable peace if we have a partner of course I have to throw in the fact that the planning team of this entire weekend and the whole weekend the exhibit wanted to use this photo exhibit that talks about the three people so we're talking about Afrika Indigenous people here and Palestinians because it directly compares their narratives of this possession right and I think that the narrative in Canada has changed rather dramatically I would say in the last 20 years since the truth and reconciliation commission of course there's a lot of ignorance still I mean I'm not saying we're making tremendous progress but I think that certainly the churches and others have taken in the truth of the Indigenous experience of dispossession in this land and can now maybe see with a little more clear eyes and open ears what the dispossession that has occurred elsewhere is about and what that results in in terms of oppression and hardship and exploitation and so on so I think that that's why we wanted to have this exhibit in the first place right is to compare these three narratives of dispossession and say that we still have a long way to go both here and in Palestine but look what happened in South Africa I mean they still have their challenges but they're moving forward in a way that we hope we eventually will hear and that Palestinians we hope can as well and the other thing is that the truth and reconciliation commission's report in 2015 was a reason they put truth first right