Welcome everyone to the session automating the known unknown by Sagar and Joel. We are glad that they could join us today and without any further delay over to you guys. Thanks Nidhi for like letting us in. So hi guys, myself Sagar. I am currently working as senior manager as state as part of geo. And I have over a decade or years of experience in the test automation and testing space. I would also love to get my colleague Joel introduced. Joel, can you please introduce yourself? Hi everyone, welcome to the session. I'm Joel D'Azario. I've worked, I'm working with extensio as a consultant for geo and I have around 18 years of experience in the tech space. Okay, so thanks Joel for the short introduction and. Okay, welcome on board everyone for the case study we are going to present automating the known unknown. So myself and Joel would be driving you through this entire session or case study what you can call. Before we get into any more details, I will just, I just want you to give a overview on what is the 30,000 feet view of our application or system which we are testing to get the complexity involved while testing such a big application or a component. So we have all set of client applications. We have an edge layer which deals with we have a number of microservices components such as consumers producers Kafka and number of databases elastic search cash. And the most problematic area where we would be talking more on this session are the external systems which are on the extreme right hand side of the diagram. They represent all the external systems or external entities the application under test interacts with. Now, I just want all of you to because I might be I'm very sure that you also have such complex systems where you test. So can you just give me on the chat window what are different type of known unknowns you think of or what you understand from what are the known unknowns. Can you please try to write down things on chat. Currently, I'm not seeing any chat coming in. Guys, please let it be interactive. So I'll just give you a hint. Okay. Third party dependencies. I can see Gaurav typing in. Thanks Gaurav for that input. Negative scenarios from third party. Yes, exactly. That is what we would be talking of. And Joel would be a point person of contact helping you know how this things we have done. Okay, so I think we got quite a leakiness of test. I don't think is a known unknown leakiness of test is something which is part of test design we need to take care of. But this known unknowns make flaky test. Testing 500 responses from third party. Race conditions. Yeah, quite a lot of good inputs coming from people. And thanks for typing us typing this down. But if on a broader level, if I try to bucketize whatever inputs we had so far. So these can be considered as like we have to test application when the option system goes down this typically depicts the 500 scenarios which some of you were talking about. Testing applications when there is a time out from external systems. These are like mostly the third party dependencies where we talk off the third party gives time out doesn't respond in time. Then one interesting fact is sometimes we have to test our application. Our application services are ready but the option systems are not yet ready. So we cannot go about testing such scenarios. And this point is like my favorite because there are scenarios when you have to test only few of the API fails not the entire all the API is for a service tends to fail. Very difficult scenario to automate in integration and other environments and requires a lot of collaboration efforts. And lastly, validating time out negative scenarios on UI, which again has dependencies on external systems whom we interact with. So throughout this case study or this session, we would be talking on this unknowns how we tackle them as part of geo. Yeah. Now when I bring the pointers of like these are tests which we need to automate or these are known unknowns. Everybody talks of mocking. Okay, we can use a fake server. And it will solve our problem. And most of the world uses fake in a manner where they have API test for each of different services. And they communicate independently to the mock server take response and we check behavior of each and every service. And same happens for front end. Now why have kept back end and front end a separate entity because as shown in the diagram as well. We have a edge layer which deals with the internal services and then internal services deals with the external services in an ecosystem. So the mocks and the interfaces for front end and back end might differ a while or a bit. So that's where we have separate API test and API mock servers and back end test and back end mock server. Like quickly, people can again go back to their chat windows and type. What challenge they think this approach might bring to them or if they have faced any such challenges as part of their experience. Sorry for making you type, but if you can please again help me out with certain thoughts on this. What you think is a challenge. If you test this way. Okay, change of API contract as part of new feature. Good. Same as like change of API contract test data. Good call out web of test data is like really a painful activity while we do this kind of mocks. Not all data set can be tested. I a little bit disagree to this point that not all data set can be tested because mock provide you that flexibility to test all different type of data. But if required, we can have a detailed discussion in the hangout which needy would be introducing in someone post this session. How do you test your mock? This is an interesting question. Yes. How do tests to do you test your mock? So please be patient for this question at least how we test the mock itself. In a while I will hand it over to Joel who is like kind of expert on service virtualization and mocking. He is active contributor to specmatic tool itself, which also will come in a while. So I think we have got quite a good inputs. But as per our experience, what we have encountered the very first drawback of this approach is we create separate tests for front end and back end. And that in like that involves or brings in mental maintenance and other aspects to it. Secondly, the integration of front end and back end gets only tested in a higher environment, which is again, what is not desired as part of geo as part of the agile methodology. So we want to shift left and have this interaction tested as early as possible. And like as some has mentioned the static mocks test data preparation, these are all like maintenance heavy activities need a lot of planning, strategizing and stuff. And as the application scales, maintenance of mocks also adds complexity to it. And the interesting point which we want to highlight is mocks or static mocks are not intelligent enough to validate the incoming request because mostly the mocks are configured to take a request and provide a response. So they don't actually validate either the schema or the validate the genuineness of an incoming request. So we just take a while to tell you one of the scenario wherein we were following similar mocking approach and the front end application somehow converted a integer value to a floating point value that it added a dot 00 to the input value. So the mock test everything passed because server was expecting a field called as pin code. And it got that field mock work, we went to higher environment, but there the backend services failed, because they were expecting a pin code like 400709, but they were getting a input 4009.00. And that's where a intelligent mock, which can validate incoming request is pretty much important, and we would be talking on that as well during our talk. So the overhead of mocks steps for internal services is something similar to static mocks are maintenance heavy, but as we have a lot of interaction between services and client interaction to services. We have to create a overhead of internal service mocking as well. Now I will not take a because I will again take this slide post when my like when I continue the session, but if you can like if you check this diagram as compared to what we showed earlier. So you can see now everything which was on the right hand side is stopped using a tool called a specmatic which supports intelligent or dynamic runtime mocking that the test itself can handle. So if you can see a dotted line which goes to the specmatic server, which sets dynamic stubs or dynamic responses and the end to end ecosystem works. So when we see the demo and move to the next part of this, I will take you through this in more detail, but currently I would just want to hand over things to Joel. So he can take you on a journey of service virtualization ahead. Joel, can you please take over. Yeah. Thanks, I got needed to stop sharing. Yes. Thanks. Taking over from where saga left off on this slide, just to reiterate deeply. We've created a geo a special environment in which we deploy the key services in the center. And the services to the right, which include things like mass and novel box and other such things. Everything in the peach boxes is basically not in that environment. But has been stopped out using a tool called specmatic or mocked, if you want. I believe this is how just just to sort of simplify the diagram reduce it to its minimum or smallest simplest possible version. This is what we typically do right here simulated API service virtualization tool is a way by which you can simulate all those APIs instead of actually having them in your environment. And your isolated test environment is just meant for testing the clients or the consumers of those APIs. And your tests will set up state on the simulations, they will, they will take care of that and then they will run there are several benefits that this confers. You can simulate weight, you can simulate any number of dependencies without expensive test setup. Right, because you can't really, if you're if you're going to, if you're going to run an isolated environment, you can't really have all the API is that you're using setup locally. That's not easy. The only way to do that is simulate. It's really fast as no downtime you have complete control of state setup. So as some people have already pointed out in the chat is that these simulations while being really fast and light and easy to set up and all of that. These simulations can go out of sync with the actual API. So the simulation can go out of sync with the simulated. And then again, you know, we will end up getting a bunch of integration errors when we put the consumer and the API in an integrated environment for the first time. And that's not good because the higher the environment, the longer it takes to resolve these kinds of errors. And we really want to shift left. We want to get these errors as early as possible. In fact, we want to even get it in our development environment on the laptop, you know, before it even gets deployed. And how do we do that? This is this is a problem in which you must somehow nail down the interaction between your simulated API and the simulation. This is the simulation itself. This is what we are calling contract driven development. Contract driven development means before you even start building the consumer before you even start building the API. You actually start with the contract. And I'll just give you a small example of a contractor contract basically contains all the details about the structure of your API. The API is the industry standard for describing HTTP APIs. And there's a lot of rich detail that the open API aspect can contain. So I've shown you here on the screen a small sample file that that contains an open API specification for a sample application and we'll come to later and order API. You can see the products, right? There's a path for product slash ID, which means it takes slash product slash 10, for example, might give you details of order ID 10. What that looks like, what the structure will look like, the JSON request might have certain keys, the response might have certain keys, headers, you know, you expect certain headers to be there. What method will you use? There's a get, there's a force, there's a delete. There is so much information, right? This is complex stuff, you know, it's, and you can put all of that in the contract. And this is not a document. This is an executable specification. I say that because it is important to execute these, right? It is always easy to read a document and, you know, make a mistake, but it's important to be able to execute them. That is how you get the feedback. The contract then validates the expectations of how, of the consumer, of how the API would behave. And it also validates that the API is actually honoring those expectations and it's not going to break any consumers.  And once that is done, that is when the consumer developer starts building the component and they start to use the contract to simulate the upstream API, right?  If I'm expected, if my API is expecting to receive a JSON object, but I'm trying to send an XML, you know, the contract will break. If the API is expecting to receive a string and a string ID, but I'm trying to send an integer, the contract would validate that. I'll show you some examples of this later. And in the same way, the API developer also uses contract tests, driven from the same contract. So if you realize, the contract actually contains all this structural information. It contains everything from what the, you know, request should contain in the payload, what the headers should be, what the parts should be, so on and so forth. All we've got to do is add actual values. And now you have an HTTP request. And you can take the HTTP request, hit the API and get a response back. And now the contract also tells you what the response would look like you can validate that too, using the contract. So this contract becomes a single point of like a guardrail, you put, you laid on that guardrail first, and then you start development. And now you start development independently. So consumer can start anytime, provider, the API can start anytime. Doesn't matter because the consumer can simulate the API accurately whenever it wishes. The API itself can effectively simulate the consumer using contract tests. And there's a whole class of errors that gets eliminated just by doing this so that when you deploy in the integrated environment, you don't get these problems. In Geo, we are using an open source tool that Sagar has referred to before called Specmatic, which, which is a project on GitHub. It's open source and we invite you to take a look and you know look at contributor possible. But it essentially handles both the simulated, the simulations that's your service virtualization and running contract tests, you just feed it a contract. We will, I will show you a demo of how this works data. So just taking a quick deep dive into service virtualization, right, your, you have your test environment, the consumer is wired up to the simulated API. You have to remember the consumer has no idea that this is a simulated API as far as the consumers concerned it's an endpoint. That's it. We as the people running the test know that we are simulating the API because we have an isolated environment. And in the tests what the test will do is they will set up expectations with what would the API as a simulation, right it does not really know what to do. So you tell the API, you tell you tell Specmatic, when you get this request, return this response when you get this request return this response. And Specmatic will will honor your request but before doing that, Specmatic will first validate with the various contracts that you have given to it when it started. There's this expectation with the contract so if you say slash product slash 10 get that request will come in and then you return a response. Specatic will check is there such an API. You know, is that is that slash 10 is that a number as the contract as the open API spec said. Okay, and you're telling me your test is telling me to return some response. Okay, does that meet the structure as specified for that API in the open API contract. Okay, great. And then the test moves ahead actually hits the consumer and this may pass or fail depending on how the consumer behaves. But if that simulation is wrong, if the expectation is wrong, Specmatic will immediately give the feedback to the test and the test is right there I'll show you a demo of how this works very shortly. I have a small sample application that that essentially small HTML UI, it's any small e-commerce application hitting a backend which is for that UI, which in turn hits an order API. We're not really focusing on the backend UI today. Most importantly, I'm at this point I'm going to show you first how we are stubbing out the order API using a contract, which has been fed to Specmatic, and we will see some tests running against the backend UI that hits the contract. Let me now switch to my code. You can see here. The API that this is the spec that I was showing you on my screen before. You know, you can see all this all this interesting detail and let me take you through for example for those who have not seen open API it's it's a really good standard for describing HP APIs, right. The product details, for example, you know, you can look at this, I specified a name string type type itself has is an enum, if I remember correctly in this case, the type is an enum that takes various values, etc. All of this information is here. Okay. Yeah, thanks, Sagar. This, this is your specification. This contains all the details. This is essentially your contract. This is the starting point for your development. You don't start development basically I either the API or the consumer until this specification is ready. Right. And then, once this is ready, let me show you how the tests are and we are using karate for these tests. We've written a small karate helper. The karate helper essentially executes the tests in this file, which I will show you in a moment. And before executing the test in this file, we are starting up specmatic itself, specmatic here has been configured. With the needed contracts that it is going to stop out. So this is the order API v1 file that I showed you a moment ago. And we are going to see how that's coming out happens. So I'm going to run these tests. Right. I'm just going to run these tests and while the tests are running, I will show you how the API test actually look. This is the next test. Right. What we are telling specmatic here. This is karate to say this is the URL we are going to use. We are going to make a request to this URL. And this is specmatic expectations. We are basically telling specmatic, you know, expect slash products, the query parameter will be type and value will be gadget. And this is my response. Right. And specmatic has validated this response and actually check that it matches the contract. So for an example, what is what happens if this? Sorry to interrupt you. Could you zoom in a bit? Zoom in again. I hope this is clear. Thank you. This is clear. Thank you. So essentially, what happens if if this is wrong, right, we'll see that later. But we have just told specmatic. Expect this request. Return this response specmatic has expect has accepted it. And now we hit our, our API. This is the component we are actually testing. This is the system under test. We are getting this product type from the data driven tests, which is a feature of karate. The product type is here gadget.  We get a response internally what's happened is our system under test has actually hit the specmatic service, the virtual service has got a response back that response was this right. And so it was able to, you know, do its processing and return some value back and the same with the other tests. So there is this two step process where first you set up the expectation on specmatic, and then you make an API quality or system under service, which is going to call its downstream, which happens to be specmatic again. Right. And this is beautiful because suddenly this test is completely under control. The downstream is completely under control. Nothing can possibly go wrong because specmatic is running locally. So I don't, I'm not affected by network availability. I can literally do in this entire work coding completely offline. I can write all my tests also completely offline. I don't know. I don't have to worry about the fact that my staging environment is unavailable. What then prevents the API from drifting away from this contract. Right. Because all of this is of no use. I can do to the contract perfectly well and the API drifts away from it and we are back to square one. Right. And I will show you how this works. This is the API project. The API project essentially runs contract tests. So it's symmetric. Right. On the consumer side, you don't have the API. You need to simulate that on the API side, you don't have the consumer. You need to simulate the consumer to simulate the consumer using contract tests. Where do the tests come from? Let me run the test. Essentially, there is a very specific, a very similar file. Here, which basically contains this line here. It's the same spec file. It's the same YAML file basically. This is an artifact of specmatic that basically imports the YAML file. So I will show you that another time. But it's really the same YAML file that we are using. And these contract tests have been generated from the YAML file. All of these request and responses essentially come from that YAML file. The way the YAML file works here is I was saying, this is how it's imported. So the YAML file is imported in this spec file wrapper. And while the spec file wraps the YAML file, it takes all that wonderful structure, the request and response and all of that. It takes the request structure for each API call, combines it with some values. So you get an actual request, makes the API call to your API, gets the response back and validates that it meets the response. Right. And by running contract tests against your API, thus simulating the consumer, and by running contract stubs, which is to say service virtualization using stubs on the consumer side, thus simulating the API, you are able to make sure that both sides, the consumer's expectations of how the API works are in sync with the contract. And you also know that the API is not going to break those expectations. And that is how you make sure that the two will not break when they are actually put together into an integration environment. So just a quick demo of what happens when, you know, you, you try to set an expectation the wrong way. We know, for example, that type was supposed to be a gadget, there are, there are certain set of values that that can, that are that are expected and furniture is not a valid expectation. You're not supposed to be able to set type to furniture. And if I, if I run the API test now, you should basically see some breakage and the breakage will will come from specmatic. The breakage will come from specmatic because specmatic will highlight. This test has failed right, specmatic is itself highlighting here a 400 request, basically saying that there is a problem right I won't go, I won't go into this but specmatic has broken the test, the system under test itself did not get a chance to run. So that's a quick summary of how specmatic works, and how we use a contract driven development to keep to be able to test your consumer isolation. So you don't have the problems of a staging environment, you test your API and isolation as well. So that also avoids the problems of a staging environment. And then when you actually put it to a staging environment. You know, you can, you can be sure that they will integrate. One quick note here is we have to share the same contract across the board. That's the whole point of this is that you're using the same contract everywhere. Right, there is no point in having separate separate copies of the contracts, because then those copies will drift apart from each other. And then you've lost the plot again. So to make sure that we have the same copy of the contract wherever we use it. What we have done in Geo is we have introduced a central contract Git repository. This is a Git repository essentially contracts are nothing but text files. And so you can pretty much put the contract there. And you know this the same repositories leveraged by the consumer as well as the API team. And so both of them are able to stay in sync. There is a lot more here, which I don't know if I have time to cover right now because we have have also what happens now when you change the contract that the contract the changed contract is going to affect the consumer and the API that impacts your your backward compatibility. So there are ways to handle that using specmatic perhaps you can catch up with us in the hang out later after the talk, you can also visit the specmatic website that's specmatic.in I don't have a link here but if you do a quick search on GitHub for this tool you will find it. And then there is API versioning as well what happens when you want to introduce a backward compatible change. You will have to you'll have to handle that by using API versioning that's another topic by itself. So, that's essentially it.  What we have essentially done is we have used specmatic, the big orange bar on the right hand side that's specmatic. This is simulating hybrid scrap positive margin on any MAS all of these systems, and there's a set of services within our team that when they need to talk to these external systems. They, they essentially talk to the specmatic stuff. And these external systems also run these contract tests. This ensures that things are in sync when we actually put these systems into a common environment. Thank you, Sagar. Thanks. Thank you. Let me stop the screen here. Yeah, sorry. Just let me know once once. So I'll have like a lot of things about service virtualization. So now what different or disruptive as far as geo we are doing. So that is basically we are shifting the contract driven development, not only to back end but getting it on to the front end application as well. That is the first thing we are doing. Secondly, we have created an entire isolated environment for application under test. I'm not talking about service under test, but it's the entire application ecosystem under test. So it can be changed at any layer, be it a database change, be it change on the consumer processor part, any of the micro service. Their impact on the client application can be tested in isolation and the power is provided by stubbing intelligent stubbing powered by specmatic. So again, I will just reiterate that this dotted line, which goes from your test to specmatic is the key of driving this entire test automation ecosystem. You can set dynamic expectations and at the same time you can have validation done on your client side. What is that you want to see. So Joel have quite talked on the central contract repositories, but I will just take a minute more to give you more details on how as a pipeline process we keep our contracts in sync. So every service or UI repository have got a reference file, which contains the contract used or the external system API calls used by that service or application. Whenever the build happens, we create two artifacts. One is the latest copy of contract from the central repository and other is the build artifact. Now this get all through the static code analysis check. Now, as part of the deploy contract bundle stage, all this contract latest copy of the contracts get deployed on to the specmatic server. So that when my automated test run, they always run against the recent contract. If any of the external team maker breaking change. My automation strip will not run against old contract and pass, but it will fail, giving me a update right in the lower environment, not in the integration environment. So just a small glimpse of it. Now, as part of demo, I'm trying to replicate a scenario which I talked while talking on the drawback front. There is a external service and one of the API wanted to give me a failure. So as a end user, I am trying to place a order on clear. Like I have to place order, but option system is not working. So I will not see credit option like I cannot place order on credit, but I should at least see other payment options so that my tier one flow doesn't break. So this is something which is a very important part of testing because in production, if that API goes down, your ordering flow should not be impacted. And that is kind of one tier one flow. So as a flow, what Appium test does is it sets a expectation on the specmatic server, the big arrow saying, okay, if you get a request for a geo, then just reply back with status code 500. And then it triggers the UI flow on the client APK. Now client APK calls internal service, which is internal to our application. Internal service triggers a call to external service, which in this case is a specmatic server. And now as we have already told our specmatic server during runtime that if a request comes with this request body or for this particular phone number, you return a 500 response code. This is dynamic in nature. That's why all the parallel running test will not get 500 only this particular request will get a 500 response code. The backend will process and send a failure to the client application. And client application will show the desired behavior which would be validated by our Appium test. I will quickly move to the demo piece of it from the call. So as you can see what similar to Joel have showed you. We have a JSON blob which says what would be the method which will come to you like basically a great request will come to you. It's blank because we will set it at runtime key what would be the path because it would be dependent on phone number, the merchant phone number. And then what response and status code to expect. Now this is a template which we have already created from our test case. So this is basically the test case where you say I would be this is a typical BDD driven framework. I will log in. I will search for a product. I'm looking for zoom in so that everybody is visible for everyone. I search for a product. I add that product to the cart. I verify and now I verify that the credit option is not available when the external system or the external API sorry not the system but the API itself is down. At the same time I verify other payment options are displayed. So this is a typical test case which if you talk on integration environment very difficult to replicate this scenario. And at the same time this is a perfect candidate for a known unknown category. Even if you test such cases you would be testing it at the very last leg of your testing cycle. Now if you see here you can see that we are setting a expectation for the request. It will read that template and set up failure response. Now this piece of code actually does the magic for us where we say path would be this the path which the external system or the internal system will send the merchant mobile number. What status I expect. The message success should be false and message should be internal server ever status code 500 and result should be null like you should not get any result. I will try to yes not try but I will run this test case for you for a while but I'm not sure because in view of time. This test would run on a emulator but meanwhile the test is compiling and other thing is doing. So what is going to happen is so if you see my application will post a request saying I want to get the merchant details and they will get the response fail to fetch some of the details. 500 response code over the status will be 500. So basically this message comes from an internal service which gets a message from a external service or a mock server. So if there is any problem with either the application forming the request or backend processing the response both can be captured as part of this flow and you can test both the front end and backend in isolation without having any dependency on an external system to get it more clear because we currently lack time. So I will just directly go to the report part of this. So we log all the report on report portal. So when this test get executed you will get to see this kind of report where you can actually see what's happening to be set expectations. These are expectation for login. This is expectation from an external system when we search for a merchant. All these things happening and then we try to trigger our login flow. Sagar just a heads up five more minutes for the course. Sure. Thank you. Yes. So we validate we have finally logged in and before we open for Q&A. Just show you. This is where we have set the expectation as we want to find a response code from external service. And you validate the behavior on UI that we can see this cash on delivery option, but we cannot see a credit option. This is typically what we have done so far that is we shifted the entire UI testing on the left hand side. I think without much more delay. I want to open this stage for Q&A. I think you already have some things on the Q&A part of it. So okay. I think we can take Q&A one by one. There are questions on specmatic. Joel, can you take those questions? Yeah, I'll just read them out. They're like around three questions is a specmatic open source. Yes, specmatic is fully open source. And the next question is there an automated way to generate this contract? At this point in time, we don't have an automated way to generate open API contracts. But I think we're looking at doing something along these lines at some point in the future. And one more question is, but can you have dynamic templates in specmatic maybe with some logic? For example, if a response needs to include something from a request, like some IDs or calculate something from a request, for example, add two integers and put it in a response. So I'd like to actually add one more thing on the previous question briefly. I will come to this as well. I understand the question here. Although we don't handle, although we don't auto generate contracts, there is this very nice tool called Stoplight Studio. Maybe you can look with Google search and look for it. Stoplight Studio is really powerful. It's a nice movie and it makes it very easy for you to write open API contracts to answer the second question about dynamically, you know, making changes. So specmatic currently includes certain matches. If, for example, you want to just match any number you can do that. Usually the expectation is that if you know, you know what use you most of the time you will know what your application is about to ask for. And you will know then what kind of value the request is going to look like and from that what response is expected to be. I think it will be good to actually have an example of this. So maybe you can catch up with us later in the hangout and we can we can look at this a little bit more depth. How does specmatic handle API versioning? I think in this context, the specmatic basically treats API's as files. So we have a backward, we have a static check basically for backward compatibility. It's pretty simple to use. And essentially it tells you so there are certain thumb rules. If for example, you add a compulsory parameter in your request which was never expected to be sent before. You know for a factor immediately going to break all your downstream consumers. This can be statically checked and specmatic has a simple backward compatible check to check this out to sort of get this feedback. And the rule of thumb here is that if you are introducing a backward compatible change bump up the API version, specmatic handles versioning by just the file name. So you essentially have probably V1 in the file name and the new file name will have V2. And then the respective consumers and providers are expected to stay on track with those respective contract files. How are you mapping mocked API to the mobile app? I'm not able to fully answer this one. But okay, I think I can briefly say that there is a descriptor file. There is a descriptor file called specmatic.json that contains all of the downstreams that your application would want to stub out. So the mobile application will have to declare its downstreams inside that file. And similarly the actual API will have to declare the contracts that it adheres to. But essentially that's how your mobile application will declare its contracts. And that's how that's how the mapping works. I'm not sure if I fully answer that question though. I will just also take a while on that. So basically, at least as part of the geo ecosystem, the application which we test is a interfacing application between the external world and the client application. So whatever request is originated from the mobile app, it first comes to our internal services, which are all actual in our isolated environment. And later all the option systems for those microservices are stubbed using specmatic.  And as per the app doesn't consider of mocking anything. They just call actual APIs which they would be calling in higher environment as well for the internal services. And that is what is different what we are doing from all others in this industry or in terms of mocking. If you need more details, we can talk on the Hangout session. Right. And final question I think if we have time but it looks like the last question. We are stubbing external services but say I want to stop an API service and consider my consumer UI and get responses from the stuff absolutely you can do that. You can actually stop any service the fact that it was an external service here was because of the approach that we are taking, but you can pretty much stop out any API. And in fact that isn't that is exactly what that's one of the things we are doing as you as well. The stubbing out we are writing tests for one of our mobile apps that stuffs out its downstream APIs. Using specmatic and this test can run from the desktop itself in fact that was also saga's demo. I think that that might answer your question. Thank you saga thank you Joel for sharing experience with us today. And thanks for joining. Thank you for being patient audience. Thank you.


Hi guys, this is me from the future. We have a new bread-winning housewife drop We have a tumbler with a quarter zip matching sweats pink crew sand crew and I come back what a tumbler I was gonna say coffee tumbler, and I I don't know I don't know that was but anyways if you guys would like to shop it I would be so happy. I will have it linked below. Thank you to everyone who's already picked up items I am just so grateful for you guys, and it's just so exciting and such a fun thing to do Anyways, if you guys want to match, I will have it linked below check it out. Happy Sunday Good morning guys, it just woke up. I'm taking you through a glow-up vlog I've been in a funk recently like I'm getting out of it. I feel like I'm out of it today We're getting a spray tan. We're gonna your nails done. We're going to Pilates. We're making a smoothie. It's gonna be good Oh my god You know how to counting like oh somebody that's healthy and they're even in and I was one view my Around people better uplifting, you know Right, I just made a green smoothie. I used a new recipe. It tastes okay. I also had the bloom nutrition Little green powder. I think I'm going to work with them in the podcast So I wanted to try it out first and I'm actually really liking it. So I'm gonna sit here I'm gonna read I'm currently Reading another book in the go-giver series. It's like this business series. It's a nonfiction book I prefer to read a nonfiction in the morning. I mean, he cannot stand not having any attention on him So anyways this little morning kind of routine. It makes me so happy All right, I'm listening to a token CEO and I'm finally going to get my nails done They look horrible. So we're gonna get that done This is the best iced coffee order Guys my nails are done. They're so basic really easy. I just walked in like to color out I mean, they're okay. Nothing crazy.  I don't think that but with myself I just can't do it but my entire nail appointment on the phone with Jessica Anyways, I'm going to Pilates the way my skin for my hydro facial guys. It is life-changing, okay? I'm back from Pilates that class was so hard that once we got to the 55 minute mark I thought we were like minute 10 because I was so confused. Anyways, I'm home.  I'm out of the shower. I'm wearing the coziest set. I just got in the mail from H&M I forgot I even ordered it. It is so soft. Okay. I have a call with Instagram. So I'll talk to you doctor Stuff I just ordered in Calisthenics. I've been eating Calisthenics so much for lunch lately the Rachel sandwich. Wow, it's so good It's like the Rubin But it's the Rachel. I honestly don't really know the difference I'm not a very like specific person with things. I got new Brooklyn towels and new towel sets Feeling very adult. I also I don't think I showed this in yesterday's vlog I got a Brooklyn in like weighted blankets, but it's this green Blanket it's a cross between a blanket that you would have at your grandma's house out of like comfort But also it's cute. It's just easy and simple I wanted one for downstairs slowly, but surely my house is gonna be coming together in the next like probably two or three months and Weighted blankets help me so much with anxiety when I'm trying to calm down. So I needed another one just in general to have And obviously we have the new Barstool so these have got to go so I'm gonna take these down to the garage bring my food up. Oh Also in the middle of doing laundry. I'm really blowing up today guys. I'm feeling very good. Okay My beautiful food. I'm going to keep working.  Totally changes the taste and like this needs a straw, you know, anyways gonna put a podcast on the TV Do you guys prefer to watch a podcast like a video podcast or to listen? I love having Like video podcasts on throughout the day. I listen in the car and I walks all the time I just actually in general, but if I can watch it, I probably watch it on my TV Guys I've been working all day. We have our drop tomorrow. I'll have it linked below It's definitely available. It is now 5 p.m. And I'm actually getting a spray tan or an airbrush tan But they're coming here. I've never had a spray tan like at my house Which I think is gonna be like my new go-to for like more special occasions. It's Dallas 180 They do I'm looking at our Instagram They're an uptown in studio or on the go and you can just do 12 hours notice for on that appointment So I'm gonna do this for like every trip from now on just like big weekends and stuff. It's so Convenient I told Jessica that I was doing this and she added herself to the booking. So We are getting spray tans here and then tonight. I think I'm gonna make a new soup in our glow-up vlog We're going up physically emotionally Emotionally spiritually and like every single way, you know and sometimes a spray tan is just like the number one priority I don't know how to describe it, but when I have a tan on I am a different person Like I just feel so good So that's what we're doing today because I want to feel better That was truly a magical experience because live in Dallas, it's Dallas 180. I talk about my stories I'll link their Instagram below because I think that's actually how you book, but they were so nice. It was so great They literally travel to you. They do their little setup you go in it takes like I'm not kidding for probably For both of us with us kind of being slow. It took us like I think 20 minutes It was so fast and it's so much easier Oh my god from now on for like every trip that I do I'm going to be calling them So it was absolutely incredible Obviously, I can't wash off the tan until tomorrow, so we'll see that in the next vlog I have my skims robe on I have my recess in a wine glass I'm about to start cooking dinner and I actually need to send in a few more things to the podcast tomorrow And then I'm like done with work. I think It's only 6 p.m. The vibe of my house is incredible Picture this the sun is setting when the stars go blue by Temagra is blasting through my house It is clean the dogs are in a good mood Candles are burning. I mean it is fabulous here, and it's the night before a draw, which I'm really excited for So I'm just saying my nice little glow up Notice how much happier I am with the spray tan on all right. I'm just saying but my glow up You know my glow up physically and Pilates I guess physically also for my nails and my spray tan Emotionally that's also Pilates Um, I also journaled. I think I might just some self reflection tonight with a little We're not really strangers thing and spiritually with my home feeling incredible This was the glow up day that we needed If you guys have a glow up day make a tick tock or something and tap me because I'm telling you these are like incredibly Incredibly helpful also I drink these recess drinks all the time. I kind of have been off them recently There's a code. I think it's like kinsey 15 you get 15% off or it's kinsey try both of those Um, these are the mood boosters I honestly don't really know if I notice a difference between the two because I never pay attention To which one I'm grabbing. I like all the flavors It helped me so much when I'm anxious or just to like wind down after a day of work or wherever I've been They're really great. I've changed into black sweat and a long sleeve the most modest top I could find to cover my entire body So I don't get self tanner everywhere this the soup smells So good guys. I oh My gosh, I made red lentil soup and I added some chicken Oh my god.  I love Knights to myself at my house. They make me feel so much better. They're really necessary. I need Honestly two to three a week, but I normally get at least two and they're truly just the best nights Isn't a new recipe that I tried today Oh, I mean it looks so good. Oh my god. He just got into college and I'm literally crying Like there are tears in my eyes.  I'm literally gonna start sobbing. I'm actually gonna sob All right, that is going to be it for my glow-up vlog I hope you guys enjoyed subscribe if you guys haven't already love you guys so much and I'll talk to you soon The next vlog is a hosting a dinner party vlog. You guys will love it. All right. Let me guys talk to you soon. Bye Well, I think the first thing is recognizing that it is really scary to be alone Especially when you're going through like a trauma or grief or you know after a breakup or something But I think if you can you can kind of reframe it as an opportunity to Grow and to just under kind of understand things better


Alright, we're off. Really not looking forward to that, but here we go. Pennsylvania, here we come. Welcome to another vlog. I am currently on my way up to Pennsylvania to visit my friends and family. I'm staying up there for about three weeks and I decided to take this trip now because it's my birthday in two weeks? Three weeks? And I'm turning 30 years old, which is so crazy. I'm excited about it. 30, flirty and thriving, am I right? But I was trying to decide for months and months what I wanted to do for my 30th birthday because I don't typically do anything exciting. Like I don't really celebrate my birthdays, but I feel like for 30, like that's a big deal and I wanted to do something kind of special. I just thought, you know, all I really want to do is just be with my closest friends and just have a good time. So I am renting an Airbnb in the middle of the woods pretty much and I'm having a little party and I'm very excited. I'll be doing that in two weeks and the rest of the time I'm just gonna visit my family and see everybody, but I am currently about halfway there. Just crawling along in DC traffic, love that. Yeah, I just wanted to pop on here and say hello and give me an update and let you know what's going on. I'm gonna try to vlog this trip as much as I can while also like still being in the moment and enjoying it, you know. Also I'm very excited because my parents know that I'm planning on coming up for my birthday, but they don't realize that I'm staying as long as I am and I did not tell them that I'm coming today. They think I'm still not coming for like another week or two. I'm just gonna show up and surprise them and that should be really fun. I'm here for my package. It's a couple weeks later. We have a little bit of catching up to do. So first of all, before I forget, I know I just like randomly appeared with a septum piercing and didn't say anything about it. I had wanted this really, really badly like 10 years ago when I was in college. I don't know, I chickened out. I never ended up doing it because I didn't know how I was gonna like it on myself. And then recently I was thinking about doing it. Randomly one day while I was still in North Carolina just literally went into the piercing shop by myself, spontaneously, wasn't planning on getting it pierced that day. So I didn't vlog it or anything. I definitely like how it looks better when I have makeup on and I'm like all done up. I've been in PA for two weeks now and I've just been trying to see my friends as much as possible.  There's been a handful of like nice days, but for the most part it's been kind of cold and a lot, a lot of rain. So a lot of my days have been spent just inside. I watched season four part one of Stranger Things. Oh my god, so good. I can't wait for the last part to come out. So it kind of sucks not really being able to go out and do very much, but at the same time I feel like it's nice to just have a little bit of a break and just take time off and just be on vacation mode. I will say though I thought that being here would feel like super nostalgic and it has it. I mean it's beautiful up here. Don't get me wrong and I'm so happy to see my friends and family, but I don't know. The whole time I've been up here it's just been making me really appreciate where I live in North Carolina so much and I keep thinking like I wish all my friends and family would just come down there because then it would be perfect because I miss all of them and I love them, but I don't miss this area. At least not yet, you know. My allergies have also been terrible. My hair's been super, super dry and like really tangly, which I feel like is probably because of the water too because my parents have well water.  I miss Wilmington. I kind of think if there was anything like eventful that happens, I don't think so. But I'm currently at an Airbnb and it is just so freaking cute. It's in the middle of nowhere in the woods like the dirt road getting up here as you saw was so narrow and terrifying, but I booked this place for the weekends and I'm having a bunch of my friends come over tomorrow and we're gonna grill and just hang out, drink, play music, have a good old time and I wanted some place that would be like secluded so we could just enjoy ourselves and not like disturb anyone. It's really cute here though and it's like so aesthetic like the way they have everything decorated. It's so cute. There's a lot of plants inside so I'm excited. Hopefully we can get like some nice pictures while we're here too. It's my 30th birthday on Tuesday, but let me show you a little tour of this house. I literally just got here. I didn't even bring my bags inside yet. So this is the front of the house. It has this really nice wrap around porch. So I have some seating over here and then this is the entryway. There's a little living room that opens up to the kitchen. I just love the decor in here. It's very much my style. It's so freaking cute and all of the skylights. I love it. And then down in here there's the bathroom. Love this. And then over here we have some bunk beds. There's like a loft one all the way up there. I kind of want to go look. Actually this isn't a bed. It's just the top. So never mind. Come up here and just hang out and read I guess. There's some books over there. Oh my god. This is terrifying. And there's a bedroom over here. I love the ceilings. Oh there's a light up here. Oh there we go. Closets. Oh my god with robes. Oh my god I'm so excited. Definitely gonna be putting those on later. And then there's another bedroom over here. More robes. We love to see it.  There's a bunch of string lights all over in the backyard here so I cannot wait to turn those on later. More seating over here. A little table. And then it wraps around back to the front. Yeah look at all these string lights. These are gonna be so cute. A little table down here. I haven't come to check out down here yet. This is the most exciting part. Hot tub. Oh my god. I cannot wait to go in here. Look how cute it looks from the back. Adorable.  This is gonna be super fun. And then this is a little grill. Yeah look how nice. It's like so serene. And there are houses like back there because I passed a bunch on my drive up here but you can't see them at all or hear anything from here. So super private which is exactly what I wanted so I'm really happy about that. This is gonna be so nice. Julia my friend who I do my podcast with is on her way to meet me.  We're just gonna hang out make some drinks. We're doing an Instagram live on our podcast page. I'm excited for her to get here. It's so nice but I feel like as soon as it gets dark it's gonna be really freaking creepy. So I definitely don't want to be here by myself.  Okay bye. So before I came up here I stopped at the store and I got a few things like I got paper plates and napkins and cups and stuff like that for tomorrow. And then I also got a couple things for tomorrow morning when we wake up. Half and half for our coffee of course and orange juice to make mimosas with and I got back a coffee. Got some cinnamon bread but I was not thinking about dinner tonight so I was just talking to Julia. She's about a half hour away she said and she's gonna try to see if she can find something because my entire drive up here was like all back roads and I did not pass anything. Like it was all just woods and like a few houses and we're planning on drinking and doing our Instagram live and all that when she gets here like I said uh so yeah we definitely should eat something but got all the alcohol forgot food but didn't forget the alcohol of course so we got some vodka. We have some champagne for our mimosas in the morning. We have some knockoff Kahlua and some knockoff Baileys. You know what that means. Espresso martinis. Although I don't have espresso but I can make regular coffee to put in it or just skip the coffee all together. That's fine. So yeah I am just gonna wait for her to get here I guess. I'm trying to decide which bedroom I want to take. I think I'll do this one because it feels cooler. Yeah this room definitely feels cooler. I kind of like that it has those shelves over there but I could put my stuff on but I'm gonna let Julia take that room. You know she gets hot very easily and I get cold very easily so I think this room will be better. Oh here she is. I haven't seen your new car yet. What do you like? Very nice. That little two-tone action. Wow amazing. For a base morning. Um do you have a lot of stuff do you want me to grab anything? First things first. Most importantly. Hello. I'm so excited. Wow.  Oh my god. Yes. All right well I'll just I'll just grab this stuff for now. I'm gonna. Too bad I wasn't recording that. Hit the ceiling fan. No. Oh god. I can't believe it. Yeah I know. No. No.  Tape it. Maybe. This one will just not float. Yeah well we well if there's tape we could tape it to the wall. Are you? Oh my god. Wow all right well oh my god. Just an O. Oh my god. You can have a super size. Yes a ginormous martini. Okay my idea was like so exciting. I'll do 30 little gifts. Yeah. Oh yes. Maybe this will be my outfit tomorrow. I wasn't sure what I was gonna wear but now I know. Yes karaoke microphone. I was like you didn't we just use it this weekend. I know literally. Well you know that I will use this all the time. I thought it was something you might need. On a regular basis even when I'm just like home alone with the rest of the games. It has a voice changer too.   I absolutely will be using that. That's like a practical adult. Oh dishcloth. I love those like cute. Wow eco-friendly. Thank you. That's a little candle. Oh I got that from a glisten. Albany. It smells so good. It's in here. Yeah. Amazing. Does it? Is that a magnet? No. I don't think so. It was like a perfect British thing and then I realized it didn't come on that. Oh my god. I love cozy socks. That's in the world. But you have to be careful when you wash them because I ruined mine. They're more like drying them. Yeah yeah yeah. It's like a sleep mask but they came out with a new one. Oh my god. And you don't have to use your finger. It has a spatula that you put inside. You know what's so funny is I literally was gonna get another sleeping mask. How do you open this? Now I don't need to. Oh let me just try that. Yeah. And then a little spatula. Oh my god. Laneige new lip product. Is this the spatula? Yeah. It's right in the lip. Oh my god. It's like so buttery. Yeah. Good. I needed this literally right now because my lips are so dry. Oh my god. Yes. I've opened my card. Oh my god. Sushi. Amazing. So cute. Thank you. Oh my god. But like there's Sam's car. There's mine. There's nothing else. Yeah there's. I think there's a house. There's really nothing there. Hey we're vlogging. Oh we made our drinks. Oh my god. I just slit. We made our drinks. I have my ginormous espresso martini. Hi vlog. And we're Instagram live-ing. It's now 12, what time is it? Like 12 30 at least maybe later. We were planning on going on Instagram live for like an hour. We ended up being on there for almost four. Like we just kept it going. It was everybody was just hanging out with us all night. It was a good time. We got these balloons blown up.  I had my little photo shoot.  They came we got the best picture in the robe. We shot the camera right now or the set of our phones and we could put the timer on. I just don't know where we would. I guess we could put it up there. Yeah we should do that. We should for the channel. Real quick. Well because we have our makeup done all night you know. We literally like I got ready. I did full face of makeup. Literally just for the one picture. I wanted to do my pictures with the 30 but as you know yeah. So hopefully my brother I asked him if he would pick up a three tomorrow on his way up here. But yeah I finished. I had where'd my martini glass go?   Oh no just hiccups. Hold your breath. Hold your breath and count backwards from 100. Oh no. Did that scare you? Okay but now we are in our bathing suits and our robes. We're gonna hit up the hot tub finally. I'm very excited. I love how we have done like nothing really all night but it's been so fun. Oh it's chilly. This is like perfect. This is literally yeah this is perfect. Yeah this is like end of the night. Like everyone's just like we're having our coffee and we're about to make some mimosas. Look at us in our robes. Yeah we went oh yeah I've recorded that. We went in the hot tub last night for a bit. We look like a couple on a spot. I love it though. This is the exact same IKEA robe that I have at home. This is a great basic robe. Yeah yeah it covers everything because it's like a nice towel-y material so put it on right after you shower. You know sometimes you go to a hotel at least for me.  It's a good size. Full coverage. Yeah 10 out of 10. I love it and I feel like I'm at home. Yep love we're just chilling and then we're gonna go out to the store get some food to make later. We need to kind of straighten up a little bit. We need to get better tape for our balls. That's what's left. Yeah that's what's left of the balloons. I know I definitely want to put the whole thing. It should be up whenever it's possible. Oh yeah and then I blew this up too last night so this has to gotta put that somewhere. Yeah it's a very nice peaceful morning. Beautiful sunny day.  It's Sunday. Like Sunday evening now at this point. Honestly I don't even know what footage I got yesterday. I know I didn't really pull the camera out very much. I think most of the footage I got was just on my phone and like on my Instagram story. I can't wait to get back down south because of my allergies. Oh my god but it was a really really fun weekend. It's still not over. I still have one more night here so I'm gonna try to make the most of it and enjoy it and just have like a nice peaceful night to myself. When I got here on Friday I was like it's a little creepy. It's like in the middle of nowhere but it's just so peaceful and I'm honestly looking forward to just having the alone time and it being like completely quiet because since I've gotten up here I haven't been completely alone at all the entire time. I'll put a link to this Airbnb in the description. The girl that owns this place actually has a few different Airbnb's in the area. Each house is just so cute and so unique and I love her style and they're all kind of like in the middle of the woods like super secluded so if you're just looking for a nice peaceful getaway highly recommend and she's been a really great host but yeah I cleaned up everything in the backyard put everything away out there and I just need to take down those balloons and then I sell a bunch of stuff in the kitchen and in my bedroom but for the most part it's pretty clean in here so I'm gonna watch The Time Traveler's Wife on HBO because a new episode came out today and then I'm gonna pack up all my stuff in the morning and head out of here and then I'm gonna go back to my parents house for a couple more days. My actual birthday is on Tuesday. My mom took the day off of work so we are going to spend the day together and then Wednesday I am driving down to Philly and I'm staying with my friend Kayla and then Thursday morning I'm gonna head back down to North Carolina. That's my plan for the rest of the week. I'm gonna enjoy my peaceful night and hopefully nothing creepy happens. Hello! It is Friday morning. I finally got back to my apartment in North Carolina yesterday. It was rough so Wednesday I drove down to Philly to spend a few hours with my friend and stay over at her place. I thought you know Philly is on my way so that'll cut out like two hours from my 10 hour drive back home. When I was leaving it said that my timing was gonna be good. There wasn't a lot of traffic. I thought everything was gonna be fine but there ended up being tens of traffic and then between having to stop for bathroom breaks and for gas and all of that it still ended up taking me 10 hours. So needless to say by the time I got back here yesterday I was just done. All I wanted to do was take a shower which I did. It felt amazing and lay on the couch to watch the Kardashians and then go to sleep so that's exactly what I did by nine o'clock. I was in bed asleep. It feels really good though to be back. The weather feels so nice. It is so warm. Anyway I'm gonna wrap up this vlog here. Thank you guys so much for watching. Thank you so much for all of the birthday love that I received on Instagram and to all of my friends who came and hung out with me last week. I love you guys so much. I had so much fun but I am really excited to get back to real life and work and a normal routine so I will see you guys really soon in my next video. Bye!


2011 we are on the ground in Las Vegas. I'm John Furrier the founder of silk and angle comm I'm here with my co-hosts. I'm Dave Vellante of wikibon.org And this is our continuous coverage of VMworld live 2011 and we're here with David Flynn the CEO of fusion IO and His new employee or soon to be new employer rich bowburg CEO of IO turbine a recent you guys recently announced the acquisition of IO turbine so welcome gentlemen. Oh, thank you Thank you very much. David. Thanks for coming back to the queue. It's good to be here It was fun last time. Yeah, so whirlwind for you.  So tell us. What was it like last year for you? last year was a whirlwind it really was a An amazing journey to get this far and it's really just the beginning I mean, that's that's what it takes to get to the starting line You know is to get to where you're a public company And it was just amazing to do that with such a great team along the way Yeah, so the we've as you know tracking this business pretty closely There's a lot of confusion About flash. Oh, yeah It's the Wild West I like to say because it's such a new technology that people haven't really formulated in their mind Kind of a way to categorize or understand the different ways to use it It's like everybody uses disk drives, but that doesn't make them EMC and net app, right? So everybody uses flash that doesn't make them fusion. I know there are very big differences in business models in architectures, you know in In how you know how you use the flash from a technical perspective how you interact with customers all those things Yeah, and you guys are really a systems company, you know first I don't really people are starting to understand that they got you know our system is a distributed system It has componentry that's scattered throughout all of your servers It's like taking a storage array dicing it into a thousand pieces and putting it in your servers But you can't go back to the days of direct attached storage where you're managing each server as an island unto itself Which is why the real challenge isn't just creating the hardware that's capable of housing large quantities of data With very rapid access the challenge is how do you now run a distributed system where the data gets Diffused to the right server at the right right place the right time and that's really where the acquisition of ioturbine comes in And we're so pleased to have Rich Boeberg and Vikram join us because they had a similar vision on On how to manage in a virtualized environment the supply chain of data well and rich I we've seen the you know as a former spinning rust person right We saw the hierarchy in the 80s and the 90s start to get pretty granular We're seeing similar things with flash now right we've got server-class memory You know all the way down to devices that emulate this disk so the ioturbine acquisition was very interesting because I think it's recognition that The you know the fusion IO classic fusion approach isn't going to be all things to all people Right and and so ioturbine comes in rich I wonder if you could talk a little bit about ioturbine for those who don't know the company You know Take us back to the beginning what your vision was and you've obviously seen that through to an exit But give us a quick snapshot sure so ioturbine was recognizing the need for Flash in the virtualized environment It's a systems business in the non-virtualized environment a virtualized server is an order of magnitude more complex It's instantly Systems business on steroids our approach was to go after the the IO performance issue not the the CPU Hypervising or the memory hypervising but the IO performance Hypervising and we needed software to bring flash into that server and to address that that that basic bottleneck in the In the hypervisor world in the virtualized world so so we've got this hierarchy developing server class Flash yep, let's call it with VSL You're talking about eliminating the whole we view that as kind of a hypervisor for data It houses data from multiple origins virtualizes that the same way the VMware hypervisor hypervises the computational resources And memory resources and what's so cool if I can you know Talk up what they do sometimes it's harder to talk about what you do It's just really cool what they do is they actually have built the para virtualization Infrastructure to capture the IOs before they even go through the guest operating system and to tunnel them down into where they can get access Through the VSL into the flash and surf so what this means is you can actually serve Ios in a way that bypasses not just most of the the the ESX hypervisor IO stack But also most of the guests actually captures them above even the file system So it creates that that para virtualized tunnel for the IO down in so you guys love and running overhead Noticing that we are all about high potency flash How do you get flash to render the most benefit because it costs on a per-unit capacity so what you want to do is Accentuate what it can do and and this the results have been phenomenal with our you know beta sites What we've seen is between three and six times the workload per server now That can be used to put three to six times as many virtual machines on that server Or in some ways even better is to get more workload on each individual machine So now instead of sitting there idle most of the time your Microsoft SQL server your exchange can get get more throughput Right so no matter how you boil it down when you can do six times as much workload on the server It's cutting to one-sixth the effective cost of the entire equation So let's break down that hierarchy and we've put this out on wiki bond I don't know if you agree or disagree with it But at the at the at the lowest level I talked about disk emulation SSD like a stack drive and an emc device That's kind of for legacy applications That's right Right and and then then we're seeing this sort of flash cash You see that in hardware and software and different different combinations and and that's really we're more where IO turbine fits Yeah, if you think about it We're trying to treat flash more like memory than like storage than like a disk drive And you wouldn't put your DRAM on the other side of a storage network You would want your DRAM right next to your applications. So that's where the flash can really be used It's two orders of magnitude faster than spinning disk And so just the latency going across a storage network would slow it down So you really want it right next to the application and what we do is cash the IO Accesses really the dynamic aspect of the storage next to the applications. We leave the the Primary storage the big storage systems as the repository for the static image of the data But if you really want to solve the performance issue you want to move that closer Yeah, and cost wise you're not going to compete with you know sad a bit buckets. No, it's not for capacity This is not for data at rest. This is for data. That's in motion But but then you've got this all-flash block based storage that's targeting like you know the classic You know Symmetrics and IBM DS Well, you know people have always used RAM Quite effectively to speed up those storage arrays to be so flash really doesn't stand to have as great of an impact on The storage array itself because people already use battery-backed RAM for the for the cash What really the you know the bulk majority of the RAM market though has been in the server All right memory used in the server is is always more valuable than on the far end of an hour It has to do with just the the shipping costs You know you don't want to you don't want to have to send a ship to China every time you need a new piece of material for your for for your Assembly line, okay, and then at the highest level then you got the fusion IO And of course you take us but in bringing via salad now you're eliminating disk protocol overhead That's right We don't have to go through microcontrollers that emulate disk IO and the higher you go up that hierarchy the more expensive It is but so you're talking about getting value out of those applications, right? So that is that a reasonable way to look at the landscape out there Yeah, you're playing in now a big swath of that with and it also ties into our Our ability to support enterprise customers with a direct sales and support team It's kind of ironic that My customer support team spends more of their time fixing the other stuff that breaks when you push servers to do This kind of workload. I mean it's it's amazing that you can get Six times the amount of usable work from a server it speaks to the fact that they're sitting there starved for data Most of the time, but they're not used to running at 100% utilization David talk about your Competition and then your your customer base. I know your public companies You really can't go into too much detail on the customer base But since you've been so successful you retracting competition across the board obviously direct competition and indirect competition Talk about that and then talk about your customer base and how that's changing and evolving as you're growing Let's take both those questions first competition We compete on four different spheres because we're a systems company, but this is a new market So we're vertically integrated because the pieces up and down the stack didn't exist before So we started with building a hardware platform attaching NAND flash like a memory Which to do that required building software to teach the OS how to use it. That's VSL Those form the kind of the foundation like the hypervisor for the data piece but at the same time we were building the The sales and support and the ability to sell solutions directly to end users in creating this new value chain establishing new partners with the OEM server vendors with the OS Application vendors where all of this has to be embedded inside of the OS And so we view these as kind of four concentric circles the hardware itself where we excel But it's actually kind of the least interesting It's the software stack within the OS to virtualize flash as a memory and then it's the systems level software that runs the distributed system That's where IO turbine fits in direct cash fits in IO sphere that manages the distribution and flow of data but probably more important than all of that is the Sales and go-to-market and business model of not being a component vendor and not being subject to somebody else's route to market because the The the realization was that existing systems vendors are kind of compromised The value proposition that they're used to selling has a different formulation and this is in conflict to it And so we said this is an opportunity for us to take a value proposition Right to the folks who benefit from it most and not be conflicted by the fact that you know storage guys want to still Spend or want people to spend a lot for premium storage Server vendors want to sell a lot of servers So it's you know, it's kind of how do you how do you do that? You have to get in there and make the case yourself with the end users now two customers obviously Facebook and Apple or 10% customers you know Big cloud players. Do you see those guys as as outliers or is that sort of the future of the data center? So our customer base is a full spectrum Very few companies rise to the consumption potential of Facebook and Apple that's why they stand out but in reality it's a spectrum kind of a pyramid You know, there are deals in this case that are in the in the many tens of millions of dollars There are deals in the millions of dollars there are deals in the hundreds of thousands of dollars, you know And at the bottom end of the spectrum, you know, we have customers who? Would have had to been facing deploying an expensive storage array and drop in a card for a mere ten thousand twenty thousand dollars and No longer need to go to an expensive high-performance storage array to support their infrastructure So the spectrum is huge those two are simply the the tips of the iceberg that poke up, you know from from the foundation but we have over 1500 customers to date and that's squarely in enterprise business largely around database But also unstructured text and basically anything that needs big data with virtualization now supported We can even address those applications that aren't inherently data intensive but become such when you bundle them together and This allows you to remove that bottleneck so you can consider Continue to consolidate that makes it not just a performance play But also a cost effectiveness and consolidation play. Yes, you've got a big tan But do you see those those outliers those huge companies as Indicators of the future or do you see? Oh, you bet. I Mean those guys are the ones that are looking at how do they run their infrastructure in the most efficient way possible? They're the ones that stand the most to gain from understanding these things and it's it's it's fun working with them because Because they are out there and you know with the with the economy the way it is recently It has let more companies to go and look is there a better way to do it? Is there a more cost of way effective way to do it in good times the adage? You know, nobody gets fired for buying IBM that holds true in bad times when budgets are tight You might have to lay somebody else if you want to continue spending about the same That's about innovation. You mentioned innovation about the product in the business model It's very Apple-esque and when Steve Jobs announces resignation Steve Wozniak went on Pierce Morgan and Talked a little bit about it, but he couldn't stop talking about fusion IO and you so how do you feel about that? I mean Steve Jobs Apple legend and the was praising you guys big time so Talk a comment on that. Sure. So first Steve Wozniak is an engineer's engineer He that's the highest calling in life and he is an amazing individual when it came to our engagement with Apple He stayed out of it. He didn't want to be involved, you know Because of optics and you know how it might look and so forth. So he really didn't have anything directly to do with it But you know he came and fell in love with fusion IO the two questions He asked when we first sat down a you know series of coincidences led us to having lunch and And he said okay two things I've loved solid state moving electrons makes a lot more sense than moving atoms And so I've always paid premiums to buy you know the newest and greatest solid state stuff so why is solid state going mainstream now and What is it that makes you different and the answer was Solid state is going mainstream now because NAND flash has the ability to have a hundred times the capacity density as Ram because it doesn't give off power and it's natively higher density So the only reason we're here is because NAND flash makes a better memory Making a faster disk you could do that with RAM all the time right? It's the fact that it's a higher density memory a good enough memory that actually Has some advantages in being non-volatile that was the answer number one is NAND flash Displaced RAM has much higher density today because of consumer electronics Apple driving the volume of the flash right so then the The second thing was why are you different and we we told him that we looked at it from first principles and said if storage as we knew It today if the data supply Methodologies that are used today didn't exist How would you employ flash and we came to the conclusion that it's two primary things you would attach it? Like a memory and not go through the emulation of disk drives using microcontrollers and number two That would lead to the need to run a distributed supply chain of data This is like Walmart Walmart Runs a supply chain that's very efficient because they have local distribution hubs their distribution Efficiency is what makes them as a company This is all about distribution of data within the data center and you're not going to do it from shipping everything from the same Central location every single time and so that that inversion principle is what really led us to think This is going to be a sea change and the amount of technologies are going to be developed to manage a distributed supply chain We're going to be immense Awesome David Flynn rich Bober great story great story. Thanks for coming on the cube again David Flynn The super techie turned CEO love that we love that that path and rich Bober old friend You know glad to see everything worked out great for you guys Congratulations on the IPO way to go in the first quarter. You know now just do it a hundred times more in a row and Thank you