Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As a relatively new (self-taught) web developer, I've heard the terms front-end, client-side, back-end, and server-side quite often. To me, front-end and back-end were always synonymous with client-side and server-side, respectively.

However, as I've begun working with MVC frameworks like CodeIgniter, I've come across a few instances of front-end referring to basically anything the end user sees (including server-side code), while back-end has referred to anything the end-user doesn't see (including CMSs). Client-side and server-side, to me, are much more concrete in their meanings; they have a very distinct line separating them. Front-end and back-end, on the other hand, do not.

In a conversation I remember having with another web developer, he referred to CodeIgniter (in its entirety) as a front-end, and this threw me for a loop. I wasn't sure whether to correct him and say that CodeIgniter was my back-end, or if my definitions of the two terms were completely wrong.

Searching for definitions of front- and back-end confused me a bit more in some respects, though they did clarify a few things. I'd just like to know where the lines are drawn between these four terms, and how they piece together in the context of web development (specifically on a LAMP stack).

share|improve this question
1  
I've worked with one guy who used "front end" and "back end" to mean "front facing" and "back facing". Whether or not he was "correct' is another question. –  user16764 Feb 27 '13 at 1:26
add comment

3 Answers

up vote 7 down vote accepted

I don't believe there is a formal definition for those terms, and as you noted there is overlap in some cases.

front-end and client-side overlap.
server-side and back-end also overlap.

If I were to split hairs, I would offer these rough boundaries:

  • client-side is an application that runs at the users' computer. It could be a stand-alone application (more often) or it could refer to a web browser based interface (less likely).
  • front-end also faces the end-user and generally runs in a web browser based interface. I haven't heard of thick clients being referred to as a front-end.
  • back-end refers to processes and services that are running either on another server or in the background of the users' computer. More often than not, it refers to processes that are not on the end users' computer. But the key, as you mentioned, is that the end user is not necessarily aware of the processes running.
  • server-side is an extension of back-end but explicitly reinforces the fact that the processes are running somewhere else and not on the end users' computers.

By way of example, and to highlight the confusion between the terms, I'll use Minecraft as an example.

Minecraft has a

  • client-side application when you run the jar files locally with your own JVM.
  • front-end if you choose to run the client application in your web browser
  • back-end process that can be running locally on your machine if you are in stand-alone mode
  • server-side process if you choose to log into a server hosting the Minecraft server application.

If you dig into some of Minecraft's statistics, you'll see that they simply designate a client and server component to the game; they don't necessarily care where those components are run.


To directly answer your questions:

Is the term 'Front-End' synonymous with 'Client-Side'?

Sort of, but not really. There's a nuance between the terms if you are discussing things outside of the web based world. If you're strictly within the web based world, then yes, they are functionally synonymous.

If so, is this always the case?

In the web world, I would say yes. In other realms, I would say no as explained in the rough definitions I offered.

share|improve this answer
    
That's about what I thought. Thanks for helping me clear this up in my head. –  DC_ Feb 26 '13 at 23:52
    
Backend is often used to mean the client side administration part of a website/application. –  Florian Margaine Feb 27 '13 at 7:31
add comment

Server-side runs on the server. Client-side runs on the client. Back-end is crunching data. Front-end is displaying it.

Look at this web page. Pulling all the comments from the database is server-side, back-end work. Laying that data out in a template is front-end, server-side work. The AJAX voting widgets and the fancy text input box are front-end, client-side.

share|improve this answer
1  
+1 for pointing out the orthogonality between front-end/back-end concept and client-side/server-side concept –  Francesco Feltrinelli Dec 14 '13 at 19:52
add comment

I generally find using client-side and server-side for describing development/developers is less vague. That portion of the client side where we're juggling/formatting data can be seen as being a back-end component. On the flip-side there's all the templating that tends to happen on the back end which being "for the front end" tends to result in people talking about them as front end Java or C# development. It's rare, but I've seen it in job descriptions.

But yes, generally speaking the front end is the part where the interaction happens. The back end is the part where all that interaction gets turned into something useful.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.