books

books

The concept of full-stack was pronounced dead at the close of 2019.
2020 Stack is the new name for the new generation.

windrose
Stacks

Five top-level stacks of Web technology:

Front-end
Back-end
Network
Development
System

Back-end stack

The back-end is "The Web Site." This is where you deliver and consume services, where you access third-party libraries, where your dynamic data is stored, where your business rules match user choices, and where you assemble your mashups.

When planning your next web site you'll make important choices regarding these back-end technologies. Sometimes your choice will be made based on history: you, or your software development team, have invested your efforts into honing your skills with a particular set of languages, libraries, and protocols, and you'll want to use what you know best.

But if you don't need to follow historical precedent, and you decide to invest in the future, consider some of the technologies that are gaining popularity in the professional development community. Consider the language/database/web server popularly referred to as LAMP: Linux, Apache, MySQL, PHP. These back-end technologies drive many best-of-breed web sites.

Layer Technologies Read more . . .
Mashup
Advertising, maps, search, credit card processing, photos and videos, bookmarking, microblogging, SEO analytics.
Why link when you could embed?
Logic
PHP: language vitality, interpreted, reusable code, constructs.
Decisions, decisions, decisions.
Library
Database access, photo manipulation, graphical display, networking, search.
No great software stands alone.
Data

MySQL
Open source software par excellence
Services

XML, JSON, CSV
Back-end services get no glory.

Beyond the stack

Not all back-end technologies fit in the tidy five-layered stack laid out here. Two important back-end technology classes cut across several of these layers: application frameworks and content management systems. Application frameworks are an important all-in-one toolbox that can dramatically shorten your web site development time. Content management systems are pre-packed, out of the box solutions, that fit classic business scenarios; if your new web site is a good fit for one of these, the cost savings for getting up and running can be substantial.

Frameworks

Frameworks define a scaffolding that comes ready to use: folder organization, naming conventions, templates for repetitive code, and more. Many projects use frameworks at the outset because they provide such an easy way see the immediate results of your efforts. As such, frameworks are an ideal prototyping aid. But at some point, every web application development project reaches a level of sophistication where the original choice of framework code no longer fits so nicely and you're face with the choice of hacking the framework, or rolling your own. If you've reached rock star status as a programmer, it makes perfectly good sense to roll your own framework.

Frameworks by nature work across multiple back-end layers, allowing you to work on mashups, code your logic, and access libraries all with one installation/configuration cycle. As such they help you get started fast, and free you from all the research needed to separately assemble and configure your stack. The only price for this is less choice at the outset, and more work later on when a third party API needs to be integrated into your application's framework.

The notable frameworks widely in use by the PHP community include:

Frameworks cut across stack boundaries too. Many frameworks have taken on the Web 2.0 challenge and have integrated AJAX calls—initiated from the front-end interaction layer—into their toolkit. This client-server, cross stack development framework, provides newcomers with a cozy starting place for ginning up prototypes and one-offs.

Content Management Systems

CMS's define an entire front-end / back-end solution for typical web publishing needs: forums, participatory publishing, blogs, etc. Everything needed to install, configure, and run the site is included. These packages typically only require that a MySQL database be created and configured to store the application's data.

All customizations are done using skins, a combination of CSS declarations, a configuration file, and PHP driver logic. Communities of enthusiastic developers have freely contributed their "skins" which you can can take as is, or tweek just enough to stamp it with your own creative flair.

Some of the most widely used CMS's include: