>>: Okay. Good afternoon. Welcome to the second session on education. We're very happy to have four presentations here. The same format as in the morning. The presentation is 20 minutes and then we'll leave five minutes for questions. So I'll be showing the presenters some [inaudible], so this is how they know. And if you have any questions, please leave it to the last part. The first presentation is on proposing a curriculum course for cloud computing from a software engineering perspective, and we're very happy to have both professor Werner Kurschl and professor Johann Heinzelreiter Upper Austria University of Applied Sciences. They will be presenting their work. Both are professors in the software engineering department. They both are involved heavily in teaching and research, obviously software programming, architecture and other things. They also do research at Smart Research, name of the group, and most important, they bring us very interesting experience of something they already are dealing with, and this is probably most -- a lot of you will be interested in. Kurschl Werner: Thank you very much. Thank you for introduction. Ladies and gentlemen, our talk is about software engineering fundamentals, and the last couple of days we have heard a lot about cloud computing, we should put into the cloud our application, but the big question is what should we teach our opportunities to build these applications. And I disagree a little bit with David Patterson that we should use [inaudible] to build applications for the cloud. So let's look in our talk -- oh, sorry, it's the wrong way. So, first of all, we would like to dig a little bit into the news, what is cloud computing, and then we would like to look at our software engineering curriculum. So we talk here about software engineering to build efficient applications and systems and not about the computer science stuff and number crunching stuff. So we try to think here and talk about building applications. And then we would like to identify certain points in the curriculum which are missing and which would be enhanced with certain additional parts. Then Johann would like to take over or will take over and show a course proposal, and then -- we have very short time here -- we'll show very few slides of a big slide deck with about 150 slides which will be provided at the end of the month at Faculty Connect. So if we go into the news, we see that 69 percent of Americans are using some cloud services. I'm not sure if they know that they are using cloud services, if they're using Microsoft Live or Google Docs and all that stuff that's hanging around in the web. Second, if Microsoft is taking 500 million to build a new data center in Dublin and is running this data center with quite [inaudible] stuff, they must have good tools and concept to run this very efficiently, because such data center will have 100,000 servers in the background, and we can use this very efficiently, easily. And last, but not least, there was a good book around from Nicholas Carr. He has written a book about software, that's IT matter, and now has a new book, The Big Switch, where he compares cloud computing with the introduction of centralized power supply, electricity. And he has a good figure and showed us that the private electricity supply decreased quite heavily, 1910 to 1930, and the centralized electricity supply increased dramatically. And perhaps we will see the same behavior with cloud applications. And now we're at the point that we perhaps should consider cloud computing in teaching students this. But I've also observed a very interesting thing with cloud computing, because a lot of people talk about cloud computing, and I'm not sure if everybody knows what cloud computing is really -- really is. And it remembers me a little bit about mobile computing. In the past I've done a lot of research in mobile computing, and if you build an application for a mobile system, a mobile phone, that's mobile computing. If you build an application, an navigational system for your car, it's mobile computing because your car is mobile. And if you build an application for your laptop, it's also mobile computing because a laptop is mobile. So it's always good to have some term which is widely known, but at the university you should be more precise with these terms. And if we should consider cloud computing at the university, then we should dig deeper at the concepts and the technologies, hang around. We think cloud computing is really cool, but there's also hype around that, and we should consider cloud computing in software engineering. But on the one side we have the concepts, to work on the concepts should know. Usually concepts are used in technologies, but you can work with technologies without understanding any concepts on a technology platform. For example, you can use Windows Azure without understanding the concepts behind the scene. And if you want to be a software, you should build such application with both in hand, concept and technologies, so that you can build efficient applications. So if you buy a car -- I look at cars which are very efficient, and if you are able to build efficient application, it's good for your pocket, not for the oil company. So if you buy a bigger car, you're lose more and more money from driving around. So if you build an efficient car, you save a lot of money. The same holds through for cloud computing applications. And that's why we dig deeper into this stuff. And we've taken our curriculum, bachelor and master curriculum about software engineering. And what you can see here is we have strong focus and firsthand on algorithms so that students are able to build and know algorithm where they can have and can build very efficient algorithms or applications in terms of runtime and in terms of memory consumption. Secondly, if you want to be a software engineer, you should be able to build such system, and you need languages, Cplusplus, java, Csharp, and so on. And then in the next couple of semesters we go deeper into architectural issues so they can build big, complex applications with a specific architecture, for example, for the web, but also for distributed systems and so on. It's very important to cover all these issues, and sometimes our curriculum is called something like a programming school, a sweat shop, because if you want to be an engineer, you must know how the world is built up to work with your environment, and you need concepts, but you also have to know all these technologies and to be able to build a car which drives fast. Okay. Perhaps we take now the next point. Johann Heinzelreiter: Okay. This January there was an article by [inaudible] in the Communications of the SCM that was titled "What Should We Teach Software Engineers Or What Should We Teach New Software Developers and Why." He claimed that there is a gap between computer science education and the needs of the industry. He also claims that there are complaints in the industry that it is difficult to find graduate students that can build complex software systems, that can architect the systems. On the other hand, software industry is quite conservative in adopting new technologies, new practices. He concludes that teaching programming cannot be reduced to some external projects or some internships. We think that cloud computing is a major development in the software industry, and we have to consider it in teaching. On this slide I have summarized some topics that are relevant to cloud computing, that are relevant to our course. Some of these topics may already be covered, some of these topics may have to be enhanced, some may be totally missing. In the field of operating systems, we think that students should, at least at the course level, understand how operating systems work where the underlying hardware consists of thousands of computers. Cloud computing platforms use database concepts that are not relational or are not only relational but they use concepts where -- they use concept that guarantee scalability. We have to teach our students how we have to design data models that take -- used to take advantage of these new possibilities. In service and app engineering we have to teach how we can build stateless applications. We have to lay more stress on alternative messaging exchange patterns. For example, message inaudible middleware. In distributed and parallel systems, we teach technologies like open MP or MPI. We think that for the cloud, alternative approaches for course [inaudible] parallelism are becoming more and more important. For example, map reduce. Of course, our students should know the basic concepts of cloud computing. They should be able to develop software for the popular cloud computing platforms. And, finally, economics. I think there had been never a technology where the architecture of the software systems had more impact on the resulting costs. Therefore, it's important that our students that develop this understand the pricing models because these pricing models are also the basis for choosing a certain platform in different application scenarios. Based on this analysis, we have -- we are currently developing a course, and on the slide you can see the outline of this course. In the introduction, we want to show that cloud computing has already arrived and is not a concept, is not the technology of the far future, and it's also relevant to line of business applications already. Then we look back to history and show that big changes in hardware architecture also influenced software architecture. Then we handle the key terms and key software technology that form the basis of every cloud application. We also think that technologies -- that techniques that were used to build classical applications, classical multi-tier applications, can also be applied to applications for the cloud, and therefore we also deal very thoroughly with this topic. In the next part, we introduce concrete cloud computing platforms, namely, Google App Engine and the Microsoft Windows Azure platform. We show the architecture of the underlying hardware. We also show how the programming models work that these platforms provide. Finally, we are developing some sample applications that should show on the one hand side how the programming models of the cloud computing platforms can be used on code level, and on the other side we want to show how more complex applications should be designed to get a good architecture of the whole software system. And from these examples we want to derive some best practices, some architectural guidelines that can be the basis of cloud computing applications. So at this point I plan to show some slides from our slide deck, but the time is very limited. I want to go through these slides rather quickly. First, we think that it's important that students understand the difference between classical client server architecture and modern multi-tier architecture. The big advantage of the multi-tier architecture is that scalability is improved, of course. To take advantage of this programming, of this middle-tier architecture, the stateless programming model have to be applied. On these two slides we show this concept. If scalability is of concern, of course, also [inaudible] message processing is very important because this partner is used by cloud computing platforms to exchange messages between services. In the last part of our talk, Werner will show how these foundations may be played or is some of these foundations may be applied to concrete cloud computing platforms. Kurschl Werner: As we mentioned earlier, it's important to have an ontology so that you can name certain parts of your architecture and your infrastructure. For example, we've taken the paper that was [inaudible] and we get a good feeling about the names. And as you can see here, we have a layering scheme here with the hardware, the software, and so on. And, for example, I've taken one slide out of the deck and show you, for example, if you're working on this level in the cloud software environment here, we can say this is the platform as a service. What does a platform of a service usually deliver or provide? It provides a programming level infrastructure or environment to you, and Windows Azure is such a platform. Google App Engine is on the same level. We've seen with talks with customers that they don't understand on which level they should work with their applications. And with this ontology we can say, okay, if you go to Amazon, a go a little bit deeper down, but if you work with Google App Engine, you have a programming-level environment, you take, for example, Csharp and work with this language and deliver your application. We also have -- one slide here is we go deeper into the platforms and we have taken Google App Engine and we have taken Windows Azure and compare both technologies, and as Johann mentioned earlier, most of the cloud infrastructures have a stateless service API, the left side, and those are stateless API where you can put data, perhaps persistent, into your data store, blobstore and on. And if you look in the Google App Engine, you can develop applications either in Python or in java, but you have to work with your web application. I would like to jump over this, and we have developed a playground application which we have implemented on the Google App Engine and the Windows Azure to compare both infrastructures, and we've used a web user interface. We're using important services like a database, a blobstore, a task queue, and a cache. Then we are using a tiered architecture, and you can play with this application examine show some timing and performance information. For example, you can issue a command to put one object into the database. Then you can put -- for example, you can issue a command to put hundreds or thousands objects in the database. If you put more than thousands or 100,000 objects in the database, you hit a wall, because there's a limit. You cannot issue a command which takes more than 30 seconds. Then you have to move this command into a worker role on Windows Azure or you have to put this into a task which runs in the background and can last quite long. So you have to -- you can play around with that and observe the behavior of your cloud application, so you get a feeling of the behavior. So let's go to sort of summary, sort summary. What you have seen is that to build a cloud application, it's important to have algorithms in the background to be able to implement an efficient application because, at least as you mentioned, you pay for the data to compute power, you pay for the storage, so your application should be quite efficient. Otherwise, you have to pay a lot for your resource consumption. On the other hand, you have one problem. Which platform should you choose to build your application. And there's also some hype around about cloud computing now, and we have seen ten years ago the dot com bubble, and ten years ago everyone tries to push technology. At the end, we had a big problem. And I always use in all my projects, on the firsthand, business case. You need a business case, and then you can choose your platform. Perhaps one platform is Windows Azure if you want to work, for example, on the programming level. If you have to go deeper down, you have to choose, for example, Amazon with [inaudible] machines and so on. But you have to consider your business case before you start working for a cloud application. And the last slide here is, as we have mentioned earlier, we will provide a big slide deck at the end of this month at the faculty contention which can be used for free. We will put months later all the application stuff, java applications, Csharp applications and one big application which deals with architectural issues of Windows Azure. Next we would like to organize a workshop, I guess it will be a one-day workshop with lectures and hands-on so that you can work with this, and we're seeking cooperation with universities and enterprises to work on this more and to broaden the scope, and perhaps we will go deeper into platforms and compare platforms on different levels, because Google App Engine and Windows Azure is on the same level, and it's easier to compare on the same level. Okay. [applause] >>: A couple of questions, please. >>: So this is the first year that you're organizing the course or -- did you already get any feedback from -Kurschl Werner: It's the first year. So we have prepared all the stuff right now, but now we are going production mode. Johann Heinzelreiter: So it's only a starting point, and we, of course, have to tune this course in the following years. >>: Just to get an idea, how many students are you working with on this? How many or -Kurschl Werner: The thing is we would like to organize, for example, a workshop with certain students or enterprises work together with us. We can so them the concepts of cloud computing and they also can work on the code level to work, for example, with Windows Azure, how to build an application and how easy that is. Johann Heinzelreiter: In the future we also plan to incorporate this course in our curriculum, of course. Kurschl Werner: Perhaps at master level. It depends. We have a lot of programming stuff in the curriculum. So, for example, in the web engineering, students know a lot of building applications for web technologies. We also have service engineers stuff on the master level and all this distributed stuff, but perhaps we have to split off all that material and to put it into certain lectures to add certain stuff. Johann Heinzelreiter: And at first we have to convince our colleagues that cloud computing is a major development. Kurschl Werner: We like cloud computing, but there are others that think, okay, why should we care about it? >>: Last question? Thank you very much. [applause] >>: We are grateful for you contributing your curriculum to share with faculty around the world. For those who are not familiar, Faculty Connection is microsoft.com/faculty where you will find this curriculum soon, hopefully, and many other curriculum material. And this is actually a good introduction to the next talk, which is on operating system research extended into the cloud. This talk is also by two people -- by Alexander Schmidt from University of Potsdam professor Andreas Polze, who already presented in the morning. Now we have a second part or related talk which will take a more specific way of doing the research in the cloud, and Alexander Schmidt, who will be presenting this talk and who is a Ph.D. student at the Hasso-Plattner-Institute for Software Engineering group, and he is finishing his Ph.D., and he has been an intern at Microsoft actually for two summers, and he was -- had access to windows source code as part of the Windows academic program but also as an intern, and he contributed to several projects which also are available through Faculty Connection, microsoft.com/faculty. If you need more information, let us know. But I'll just leave Alexander to present his talk. Alexander Schmidt: Thank you for the introduction. Yeah, we'll come to my slide. Basically the title is Extending Operating System Research Into the Cloud. It's quite an ambitious title. I think I'm not going to satisfy this. What the talk actually will be about is more or less about extending operating systems education and teaching into the cloud, and we named this project the Skylab Project, and I will further motivate why we chose this title. So basically you saw this slide already if you participated in the morning session. So just to highlight, this is me. I am Alexander Schmidt. I'm working, actually, in the operating systems and middleware group at the HPI in Potsdam, and this talk is structured -- basically it has three main parts. First I would like to give you a short introduction of how we teach operating system courses at the HPI. Therefore, I'm going to present you what the Microsoft Windows Internal Curriculum Resource Kit is. Then I will shortly mention the Windows research kernel, and I'm going to present shortly some programming projects. Afterwards, I would like to present the Skylab Project, which is part of the proposal for the cloud futures workshop here, and then email going to conclude my talk, basically. The Windows Operating System Internal Curriculum Resource Kit, or short, CRK, is basically available for download at the Faculty Connection website, and it is -- I'm not sure if the rating is still valid, but has very good high rating. People downloaded it frequently. And what it basically is, it is a complete slide deck for teaching operating systems covering -- structured after the IEEE ACM computer science body of knowledge for operating systems and covers basically all the concepts for operating systems, but in the context of Windows. And it started out with [inaudible] actually as the UNIX operating systems course and then when more details got into it, and finally it ended up in this slide deck that was created in collaboration with Bob Rasoniovich [phonetic] and David Solomon. So basically this is just a rough outline of the contents. So basically for operating systems, you have everything in that's necessary so you're dealing with concurrency, scaling, memories management, and so on. There are some elective sections as well, as well as complimentary, and here is one short example of the second unit there. So how is the Windows operating system structured, what are core Windows system mechanisms, basically what is the Windows API and so on. Yeah. So this was released I think in early 2000, yeah, at the beginning of the century, so to say. And then we used it at HPI for teaching ever since, but in 2006 there was the Windows research kernel released. This is basically a stripped-down version of the Windows Server 2003 source code that allows faculty to use it for teaching to build the Windows operating system, modify the code, talk about the code and give some recommendations on design decisions and so on. It does not have all the components that make Windows Server 2003, but for operating systems courses I think are the most important ones. So what's missing basically are drivers, some GUI, as well as some sort libraries, so they're only in binary form provided. The interesting thing is the pretty simple license which makes it easy for academia to adapt the kernel into their curriculum. Now, the problem is with the WRK when it was released, the idea was, hey, let's use the WRK to kind of compliment the CRK for all teaching. And this is how we got to it. Basically we developed some programming projects because the problem with the Windows Research Kernel basically that it's still a product, still a software product that has a high complexity, lots of source code. And if you just give it to your students and they will just -- you know, they will just look at it and say, whoa, it's too much C code, and basically leave -- throw it away and don't have a look at it. So you need to kind of structure it. And these are some projects we did. So we start out with letting the instrument, the source code, print out some certain instrumentation to get a feeling how the Windows kernel boots up, for example, then we show them how to extend the Windows API by adding a new system call. In this case we asked them to do a simple system call that hides the process from the system by modifying some management data structure. And, finally, we asked them to implement a new synchronization primitive. You see this kind of alliance with the CRK. And the most interesting project from my point of view basically is to -- is a memory management project. So we asked our students to exchange the page replacement strategy for a certain process. Now, I don't know if all of you are familiar with page replacement, but basically what it is is each process in the operating system has a working set which is the sum of all the memory pages that are really in memory and not paged out onto the disc, and when this working set is full and you access a new page, you have to replace one page of the working set. And there are several algorithms for identifying the ideal candidate for eviction, and this is basically what we wanted to have our students to do. It turned out that if you'll just give them the whole source code of the memory management module, if you will, it was way to complex to achieve this task in, let's say, about two weeks. So what we basically did was provide an additional layer of abstraction on top of it, so then it was easier for students to kind of interact with the underlying memory management implementations and modify it in their own way. Now, we had several experiences and observations based on our usage of the WRK. First of all -- and this is what David Pearson [phonetic] already mentioned, virtualization is really a great technology for teaching, especially when it comes to operating systems, because it's much more easier to provide students with a virtual machine image. They just execute it. It makes -- especially for operating systems, it makes it a lot easier to debug an operating system instance instead of using really two physical machines, and for us it was also pretty easy to distribute those exercises which came in the form of a preconfigured virtual machine image. Students just have to download it and then basically it connects you to the exercise. However, with the WRK there is a steep learning curve in it. As I mentioned, it's a product, a software product, basically, so the code is pretty complex. But also the configuration overhead at the beginning is pretty high. So students need to learn how to configure their virtual machines, what it means to debug a concern, and so on, which they're not really used to, but I think it pretty beneficial for them to have seen how those things work. And the most interesting thing that we learned was that student nowadays tend to do most of the homework basically on their laptops. Although we provide faculty hardware, they just want to execute all those virtual machines we provide on their own laptops, which required us, on the other hand, to provide several images, you know, not just VHDs, which run on Microsoft virtualization technologies, but also on other sorts of virtual machine images which, again, brought some burden on us again to provide a variety of virtual machines. This brought us to the idea of the Skylab Project. And why Skylab? Well, probably every one of you has heard of the original Skylab. This was the first space station of the United States that was in space in the late '70s. And basically what I like about the name of this project here is that Skylab was standing for the ability to remotely execute some experiments in an environment that would have otherwise not been possible. Interestingly, there was a program already in the late '70s called Skylab classroom in space where students could submit experiment descriptions that were then remotely executed in space. So we kind of commemorate the Skylab idea with our project, and the idea is basically we already have the set of virtual machines where all those exercises are in already. Why not -- let's -- why not virtualize all our laboratories and execute it in a cloud? I mean, if student don't want to use the faculty-provided hardware, why do we have it anyway? So basically the idea is to migrate all those virtual machine images into the included and run those exercises on the internet. This would relieve us as faculty from the duty of providing, you know, virtual machine images. We could just provide a stand-out virtual machine image and students can then easily access it through a web browser by a remote desktop session, basically, or by whatever remote station you are going to choose and execute it just in the web browser, and this might also enable students to use their, you know, netbooks that do not have a high compute power to you run virtualization technology on top of it. So before I'm going to show the architecture of Skylab, I would like shortly to introduce the concept of it. We differentiate here between different roles, so there's basically faculty that kind of administrates a lab on the cloud, we have tutors that kind of supervise students and function as an intermediate layer between students and faculty, and, finally, we have students who have to fulfill an experiment in the cloud. Then we have a laboratory which is basically just a [inaudible] thing basically where a faculty member can log in into Skylab and associate a number of work spaces, which means a certain set of work spaces where student can actually do their experiments. And basically an experiment is an instance of a virtual machine template that is assigned to a laboratory for a certain period of time. And this kind of reflects the way we do it at the HPI that you have only a certain timeframe where you have to fulfill your programming task, and if you don't do it, well, then you get a bad grading and then there is the next programming assignment. Basically the structure is pretty simple. So we have the Skylab management or the idea of architectures as follows. We have a Skylab manager that provides basically a web front end to the user, we have a database which we call the WRK repository, and it contains a set of virtual machine images. Basically it's a read-only repository. That's why it looks different in here. We have some persistent storage that's necessary to kind of track other things students do in their experiments, and then there is a number of virtualized laboratories, each of which is assigned to a certain faculty member. This is necessary because it must be managed somehow, and so for us it's necessary who's responsible for the laboratory. Now, the workload is pretty easy. At the beginning some faculty member is identified as being eligible to use WRK material. I mean, the license for the WRK is pretty simple, but it requires us to make sure that actually faculty is using the WRK materials. So there is a verification process at the beginning, and then you can allocate a laboratory basically on the cloud and specify the number of work spaces you are anticipating to use during the experiment -- during the course. Afterwards, when you actually want to run some sort of exercise, faculty comes and assigns basically a certain experiment to those work spaces. Until now there is no use of any virtual machine of any compute -- no resource in the cloud is used so far. Now, if students come in to play and they log on onto the system and they kind of select the experiment they are going to do, what happens then is basically that all those work spaces get associated with some virtual machines where they then actually can execute the experiment. Once this is done, there is -- there will be established a remote desktop session. It's not clear what kind of protocol it's actually going to be, but through this remote desktop protocol, students basically interview with their work spaces, so to say. Now, when they are working, what's going to happen is they need to update or modify some source code or they need to run some experiments, and during that test they create or they modify something and all those updates cannot be stored in the repository because this is read-only and just a template, so we need to store those updates in a database which, on the other hand, tutors can use basically to track the results. So if there is some experiment which has been executed, for example, we provide a test program that runs through and creates a log file. This end up in the database and can be pulled by faculty and then checked for grading, basically. Now, this is just the idea we have in mind about the Skylab Project. The requirements for us we impose on any cloud platform are the following. So we are not quite sure on which platform it might be best to implement this project. First of all, we need to run arbitrary virtual machine images. Of course, we provide those images, and they must be instantiated. This kind of limits already the number of possible vendors who can provide this. The next thing is that we need some remote desktop session capability. There is, of course, if you have Windows instances and the remote desktop protocol, but also VNC. However, the design of the WRK makes it necessary that you have some visual interface to it already during the boot phase, which means that the virtualization technology underneath must kind of provide a visual interface to the boot process. Also, what's important for debugging virtual machines is that you need to kind of link probably two virtual machines together to be able to run a debug in one virtual machine while debugging the second, and this is -- I think this is probably the most tricky point. So we need to figure out how to achieve this in a cloud. And the last thing is there must be a possibility to have some sort of difference in virtual images, meaning that whenever you write something to a virtual disc, you must kind of redirect this control to the persistent storage. Before I think thank you for your attention, I would like to conclude first. What I wanted to say is -- oh, I have time. Okay. Okay. That's good. So I can relax a bit. So basically the conclusions of this talk are, first, that the WRK is really a great tool for teaching operating systems. I mean, it's challenging. It's not as easy probably as using an instructional operating system with limited complexity, but student really appreciate the ability to look at how things really work, although it's probably more challenging than writing something in Ruby. The next thing is personal laptops are often used as an alternative to a faculty-provided computer science laboratories. Even though we provide rooms where PCs are in and students can go there, we install all the necessary components, but students just don't like it. They prefer doing all their experiments on laptop. So if this trend continues, maybe it's not -- the universities might think of getting rid of those labs and kind of provide an incentive for students to buy some laptops, and then basically you have those virtual laboratories. The next thing is I presented the idea of Skylab, which is basically a virtual computer science laboratory in the sky on a cloud implementation and for operating system projects. We created already a set of experiments that exist in virtual machine images, and the idea is to execute those through a web interface on a virtual machine that's hosted in the cloud environment, and then you can basically run those experiments wherever you are on whatever platform you have. And, finally, the Skylab Project requires or has some challenging requirements for cloud vendors. I think our next slide -- I mean, I would say these are demanding requirements, basically. I don't know if you have the ability to kind of influence cloud vendors on what kind of futures they should integrate in their products. It would be great if this is possible. However, there are some open questions on how we can deal with it, but this is something we'll figure out in the near future. And with this, I would like to conclude my talk and thank you for your attention. [applause] Alexander Schmidt: And, of course, if you have any questions concern the WRK, please write me an email or we have already -- we have a blog over there, and it gives you basically kind of an idea what the WRK is, what kind of problems we face and how we overcome them. >>: Thank you. We have time for questions, please. >>: So the CRK is downloadable from the Microsoft websites? What about the WRK? Is that also a free download or -Alexander Schmidt: It is free downloadable, but there is an eligibility check before. So basically you have to a live ID, I think, and then you have to provide some kind of credentials or you have to talk to [inaudible] who gives you the DVD, basically. I think he will have more than one copy probably, and get it there. But basically it's all for free. >>: [inaudible] Alexander Schmidt: Yeah. That's the only one version online. I mean, there are already two versions. One is for instructors and one is for students. The DVD for instructors contains some sample projects and includes the solutions to those while the student version, of course, does not. >>: So is the reason we need verification because we don't know who is a faculty and who is a student? And second, is the source code for Windows available only for academic use, so we need somehow. And DVS is simplified, so if I know exactly that you're a faculty, I can give you a CD. More questions? Thank you again. [applause] >>: Our next talk is about consumer decision support for research procurement in infrastructure as a services markets. This talk is a little bit different as it's based on research, but it's also relevant because it's about decision making. And you saw already two presenters for how we make decisions, what platform to take, and I think we'll be able to learn from Kurt and his research of what the decisions are. So Dr. Kurt Vanmechelen is from Belgium, from the University of Antwerpen. He has just completed his Ph.D. he's doing post doc, and he brings us also some teaching experience. So please welcome Kurt for presentation. Kurt Vanmechelen: Hello, everyone. Welcome. So I'm going to talk about some difficulty decisions that come up when you start using these clouds on a large scale when this paradigm really kicks off. So it's certainly kicking off in terms of interest. So we all know there's increasing interest in this cloud idea. And there's also anecdotal evidence of increasing use. You heard about the [inaudible] experiment. You see the spikes here in estimated usage on EC2 there. So also looking at the comments from the guy from Amazon, they're really looking at fairly exponential growth in usage. So before I go any further, just a quick context sketch. So depending on your background in systems and the way you look at these things, some people see different things in terms of what cloud actually means. Now, there's been some taxonomies there in terms of infrastructure delivery as a service platform and software. You also mentioned those. Those a fairly widely accepted. So my talk will basically focus on infrastructure as a service. So these ideas aren't really applicable to the other two. We'll see soon why. Okay. So this idea stems from an idea that's been floating around for a very long time called IT as a utility, first formulated by John McCarthy in 1961 and then further popularized by people like Nicholas Carr, who was mentioned earlier on. So what I want to do here is basically move away from local infrastructure, then be able to procure infrastructure on demand from a cloud provider. So in terms of etymology, this word cloud stems from the way we draw network drawings, right? We depict a network with such a cloud, and then we extend this idea semantically to include not only the transmission lines that connect our systems but also the systems themselves that we want to address. Now, people talk about the cloud, but, of course, if you look at current systems and the way this market is evolving, we're looking at, well, multiple cloud providers there. So there's a real question about which one to use for certain tasks and which ones to avoid. Okay. So first we have a lot of provider differentiation there, Amazon being one of the first, but also other providers either being in this provisioning space or moving towards on-demand provisioning. Certainly GoGrid, flexiscale, 3tera, rackspace, those are real providers that you can use right now. So they're available. So it's not only Amazon that's really working in this space. Now, there are also drivers for, like, commoditization. That means standardization of these services which increases your options as a user to decide on which provider to use. Now, the drivers for this commoditization stem firmly from like fear of vendor-lock in from consumers. So they like the idea of turning capital expenditures into operational expenditures, but if there's lots of uncertainty what this operational expenditure is going to mean in the next couple of years, that's kind of an uncertainty people want to avoid. So they demand for standardization in that field. Also, they might want to migrate to different providers because their requirements outgrow the capabilities of certain providers. So there's lots of work on standardization right now in terms of image formats, interfaces for deploying virtual machines. This is no rocket science. There's only a couple of operations that you actually need to launch such an instance. And apart from that there's also some work on tooling for interoperability, so it was mentioned before. For example, well known frameworks like Condor, you can use those to kind of see mostly integrate extra resources from providers there. So there's lots of options, actually, for using resources from different providers. Now, there's lots of providers in the market, but there's also a lot of product differentiation going on. So if you look, for example, at the Amazon EC2 offering launched in 2006, we've had different instance types and services added like instance types with extra computing capacity, extra memory capacity, services for physical data transportation to these providers, right? And so these questions then pop up on how to efficiently use these new products that are entered. Apart from this, let's say, product differentiation, there's also a lot going on in terms of how these systems are priced. So the model that you're familiar with, the person from EC2 also mentioned this, is probably the on-demand instance with a certain fixed rate per used hour, but recently spot instances were introduced. I'm not going to repeat this. This was explained earlier on in the key note talk. Okay. So just to give you an idea of the complexity that users are faced with, so, you know, we have these different instance types, each with their different levels of performance expressed in ECU, which is a measure that Amazon uses to express compute performance. They have different number of virtual cores that you can use to run multi-threaded applications, different levels of RAM available, local storage, different platforms in terms of bits, fairly coarse-grained characterization of what kind of IO performance that you are going to get there, and of course, differentiation on price. Now, that's not the only complexity that users have to deal with. If you're actually going to benchmark these systems, you also see a lot of uncertainty on what you're actually going to get for your dollar. So, for example, this study by Dejun looked at the performance of different small instances in the EC2 cloud and observed a factor of 4 for a compute-heavy workload, so more than 4 times difference in actual response time recorded. Other work by Ostermann and Alexander Iosup also, you know, gave some insight into quite strange characteristics of some virtual machine instance types where instance times that should have good support for highly compute intensive applications actually lead to fairly low floating points multiplication performance compared just the normal standard instances. So as you can see, this is quite difficult for you just to deal with this problem, right? So how are they going to know what they get for their money? Now, apart from these product differences and performance differences there's also some drivers in the cloud computing space for not pricing resources uniformly. Right? So, first of all, we have locality dependence on data center costs. So certain data centers, depending on their location, they can have very different cost factors for real estate costs, power, bandwidth, taxation. For example, a recent study by Qureshi which was published in ACM SIGCOMM where you can see here the difference between electricity costs in Palo Alto and Richmond, so in dollars per megawatt hour, so this is, let's say, between 50 and minus $50, but it's really big percentages of the total cost. We're talking 20 percent here. So there are certain drivers towards not uniformly pricing cloud resources in different parts of the world or regions. There's also a very much temporal and locality dependence on the demand and supply that you get in such clouds. I also mentioned earlier on, for example, the typical business loads. There could be seasonal effects, special events that come up. So at certain times these providers might have to look at, you know, severely high or low price for that. The second-to-last point is the fact that providers in the space themselves want to differentiate in terms of cost. Some providers might want to offer cheap network access versus cheap storage or compute cycles. So that's a way of positioning yourself in the market. And we can expect that this will happen more and more. And the last point is that, well, compute resources are a non-storable commodity. So you can't really -- if they're not used, you can't really reclaim these resources. They're gone forever. And there's an inherent cost involved of resources not being utilized at a person point in time. This also encourages or is a driver towards non-uniform pricing of these resources over time. Now, Amazon has a number, so I'm not going to -- I'm going to skip the reserved instances here. Just so you know, you can sign in on a program where you say, okay, I want a one-year term for one instance and then you get a reduced cost per hour for that instance. So you can billed up a portfolio of reserved instances and then get reduced costs per hour. Second point here is that -- so starting from December, there's a spot market there. This is from cloud exchange which tracks these price levels, let's say, every hour. What you see here is the percentage cost of such a spot instance on average compared to the on-demand instance. So we're talking about 40 percent of total cost, so that's also significant there. The problem is, of course, that you have to bid for these resources, so you have to specify I'll pay $40 or $32 for one instance of this type. If the spot market price goes above your bid, your instance gets shut down. So these are the, let's say, the short-term variations in this price. You can see that's fairly volatile with changes up to 10 percent. So what we want to do with our research is to deliver decision support for two specific problems given the context that I just sketched out. So the first is the problem in terms of allocating these virtual machine instances given your demand, and the second one is valuing these allocations, so determining how much you're willing to pay for them. One word on scope before I go into the details. So we're not dealing here with decision support that should tell you whether you have to move to the cloud or not. This has a lot to do with data confidentiality, security, reliability, legal issues, the usual suspects. This also has -- so we're not looking at the lease or buy decision, so pure financially, looking at the problem of, okay, will I build my own data center or will I go to a cloud provider, which one of those is most cost effective. That's more into pure, let's say, economics. What we do want to look at is when someone decides to use these infrastructure resources into how he's going to do this cost efficiently. And we focus there on computational work loads, for the most part. So we're not talking about, let's say, web server loads but more about that model that Patterson and Ed also talked about, you know, computational science, running large-scale applications on these systems. Okay. So at a high level, we look at this problem from the point of view of an entire organization. So this doesn't mean that one -- this does not mean one user that's running an application but rather a lot of users in one organization are making use of these cloud provider resources. So we have multiple applications there, each with their workload characterization in terms of CPU requirements, storage, IO, and a directed acyclic graph describing the dependences between the different tasks, their data input, output, things like that. Then we have a set of quality of service requirements. For example, I want my workload to finish before the conference deadline, so I'm putting a hard deadline in here or I'm putting in a probabilistic deadline, so I want 95 percent chance of my workload finishing before this hour, things like that. And then we have an offering set of products from these different cloud providers. So these could be the difference instance types that you can allocate from different providers in that space. And so the problem that we want to look at is to devise an allocation over this product set that adheres to your QS requirements at minimum cost. Now, there's a lot to do here to solve this problem. First important part is to performance modeling, right? So we don't really -- a user in general doesn't really have an idea of how well his application will perform on a specific VM instance. We already saw the variability in performance in general but also some strange effects that occur, for example, for flow endpoint operation. So we have to analyze what the impact of certain virtual machine properties will be on individual workloads. And what's also difficult for users is to think about, okay, I can scale my application, we're scaling this out, so in terms of multiple parallel processes, what's the impact in terms of over it. So can I just keep on scaling this out? Do I need to keep my application on one multi core server? Can I go to multiple servers? What are the scaling limitations there? And this also includes, then, important info on benchmarking studies that have been conducted by other people just as the -- you know, some basic information there on the performance of these systems. Second important part is that we need to work on workload modeling. So we need to modeled performance of our workload on a certain instance but also get an idea of the workload itself. It's kind of tedious for users to kind of constantly track what their input/output arrangements are to these clouds to kind of calculate what the costs will be, you know, how their DAG looks like, how far they can go in term of parallelism, et cetera. And then the final part of this allocation problem is actually performing automated bidding or management of your service portfolio on this infrastructure market. So there's a spot market there at Amazon, but I guess you can find it quite tedious to kind of monitor this market and then manually say, okay, by me an instance now, if you want to do this [inaudible], that is. Complexity of this problem is further increased by the fact that consumers sometimes have access to internal resources. So it's difficult for them to kind of -- if they're going for a hybrid setup where they can both run their applications on local versus public infrastructure, to kind of think about it, okay, what will the implications be of shifting my deadline one day or something. Can I then run freely on my private infrastructure? What would the costs be? And then other small technical issues -- well, that appear small at first but can have major impact are things like the fact that your metering on EC2, for example, is based on hourly rates. So, for example, if you say, okay, I'm scaling this up with, let's say, multiple parallel threads and getting my results back in, like, one minute, you're paying for one hour of resource usage on EC2. So those kind of small things. It's also difficult for users to kind of deal with this, and they can differ between differ providers, things like that. So that's also something that we want to tackle. Going into automated bidding a bit, there's lots of interesting work that can be done here. So basically once you get the spot market data in, you can do technical -- well, it's probably better to do technical analysis. So you can calculate support points in this price, moving averages, things like that, to kind of get a feel of what the general price is for these resources at a certain provider, right? So you want to get some more structure in there. It's hard for a user to kind of work with this data from cloud exchange that I showed you earlier. So the idea, then, for automated bidding is to have an agent time the bids in the spot market, so when it is cost effective he's going to acquire your resources and determine what value he's going to bid. And so this is very difficult for a user to do himself, right? And this also has to do with what kind of quality of service constraints that you're imposing. So if you have a really hard deadline and you want to make use of the spot market, you'd better take into account some possible delays or problems with the fact that your instances are getting killed because you did a wrong estimate of what you need to bid, things like that. Now, there's been a lot of research on automated bidding in general, a lot of, let's say, algorithms, learning algorithms for kind of targeting the time to bid and the level to bid with the nuance mainly coming from the University of Southampton from the Nicholas Jennings research group, and that's something that we want to look into to use those. Second point of interesting research that you can look into here is kind of -- you have this uncertainty in the spot market which you can tackle by making a derivatives market, as in financial markets. So you can look at options for acquiring a certain instance at a certain point of time and price those to kind of take away the risk but still get some extra value there. Remember we have, like, 40 percent cost reduction on the spot market currently, so it's not -- it's something. Now, there's a lot of body of work there in terms of financial and electricity markets to do this option kind of pricing. It's something we want to look into. This is applicable for infrastructure as a service market. Speaking of electricity markets, there's kind of a lot of parallels between both. So we're dealing with both commodities that are non-storable goods, which doesn't happen that often in reality, unanticipated event can cause severe market shocks, over-demand of certain providers which leads to spikes in prices, the fact that there's delivery delay for services and possible network congestion. So these are all aspects that can of drive the design of these markets in electricity -- field of electricity, and that can possibly be applied to this setting. Okay. So I'm going to skip this part. Expect -- sorry. Well, just about smart grids, I don't know if you're aware of the concept there, but this is about demand of users adapting to the load on the grid network. So we have, let's say, intelligent devices in your home network that kind of use electricity when it's cheap. So there used to be a big difference between these markets in terms of demand elasticity, so for a user of computer resources he might easily say, okay, just skip it, let's say ten minutes delay your deadline, which wasn't the case for electricity. You just need your light bulbs to burn. But ideas on smart grids kind of bring these two closer together. Currently it's fairly unclear what kind of dynamics will actually emerge on the spot market. So what you need to know is that this market is currently fully controlled by Amazon, so it's not really equilibrium pricing, so they just determine what the price will be based on the bids they get in, but nobody really knows how they determine this actual price. And so it could that they kind of flatten out the dynamics a bit because they don't want to shock their users too much. So that's kind of an open issue. In terms of ways of dealing with these systems and the introduction of market-based allocation, there's lots of work on market-based control and distributed systems in general. Now, this has been applied to grid systems, for example, to make these systems more sustainable and open. So the big problem with grids is that these connect, like, you know, institutions all across Europe and the United States, so potentially a user could use thousands of CPUs on this system, but in reality that's not possible because he still has to pick up a phone, call his colleagues, can I use -- can I enter your VO, what will my, let's say, constraints be there. So it's kind of a different setting, but anyway, in terms of engineering markets for infrastructure as a service systems, there's lots of work on different types of auctions that could be used to do this efficiently. So the fact that it didn't work for grids on a large scale has something to do with the fact that you have to determine virtual currencies there, complexity of these mechanisms, tractability computationally, so computing an efficient outcome. But a lot of those are kind of removed when we apply this to infrastructure as a service markets. So there's lots of work here. Some references there if you're interested in this body of work. Now the second problem that we want to look at was valuing these resources. So an important point is that cloud turn users into choosers, as Yanosky said, which means that they -- now, certainly, they have to decide on lots of stuff, right? So at first you work at your university, there's a cluster there, it has been procured, it does a certain architecture, you just have to wait in queue. I mean, there's not a lot of choice there that you have. Now suddenly people have to decide on, okay, what kind of system architecture do I want to run my workloads on, what delivered quality of service do I want to get actually, how do I go about is this cost notion, how much do I really want to pay for executing this job at this point in time with these quality of service constraints. So in general, this expression of value is very difficult for users to do, but the idea is that we can tailor this or take this into account by providing additional user-oriented metrics in terms of what the absolute costs will be of running your application, what the impact will be of reducing your makespan of your application in terms of dollars or increasing the accuracy of your results, right? Which is often the case for simulations, for example, you have this tradeoff. So it's really difficult to do this without decision support, for example, because you might have a portfolio of reserved instances and then this doesn't really hold, as Patterson said, so there's a real difference then of asking [inaudible] service right away or just waiting a while and using your reserved instances for that. Okay. So I'm running out of time apparently. So this is a general overview of the system. I'm not going to go into details there. One of my students did some initial work here on optimizing the schedules using linear programming, but I have to skip that because, you know, being in the education system, I think I'm going to -- sorry, education session, I think I'm going to move towards a little of what we do in terms of courses right now. So this is the way it was last year. So relevant topics in the cloud computing space deal with -- in terms of the cluster computing bachelor course here, it's about how the clusters look like, what's a storage area network, what kind of interconnects are there, what are the design tradeoffs, how do you administer and configure these systems efficiently and programming on these systems, MPI bench processing. So that's a general background into, let's say, distributed computing and processing. Then in distributed computing paradigms, master course, we go into web service technology stack, service oriented architectures, which are relevant, of course, in the context of cloud computing. But then cloud computing itself basically pops up in a topics course which is not really that structured, so we also want to move towards a more structured introduction depending on the, let's say, approval of -- you know, like you guys. So this deals with virtualization technology key concepts, and we do already have some practical work that students do now with new models of processing Hadoop, for example. So we had good reports on that introduction of this in the curriculum. Hands on-work with EC2 is planned, as well as an evaluation of whether Azure can mean something for us in that field. And then there's lots of thesis topics and internships in the context of the work I just outlined, and we're looking at the specific collaboration with the Applied Economics departments in this field to kind of combine the computer science with Applied Economics to advance the field further. So any questions? Sorry for the quick pace, but are there any questions? I'm happy to take them now. >>: Two quick questions, please. >>: So do the customers for the decision support -- [inaudible]. Kurt Vanmechelen: Well, currently we're looking at this from the point of view of a scientist who wants to run, let's say, large-scale computations out there. So for many companies -- well, if these companies are also running computationally heavily workloads with similar characteristics, it, of course, doesn't really matter that much. It might depend a buoyant the context of how accounting is done, things like that, but in terms of valuing your resources and allocating these, it's fairly similar. But we take the viewpoint, you know, from a computational science perspective mainly. >>: High performance computing? Kurt Vanmechelen: Yeah. Well, high performance -- so as Patterson also mentioned, we're, of course, mainly looking at systems which are fairly parallel. So we're not looking at tightly coupled high-performance computations. Of course, it's quite difficult to deploy these on infrastructure clouds right now. Okay? Any more questions? Yes? >>: You mentioned at some point that one of the major problems is the valuation of the work that you want to get done in the cloud, and in the past there have been some proposals for how to present, how to value your work, but they've been quite restricted. Do you think that valuation that starts really including cost difference, derivatives of cost, makespan, different derivatives of makespan and [inaudible] that this is the direction that you're talking about? Kurt Vanmechelen: Yeah, right. So those are these user-oriented networks that I talked about. So we really need to start defining these, because otherwise people are just lot, you know, this big product cheap with instance types and prices per hour and, you know, what do we could? So they want to look at this problem in terms of how much do I have to pay to get my results in ten minutes earlier, things like that, or get a unit of accuracy more. And so the idea is also to kind of tailor these decision support systems to work specific applications that users are working with so that you can customize these and they have sort of a portal to kind of reason about their requirements. Okay. Good. >>: Thank you. [applause] >>: The last talk in this session is on using cloud computing to support virtual congress. This will be by professor Juan Lalinde-Pulido from Colombia, Universidad Eafit. I'm not sure what it means, but what's most important is that Juan is the course director in computer science. He worked doing research, but he works also with a government organization. The project that he will be describing is also bringing these experiments and research into the classroom, and specific how you scale when you have different big events and whether it's useful for teaching. Please welcome Juan. Juan Lalinde-Pulido: Thank you. In my presentation I will try to show you two different aspects of the work that we have done with this event. We call it a virtual congress, but it's more like a conference, something like that, that we made last year in Colombia. And as you will see, in this experience we have both sides of use in the cloud. We were successful because we were supposed to buy the cloud specially by cloud computing specially for handling video streaming, for video conferences and all that bandwidth-consuming traffic. But we also have many problems because not all the [inaudible] on that kind of technology. So I think that it would be interesting to know both sides. How on the things that we were running on cloud computing, they were very smooth, but on the other side we have to do many tricks to keep the things working, and how to learn some lessons from that experience so in future events we avoid those situations. I work in a research group that is focused on use of ICT, information and communication technologies, in education, and that group has been working at Eafit University for more than 20 years, almost 25 years, and during the last years the leader of our group, Claudia Zea, has been an advisor to the minister of education in Colombia. So back in 2008 there was a very interesting suggestion, so we said why don't we try to have a meeting with all the professors in the country, open to all professors in the country, to all teachers of school, high school, and make all [inaudible]. That was the idea, but we decided to start it with a proof of concept, a small -- that was the idea. A small congress. We expect about 500 to 700 professors, and we built a platform for doing that. So I will -- first I will present the idea of the congress and then at the end I will show you how we deal with the congress and the technical issues, why we moved to the cloud computing, and what did we have to improvise in order to support the demand that we have. The objective of the congress was to highlight contributions, to talk about collaborative projects. The idea is to have the students in the classroom to learn by developing projects where they collaborate even locally or using the internet. So that was the main objective of the congress. And we have some specific objects. One of them was to socialization experiences. You will see later in the presentation that we have a big component of socialization with the previous experiences that the teachers were doing at the classrooms that were presented and where the people can interact about their experiences. We want also to encourage the education community to use collaborative projects as a strategy that promotes meaningful learning, and, of course, make [inaudible] use of technology infrastructure and connectivity on a national level. I have to say one thing here is that in Colombia we have, in the previous -- in the last five years, something like that, we have connected all schools to the internet, but it's not a high-speed connection. Most schools have 256k or 512k of bandwidth available to the whole school. So in the project, we have to take that into account because we cannot deliver high-quality [inaudible], so that's one of the restrictions that we have. And the target audience was active teachers that were working in all the country, and here we talk about normal complimentary [inaudible]. The normal students in Colombia are the people who are preparing to be teachers. Also teachers who are in training, all the research community, professional teachers and for the general community. It was an open congress. The registration was free. It was open to everyone. And it has, of course, has an academic community. The leader of the committee was Claudia Zea, the leader of our group, but we have participation from people from other universities, even from outside of the country, and we have some sponsors that help us with the congress. Now, the thing was this. We were trying to put on the web an activity that is normally done luckily in presence. So we divided in two different activities. One, a congress activity, two, let the people adjust to environment to prepare for topics that we're going to discuss and all the things. Now we have all the dynamics that was the main activity in the congress and then we have some post-congress activities that allows us to analyze the experience that has been during that period. So in the pre-congress activities we have an advertisement. To tell the truth, the idea was it was just a proof of concept, how to create a [inaudible] congress. So we didn't put much effort on advertising. It was more word of mouth, the way that the people knew about the event that we were going to make. We used Colombia Aprende. Colombia Aprende is an educational portal that belongs to the minister of education in our country and the local secretaries of education in all the cities. And the pre-congress activities has mainly two aspects. One is to prepare the attendants. It has some training activities on virtual courses. One of them was the ABC [inaudible], a brief introduction and some training on how to work with collaborative projects and writing activities to explore the environment and to be prepared for the things that we were going to do there. And the other thing that it was [inaudible] was for compilation of all the experiences where we have some students from a communications -- from a social communications to go to the different schools in the country to create reports with video, with photos, with some text that describe the experiences that they have done and prepare all the information to be published for the congress. So for that, that was [inaudible] what they find the things that were done during that period. And after that period, we went into the main structure of the congress. We have two main dynamics that were developed at that time. One was the academic activity, the other is the social activity, and the other one was the [inaudible] production. In fact, it was an elaborative [inaudible] production. The academic was basically composed of three main activities. Video conferences where we have experts from all over the world giving lectures. Those lectures were transmitted -- not live. They were prerecorded, but it was transmitted at specific times according to a schedule back in the normal congress, and after that the same lecture was put in an on-demand video server so the people that were not able to attend the conference can go there and look for the information. There were also some forums. There were discussions about some topics. One important thing is that for those forums, we have some -- like two-thirds that were monitoring the people and were encouraging the discussion and other things, and it was one of the greatest conclusions of the congress that it was not enough to have a platform where the people can go and discuss, but you have to support that interaction with people, with real people that are encouraging the discussion who are answering questions, who are asking new questions and other things in order to have the activity running permanently. And offenses we have some workshops that were [inaudible] courses on some specific topics that were all related to the collaborative projects strategy. On the social aspect, the idea was to allow the attendants to know the different experiences that were made in the country, and it was very interesting because we developed some routes where there were published how to go through those routes visiting different schools in the country, [inaudible] visits, and the students and the professors that were part of the real experiences, they were answering questions from the forums that were related to those experiences that were selected. And we also have like a coffee shop. In fact the name in the Spanish world is el cafe, the coffee shop. It's a space for the people to meet and to talk about different things, just like in a person's congress. And, finally, we have a third activity that is related to [inaudible] production. In this the idea was to use -- create a [inaudible] Wiki, our [inaudible] project where the different professors and the students were adding concepts and building that Wiki, and we also have some forum for discussion and for creating concepts about the topics of the congress. So, for example, this was thing that we used for the academic issues. This is where we have a video conference, we have the lecturer, and on the [inaudible] the slide that he was using, and these video conferences were [inaudible] a forum for discussion where other people can discuss almost in realtime. I told you before that the conferences were prerecorded, but at the time of the conference, the lecturer was connected online, so he was answering questions that was people were asking at the same time that they were hearing the conference. So it was supported not only by the video but it has also a forum to support that activity. There were some private workshops where the people [inaudible] and they were with a tutor that was explaining how to do the things, et cetera. And it was trying to promote the use of web 2.02 services and to discuss, have reflections about some produced material or about the topics of the conference. And this is what I told you all this [inaudible]. What you see here, this is a map of Colombia, and we have different routes that were made available during the congress. So every day the attendants could find a new route so they can find a different experience to visit during those days. And this is how -- an example of one of those experiences that were selected. In this case the name of the project was Colombia Tours, and it has a video where the teachers and the students explain the activities, has a diary of picture and the comment that the visitors made and where the students and the teachers answer those comments. This is a sample of how the Wiki was looking. It was built during the congress, but all the attendants were [inaudible], but, of course, we have our supporting team that was helping the people to develop the Wiki. This is also the Wiki. And this is the coffee shop where the users can create -- can communicate with other people. They have a chat and all the things to have that space. After the congress, we have some post-congress activities that -- I will emphasize on two activities, but the third one was that all the materials of the congress were left online for more than a month so all the people can return and watch and the forums were active and all those things. The fourth thing that we did was the evaluation. And it was just to have evaluation of the impact of the congress, how was it [inaudible] issues on the discussions, but also on the technology, the forums, that we faced during the congress. And another thing is that all the contents that were created during the conference, not only the video conferences and the experiences, but also the comments of the people, the Wiki, et cetera, all the material was adopted to be published on Colombia Aprende, which is the portal of the minister of education, like I said before. So we had to do that work after the congress. In the evaluation, we take into account that, first, that the purpose of the congress was to fulfilled, obviously. And we analyzed how the virtual activities encouraged the use of ICT, and it was very interesting when after the second day, we find that the attendants were no longer worried about the technology or infrastructure that they were using. They were not worried about how to use the forum, how to log in, how to see the information. They were more worried about the discussions about why the tutor takes a long time to answer a question and other things. So I think that in that sense it was very important to hide the technology so the people feel in a real congress where they can interact with the other people, and the technology is just the medium for doing that. One other interesting thing was that the [inaudible] allowed more teachers to attend. At the end we have more than 8,000 people registered. And to have that number of professors in our presence congress was impossible, so it was one of the interesting results. Teachers were motivated to work with collaborative projects, and one of the main conclusions is that if you're going to have these kind of activities, you need to have training and [inaudible] stuff to [inaudible] the interactions. So the people got answers for their questions or in a forum, for example, there are no activity. The tutor can ask provocative questions so the people feel motivated to interact and other things. So I will talk a little bit later about the technology. The idea was to have -- as I said before, the idea was to have proof of concept where we were planning to have between 500 and 700 attendees, ask we ended with more than 8,000, so we have to evolve the platform dynamically in very short time. And I'll tell you a little bit more later. We were also concerned about the skills for the users, how they were able to interact with the technology. We have not only an engineering team, but we have designers and we have people that has [inaudible] and it was all designed by this team of people and has the usability of the website. We also had some, for students, analysis of the quality or relevance of the support -relevance of the supporting material, quality of the lectures, and many things that were analyzed over the congress. We have some components that were present in the congress. Some were dynamic and some were [inaudible]. The dynamics were recent activities. Every time that a user logs in or goes to another page, he finds information about what were the latest activities [inaudible] what is the new event and other things. And so in a forum he can find the latest contribution to that forum. When he went to a conference was the same thing. So he can find easily what were the latest activity in the site. We were -- we also used daily event message where we say what was the activities for those days, invite the people to attend, and ask provocative questions. Another one was the visit to the regions where the experiences were made. So it was with a map and all of the ways to travel in that map. Once a conference finished, we put that conference in an on-demand server so the people can also go back to the conference. And there were also news and reflection. The reflection was some interesting topics that were made available to the attendees using provocative questions so they can reflect about the topics of the congress. And in the transversal components we will talk about information that was available in all pages so they can always be -- have the right information about where they are in the moment. So we have our user menu, we have a small display for the number of attendees in the congress, we have the schedule, we have the forums, we have even the possibility for the people that has significant experiences on collaborative projects that were not selected to publish them and give them some information about that. We have also a mechanism for inviting friends. Obviously the possibility to go to the news, to print a certificate and other things, and we have RSS feeds and all the things and the tags clouds that were related to these things. I will skip this a little bit. I will go to the main problem that we have. The original idea was to have an event for 700 people, but three days before starting the congress there were more than 4,000 people registered. So we have to analyze all the infrastructure that we have built that was not built for that amount of users and try to update it, to evolve it, in order to support the number of users that we have. As you can see here, we ended with more than 8,000 users registered on the system. The other interesting thing was that the congress was planned for Colombian teachers, but it was open to the world, and we have attendees from more than 35 different countries. So I will move to the technical part to talk about it in the last five minutes. The guiding principle that we were using were, first of all, we were not going to reinvent the wheel. We just use what we have. We have different web 2.0 services that were available and that platform for those kind of services, so well use that platform, but we will arrange all the user interface and all the interaction in a way that the user will find only one place. He doesn't notice the difference between using Drupal or Moodle. Those were the two that we were using. He will find all in a [inaudible] way. And we try and design how to -- how the interfaces were made, that the ITC literacy was not a limitation, that it was a very easy to use site. We initially identified two critical issues. One was the video bandwidth, and that's the place where we use a provider from [inaudible] that uses services on cloud computing that help us to handle that amount of traffic. And the other one was the availability. Especially the availability became a critical problem when it was a very successful congress and we have people from all over the country and ministry of education was paying attention to what's happening there. So in the original system design, we decide the video will be cloud based, so we hire a company. At that time it was [inaudible], I think, and now it's [inaudible], the name of the company. So we handle all the live video using that company. For streaming video, for on-demand video, we use a local company in Colombia that is specializing on that service and help us a lot with that. And the infrastructure that we used was Drupal, Moodle, MediaWiki and MySQL. Keep in mind that it was originally on proof of concepts, not a very big congress. The problem was that we were too successful in inviting people, so two days before starting we were 4,000 users. I received a call from the minister to say should we close down the registration? I said with 4,000 or more, anyway, it's a problem. We have to work out again the platform, so I just [inaudible] when the platform is too busy, we will kick off some users and so we can keep the platform going. But we need to fix all the details. So the solution was, with the platform that we have, how can we evolve and make new things. So the key concepts were load balancing. We have to establish a load-balancing mechanism that allows to preserve the sessions between different servers. It was in the original platform that was not [inaudible]. We have to synchronize the servers because one of the things that we have was that all users can publish information. They can publish content. But the problem is that the tools that we were using published that content on the file system, not through [inaudible]. So that was an issue that we had to deal with, and we used html properties to balance the activities. So the first approach was we tried to build a cluster with MySQL and tried to get the high-level support with that, but the sudden news was that the cluster with MySQL, the performance was worse than working with only one server. So we throw that away and just start handling the sessions with -- shared the sessions with interface and all the information that was really run through the applications starts using [inaudible] as a tool for load balancing. The load balancing was based on IP of the request, so when a user published in one server and [inaudible], he will be directed to the same server so we have some time to replicate the content in the service meanwhile. Now, in the final approach, there's the final design that we have. We end with three servers using POUND as a load balancer in the front balancing using the IP address. We share all the session information using NFS, so in that way if a user was switched to a different server, the session was preserved because it was the same session in all servers and used rsync to skip synchronize all the content that was published by the attendees. And for the back end we used a SQL Server with a master and a slave just in case we have problems with the master, we can go to the slave and keep the system going. As you can see, this is not top of the class solution, but it was something that we have to develop in three days, going from a platform and only one server to try to build something that was able to scale. In this case it's easy to see the advantage of having cloud computing. The video that was [inaudible] in a video is provider using cloud computing was not a problem with us. We'd just say we need more services, and that's all. The first conclusions -- the conclusions we have at first, scalability is a must. I have to admit, we were lucky. We were able to have a scalable solution, we were able to attend that amount of people, and we didn't have problems with the servers. We don't have any down time during the period of the congress. But I have to admit that it was more lucky than the result of an excellent design from the beginning. We have to deal with two problematic situations. Data stored on local file systems and with the multiple IDs and multiple sessions. So if this kind of event was conceived from the beginning to be cloud enabled, it won't be a problem if you have 1,000, 10,000, 500,000 attendees. The only open issue that we have with that is chat with multiple users. Technically, you can handle it. But the problem is how they can interact if there are many users in a [inaudible]. So that's one of the things that we are dealing with in this moment and, of course, after that experience we decide to rebuild the whole platform to be cloud compatible so we can have a local application and we will have this kind of event just higher time on a cloud provider and run that application there. That's it. >>: Thank you. [applause] >>: Any questions? You cover it so well, and you've got extra time. So no questions. Thank you very much for attending, and if you have any questions, you can ask the speakers now. And we have coffee, time, and five minutes, and then will be another --