COSMOS: How the puzzle pieces fit together
Why a social networking tool for EVE now?
First off, something that we as EVE players can be proud of: EVE was a social network when Facebook was still just a way for Mark Zuckerberg to assess whether his classmates were more attractive than farm animals.
COSMOS is about giving all players the tools they need to organize, plan and share their EVE experiences. As we all know, playing EVE on your own is never as fun as playing with a group of likeminded folks. Whether you're on a mining op or roaming low-sec in a wolf-pack spoiling for a fight, nothing beats having a group of guys and gals to shoot the breeze or share the kill with.
Until now organizing these groups hasn't always been straightforward. Unless your corp has a resident programmer or guy willing to host a server the only real option has been EVEmail.
Over the years the development team has been amazed time after time by the dedication and ingenuity of EVE players in coming up with tools and applications that help to make EVE easier and more fun to play. COSMOS is not intended to replace these applications. Indeed, we plan to add as many of the new features as we can to the API to help you make even more cool stuff. However we do feel that an easy to use, CCP-made toolset is overdue.
How is COSMOS being constructed?
This is a very unique project in that it aims to blur the line between the in-game environment, and out-of-game with not just communication features but expansive game related features. I'll leave it to some of my colleagues to get into the specific features planned in following dev blogs (yes you can call me a tease) but what I want to discuss today is the technical underpinnings of what is a typically ambitious CCP project.
As this is a site we expect to see heavy demand on, and which we intend to continually enhance over time we have some very serious challenges to tackle. COSMOS has to be able to handle a heavy load, we have to be able to scale it as the load changes, it has to be of extremely high quality, we need to be able to easily maintain and enhance it and it needs to handle full real time data flows with the EVE backend systems without inducing any lag or performance impacts for those in-game. Achieving this requires a totally new architecture using the best components that we can put in place.
As a general overview, the COSMOS system consists of a number of key elements. There is a web site which contains a content management system; a data service to retrieve data from EVE, databases or caches; integrated applications such as a new forum solution and a custom COSMOS.web application that integrates and controls all of it. We also have a robust distributed caching cluster to handle caching of sessions and back end data to maximize performance and reduce back end load. Finally we have a new application which we call "the Nexus" which resides on the SOL clusters that run EVE itself. This coordinates the flow of real time data between COSMOS and the virtual world and the back end TQ database keeping everything in synch.
A very simplified overview diagram:
The web application itself is a .Net (C#) application written by our web development staff that utilizes the MVC architecture. This approach allows us to more easily handle scaling the various components as need be, provides greater support for automated testing and gives us a lot of future potential for such things as different view layers (mobile devices anyone?). We can also bolt in other applications such as forum, blog, and media gallery solutions through .Net authentication and shared use of our data services and caching solution. This is being developed in an environment with continuous integration, automated test suites and forced code quality inspections to keep our quality as high as possible and reduce the chance of regression bugs in the future.
Of particular note in this application is the Data Service Layer. This is its own .Net WCF application which handles data requests from COSMOS for information from our web database (forums, blogs, news, mail) or from the EVE cluster (game related data - characters, corporations, and in the future fittings, skills, market data, etc). It also interacts with the caching cluster to handle caching and retrieval of data as well as updating the cache when any data becomes invalid.
We are utilizing Umbraco as a Content Management System which will allow us to handle localization of content as well as providing our marketing and content folks with the tools they need to make website updates on their own without the need for any developers. What this means for you the player is that over time we will be able to roll out different language versions of the site much more easily and that we can provide better and more frequent content to those sites.
Finally we have the Nexus component. This is being written from scratch to handle the flow of data between COSMOS and the current EVE systems. It is important that any ‘new' data not just be written to the TQ database but immediately be available within the SOL cluster so that it is always working with the latest data. Nexus handles this coordination, utilizing XML-RPC to communicate with the SOL cluster but interacting with the TQ database directly when that makes the most sense (such as in large data reads like Corporation member lists). This component is written to scale horizontally across the SOL cluster so that the load can be easily managed and its access to the TQ database means that there is still a sufficient degree of functionality on COSMOS when the SOL processes are brought down for maintenance. If need be the Nexus can even be put on its own dedicated cluster for further scaling or isolation of load.
So that's a brief look at the guts that make up COSMOS. As we are developing this in a highly agile process, this will continue to evolve over time. We will be sharing additional information regarding COSMOS in the coming weeks to give you a better grasp of what it is and how much it will add to your EVE experience.