SharePoint 2013 Architecture
Here we have a diagram representing the architecture and if you notice, it's broken up into two sides. The left-hand side is really the world of the SharePoint administrator. Here we're talking about server and database configuration and files living in the file system, and then on the right-hand side we have the world of the end user. These are things that we can easily access through the traditional SharePoint browser interface and everything on the right-hand side lives in a SharePoint content database. So if we start at the top and move down, the first term I want to talk about is the farm. Basically, if you've installed SharePoint you have a farm. Now a farm can be a single machine and if we're creating a developer environment or you want to build a learning environment, you're most likely going to build an environment that is a single machine, but for production environments generally you're going to have more than one machine. So you can have multiple front-end web servers that take requests from users, you can have multiple application servers that do background tasks, you can have servers that assist with search, you can have multiple database servers, and so on. SharePoint is designed to scale out to meet increasing demands. Each farm is associated with a SQL server database called a configuration database, so when you install SharePoint you have to have SQL server available. In a developer or learning environment, that can be SQL server Express, which is a free version of SQL Server. Also, each server in the farm has a set of files stored in what we call the SharePoint system folders. The deployment mechanism we use for customizations to SharePoint ensure that the system folders on each server in the farm are kept in sync. With any SharePoint farm, we can have multiple SharePoint web applications. For the developers out there, a web application is just an extended IIS website, so when we create a web application, SharePoint creates an IIS website, modifies the web config file, modifies the global.asax file, and creates some virtual directories which point to the SharePoint system folders. The main reason why we would have multiple web applications is because we want to have different authentication mechanisms. So, for example, for the SharePoint intranet, we might want to use Windows authentication. For an extranet, we might want to use forms-based authentication, and for a public-facing website we might want to use anonymous access. Each web application is broken up into one or more site collections, so as we transition from web application into site collection, we make the transition from the administrator world over into the end-user world. A site collection is a logical grouping of sites and these sites make up a tree structure, so there's one site which is called the root or top-level site, and it can have children and its children can have children, and so on. Now why do we need site collections? Well, part of what the information collaboration piece of SharePoint is about, is empowering end users to do things that normally IT would have to do. So when we create a site collection, we can identify one or more users as the owner or administrator of that site collection and then they have administrative privilege within that context. So inside that site collection they can create sites, they can create lists or libraries within those sites, they can identify which users can contribute to those lists or libraries, they can change the look and feel of the sites within the site collection, and so on, but the privilege granted to a user in one site collection has no bearing on their privilege in another site collection. So site collections are basically a boundary for administrative privilege. Also, when using the browser interface, users in one site collection can't see data from another site collection. Now as a developer, I can build something that will expose that data from one site collection over to the other, but that capability is not possible just using the browser interface on its own. Now I mentioned that a site collection is a logical collection of sites, so what's a site? Well, in the information collaboration space, really all a site is, is a container for information. So within a site, we can have lists and libraries. A list is like an Excel worksheet. It's just rows and columns of data. So announcements lists, contacts list, task lists, these are the common lists we would use within a SharePoint site. A library is just a special case of a list. We still have rows and columns of data, but each of those rows is associated with a document. So we can store office documents, pictures, text files, web pages, PDF documents, all kinds of documents, and then the columns in the library become what we call metadata associated with that document, so that assists in things like searching and filtering. Now one important thing to note for the developers out there, everything you see on the right-hand part of the architectural diagram is stored in what's called a SharePoint content database. So if I create a site within a site collection, all I'm really doing is adding in an entry to a table in the database. If I create a list, again, I'm adding entries into tables. If I add a document to a document library, that also goes in the database, so pretty much everything we see in the web interface in SharePoint is virtual. Really SharePoint is just going to the database and using the data stored within to populate templates that are used over and over again. Alright, so let's review. At the top we have the farm. Again, if we have a SharePoint deployment, it's known as a farm. Each farm is associated with a SQL server database called a configuration database, and all of the servers within the farm have a set of files stored in the SharePoint system folders, and the SharePoint deployment mechanism ensures that those files stay in sync across all of the servers. Inside a farm, we can have multiple web applications. Again, a web application is just an extended IIS website. A key part of the web application is that it has virtual directories which point up to the SharePoint system folders and, again, we normally use multiple web applications when we want to have multiple authentication mechanisms. Inside a web application, we can have multiple site collections, again, a boundary for security or administrative privilege, also a boundary for visibility of data, and then the site collection is a logical collection or a logical grouping of sites, and sites are containers for our information, our lists, and our libraries. So that's an overview of the SharePoint architecture and some of the terms.