>>: Okay. Good afternoon. Welcome to the... happy to have four presentations here. The same format...

advertisement
>>: 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 --
Download