Web Development Concepts For Everyone
Web Development Concepts For Everyone
Development
Concepts For Everyone
Chapter
01
Introduction
Course
Note
What to expect
Course
Tools
Here is what
I will be using
Chapter
02
The Full Stack
Full Stack
The “Full Stack” is a term used to describe the system of
applications that speak to each other across a networks,
often comprised of a Front End, Client, Server, and
Database.
Front End
The Front End is everything we can see on a Web Page. It is
a combination of layout and the style of all the elements on
the screen. The Front End is made of up HTML and CSS.
Client
The Client is the logic that makes a webpage “smart”. It
handles User Interactions and the flow of data between the
User and the Server. The Client is what turns a Web Page
into a Web Application.
Server
The Server handles data exchanges between Clients and
Databases. Users have the Client on their device, so there
are many clients. Those clients talk to the same server per
application.
Database
Holds onto data for a web application long term. The
browser can only hold on information for a limited time.
The data in Databases are persistent. The data does not go
away if the database or application are “turned off”.
Chapter
03
Version Control
Version Control
Technology that supports versioning of in progress
software. It is more advanced than just about saving files.
Version Control gives developers flexibility to safely
experiment and collaborate with other developers.
Developers can work together!
04
Programming
Languages
Runtime Environments
A Runtime Environment is where an application, which is the result of
writing code, is executed. Node and the Web Browsers like Chrome are
both examples of JavaScript runtime environments that have a
different purpose.
Example of where some Languages “Run”
Weak Strong
Can change Type Cannot change Type
A unit of information, often A Variable is NOT allowed to
called a “Variable” is allowed change its type in the
to change from one type to program. The variable is
another within a computer “locked” into a type and will
program. cause an error in the
application if a change is
attempted.
Programming Types: Dynamic vs Static
Dynamic Static
Runtime Errors Compile Time Errors
Errors are surfaced when an Compile time error checking
application is running. As a of types while the application
potential advantage the compiles. Giving the
developer is allowed to iterate developer a “heads up” that
and “discover” their their logic may be flawed.
application a bit more.
Strong vs Weak | Dynamic vs Static
Strong
Ruby C#
Python Swift
Java
Dynamic Static
C
JavaScript
PHP C++
Weak
Supersets
A Superset language, is one that contains all of the features of a given
language, but then is expanded and/or enhanced to include other
features as well.
Superset Example - TypeScript
TypeScript is a Superset of JavaScript developed and maintained by
Microsoft. It is a strict syntactical superset and adds optional static
typing to the language. Its feature implementation is configurable and
can be intermixed with JavaScript.
TypeScript turns into JavaScript
Transpiled
With TSC
TypeScript JavaScript
Markup Languages
A Markup language is a system for annotating a document in a way that
is visually distinguishable from the content. It is used only to format
text, so that when the document is processed for display, the markup
language does not appear. Examples include HTML and XML.
SDKs
XXX
Chapter
05
Frameworks and
Libraries
(Code) Library
A Library is a collection of either Front End or
Back End code that is “un-opinionated”. Developers bring a
library into their project and decide when to use the code
supplied by the Library.
Libraries support our Applications!
Supporting Libraries
Our Application
(Code) Library Example - jQuery
Wildly popular Library that rounds its rise before the
popularization of technologies like Angular and React.
jQuery makes interacting with “The DOM” much more
manageable while also simplifying client to server
interactions.
(Code) Library Example - Bootstrap
jQuery works with the Client JavaScript Code - But there
are also libraries that support the Front End HTML and CSS.
Bootstrap is a popular CSS library, that also has some
functionality pre-developed in JavaScript.
(Code) Library Example - Chart.js
A popular charting Library for JavaScript. It makes what
would be a difficult combination of styling, layout, and data
positioning and turns it into an easy to manage ordeal. Saving
developers loads of time in creating graphs and charts.
(Code) Framework
A Framework is a collection of either Front-End or
Back-End (Server) code that is “opinionated”. Developers
develop their code to work with the frameworks life cycle
of operations that is provided.
Our code is plugged into the Framework Lifecycle!
Framework Lifecycle
Our Code
(Code) Framework Example - Angular
Developed by Google, Angular is a Front-End framework
that utilizes the TypeScript Superset. It is a opinionated
framework that has many architectural decisions already
made for developers.
React
A JavaScript library developed by Facebook. While it has
framework like features, it is not fully featured, and
therefore considered a library. There are still some
architectural decisions that are left unmade.
AngularJS and Angular
AngularJS and Angular are NOT the same framework. AngularJS was
the initial version of Angular and uses regular semantic versioning.
Angular, started as Angular 2, they skipped Angular 3?, Angular 4, and so
on. Angular 13 is set to release in November 2021.
AngularJS versus Angular
01 02
AngularJS Angular
Written using JavaScript. Written using TypeScript.
06
Client/Server
Communications
HTTP Protocol
HTTP is a communication standard for between Client and Server over
the internet. It is an important standard as not all technology used to
build Client and Server applications are the same, but all of those
technologies have a solution for HTTP built-in to meet the standard.
HTTP Methods
Predefined verbs used to describe the interaction the
Client wishes to engage in with the Server, often called a
“Request”. While there are 39 different possible verbs, the 4
most common are: “GET”, “POST”, “PUT”, and “DELETE”.
APIs
An API or “Application Programming Interface” is a declaration of how
an application can communicate with another application, library, or
framework. In the context of the web, a Web API, is a collection of
HTTP methods a Client can use to communicate to a Server/Service.
REST APIs
A REST API is a collection of six architectural constraints.
In common language between developers, REST APIs point
to a collection of HTTP methods that are resource based.
Web Sockets
The WebSocket API makes it possible to open a bi-directional, interactive
session between a client and server. The browser and server can both
“broadcast” messages that the other listens for. Websockets are the
backbone for applications that have chat functionality.
GraphQL
Publicly released in 2015 by Facebook, GraphQL describes itself as a
“Query Language for APIs”. GraphQL allows developers to create more
precise Client to Server calls, retrieving only data the developer needs at
the time of the call, rather than a predefined block of data with REST.
RPC
Similar to REST, RPC is an API Interaction standard. However,
instead of being resource based like REST, RPC focuses on
execution of processes. It’s like saying “execute this instruction”,
rather than “give me this resource”.
SOAP
The Simple Object Access Protocol, is an older API
protocol. It uses an XML schema and Web Services
Description Language (WSDL) to define what data needs to
be exchanged and where it should go.
Chapter
07
Authentication &
Authorization
Authentication (AuthN)
Upgrading an application to allow it to collect information
and validate WHO the user is.
Authorization (AuthZ)
In working with Authentication, after the application
determines who the user is, Authorization determines
WHAT the user is allowed to do in the application.
OAuth and OpenID Connect
OAuth is a system which grants third-party websites
limited access into user accounts. OpenID Connect 1.0 is a
simple identity layer on top of the OAuth 2.0 protocol.
Chapter
08
Back-End Frameworks
Back End Frameworks
Back End frameworks give developers the tools to create
applications that are capable of receiving requests over the internet,
turning those applications into servers. They generally come in one
of two scales, as Micro-Frameworks or regular Web Frameworks.
Microframeworks
Micro frameworks are a framework in the idea that they
typically have a lifecycle that a developer builds on top of,
but leaves some decisions and implementations to the
developer.
Microframeworks
PHP Ruby
Phalcon Sinatra
Lumen
Modules and Packages
Microframeworks tend to be as small as possible by design. But there are still
some common problems that developers have solved, that other developers do
not want to create custom solutions for. Packages are common solutions that
are bundled up and made available to other developers.
Web Frameworks
Web Frameworks were the major player in creating more modern web
experiences. They handled interactivity and customized experiences
before JavaScript matured and made the web as we know it today. Web
Frameworks like C#’s .NET and Java’s Spring still remain an incredibly
popular option even today.
Web Frameworks commonly solve:
03 and Sanitation
Makes sure our data is
clean!
04 Engines
The Back End
framework renders
“intelligent” HTML.
Web Frameworks
PHP Ruby C#
Laravel Ruby on Rails .NET
Symfony
Template Engines
Template Engines are a Web Frameworks way of rendering HTML.
Originally, the Client Logic layer was much “thinner”, in that the logic of an
application was housed primarily in the Server. Templates created hooks
for interaction and data to flow between the front end and the back end.
Each framework has their own preferred Template Engine.
Chapter
09
Databases
SQL - Relational Databases
Data that is organized into Rows and Columns on a Table.
The entries in the table can have relationships to other
tables and the developer can choose to structure ways to
“query” or group that data.
In SQL, Data is in Tables!
Dog Table
3 Jeffery Boxer 10
In SQL, Data is in Tables!
Dog Table Mood Table
Mood ID Mood Name
ID Name Breed Age
Id
French 1 Happy
1 Baxter 4 2
Bulldog
2 Sleepy
Shiba
2 Ori 2 3
Inu 3 Playful
3 Jeffery Boxer 10 1
French
1 Baxter 4 2 Sleepy
Bulldog
Relational Database Example - PostgreSQL
PostgreSQL, known as “Postgres” is a free and open-source
relational database management system that emphasizes
extensibility and SQL compliance.
NoSQL - Document Databases
Data is “schemaless” and organized into “JSON-like” objects.
Instead of defined rows of needed information for an entry,
entries can be more free-form. Entries can contain different
information from other entries in the ‘collection’.
Document Database Example - MongoDB
MongoDB is a source-available cross-platform
document-orientated database program. Classified as a
NoSQL database program, MongoDB uses JSON-like
documents with optional schemas.
In-Memory Databases
Databases that store information in Computer Memory,
rather than on a Disk or Solid State Drive. Makes the data
extremely quick to access, but the data is usually not
persistent between sessions.
In-memory Database Example - Redis
Redis is an in-memory data structure store, used as a
distributed, in-memory key-value database, cache and
message broker, with optional durability.
Chapter
10
Developer Tools
Code Editor
A Code Editor is an application that is used by
programmers to develop applications. More than a simple
text-editor, a code editor is optimized for programming
languages rather than spoken languages.
Code Editor Example - Visual Studio Code
Visual Studio Code or VSC is a popular code editor used by many web
developers. Created by Microsoft, it is popular since it includes not
only support for debugging and a host of other features, but it is also
upgradable through an integrated marketplace.
IDEs
An Integrated Development Environment is an
application that facilitates software development
for programmers. Usually includes a code editor,
build tools, and debugger.
IDE Example - IntelliJ Idea
IntelliJ Idea is an IDE for specifically the
Java Programming language. It is developed
by Jetbrains and streamlines the process of
creating Java applications.
Console
A low-level command line interface included in Operating Systems
that allow users to execute more discrete tasks than a regular
computer user. Programmers use the console regularly for a wide
range of software development related tasks.
Package Managers
Package managers are often language or framework
specific tools that manage the retrieval and organization of
supporting code needed by developers that are created by
other developers.
Build Automation
Build Automation tools are supporting tools that can
execute a number of different tasks for developers
creating application. Examples of tasks that could be
completed are code minification and code transpiling.
ORMs
The common programmer version of Object Relational
Mappers (ORMs) is a library that allows you to
programmatically change data in a database using the
programming language rather than the query language.
Postman
Postman is an application used for testings APIs. It is a Client application
that tests HTTP requests using a graphical interface. Great for Back End
developers who want to test their APIs without building a Front End, or
looking for something more than a console.
Chapter
11
Developer Concepts
Software Design Patterns
Software design patterns are a general, reusable solution
to common problems that need to be solved in
programming. They are abstract ideas that are
programming language agnostic.
Software Testing
Software Testing is the process of evaluating and verifying that a
software or application does what it is supposed to do. This is
often done with supporting technologies and test-specific code
that can be executed as the application is developed.
SOLID Principles
SOLID is a mnemonic acronym for five design
principles intended to make software designs more
understandable, flexible, and maintainable.
SDLC
The Software Development Life Cycle (SDLC) is the process
the software industry uses to create software. It typically
includes phases of development such as planning,
creating, testing, and deploying applications.
SPAs
Single Page Architecture (SPAs) is a web application style that is
common with the advent of React and Angular. Instead of using an
older method of having the Server serve entirely new webpages as a
user navigates a site, the Client controls what is shown on the screen.
Algorithms
An Algorithm is a series of programmed instructions.
Typically, algorithms are executed to perform actions like
collect data or interactions, transform data, and produce
data or visual outputs.
Code Standards
Code Standards are a set of guidelines for a given
programming language that recommend programming
style, practices, and methods for each aspect of a program
written in that language.
12 Factor Application
A methodology for the delivery of Web
Applications. It can be applied to applications
written in any language and that use any
combination of services.
Chapter
12
Cloud Platforms
How Applications Run
Code creates Applications.
Applications run in Runtime Environments.
Runtime Environments run on Operating Systems.
Operating Systems run on Hardware.
How our Application actually runs!
(An Example of a Client Application Running)
13
DevOps
DevOps (Development Operations)
DevOps is a set of practices that combines software development
and IT (Information Technology) operations. It aims to shorten the
systems development lifecycle and provide continuous delivery
of high software quality.
I.T.
Development DevOps (Operations)
DevOps Goals
Release new code faster!
More responsive to business needs!
Better quality and uptime!
Continuous Integration (CI)
The automated building and testing of an application on each new
commit. It is the practice of merging all developers’ code to a
composite of that code, several times a day.
Tested along the way