Top Banner
High level overview of concepts Lemİ Orhan Ergİn Principal software Engineer @ Sony guide for non-developers Fundamentals of web development
42

Fundamentals of Web Development For Non-Developers

Oct 19, 2014

Download

Education

This is the 2nd material of my technical training about "Fundamentals of Web Development" to non-developers, especially to business people and business analysts. This presentation covers some advanced topics that I did not cover in my previous "Fundamentals of Web" training. Even though most of the information I mention verbally in the training, the slides could help the ones who are not very familiar with web and web applications.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Fundamentals of Web Development For Non-Developers

High level overview of concepts

Lemİ Orhan ErgİnPrincipal software Engineer Sony

guide for non-developers

Fundamentals of web development

The aim of this training is to let youbull Know some advanced concepts of web and web developmentbull Understand how people develop web based softwarebull Understand the technical discussions betterbull And answer your questions

For introductory information about web concepts please check the slides of ldquoFundamentals of Web for Non-Developersrdquo

agenda

bullWeb Development ConceptsWeb Applications Web Services Url Rewriting DevelopmentDeployment

Web Applicationsand the evolution of web sites to web applications

Static web pages ruled the world We loved them and

let DotCom bubble blow

Evolution of web

Static web pages

Interactive web sites let the users communicate with

the sites by entering content

Evolution of web

Interactive web sites

Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size

Reactive web sites

$amp$()

Evolution of web

Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc

bullPresentation OrientedbullService Oriented

bullClient SidebullServer Side

There exists similar but two types of defining web application types

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 2: Fundamentals of Web Development For Non-Developers

The aim of this training is to let youbull Know some advanced concepts of web and web developmentbull Understand how people develop web based softwarebull Understand the technical discussions betterbull And answer your questions

For introductory information about web concepts please check the slides of ldquoFundamentals of Web for Non-Developersrdquo

agenda

bullWeb Development ConceptsWeb Applications Web Services Url Rewriting DevelopmentDeployment

Web Applicationsand the evolution of web sites to web applications

Static web pages ruled the world We loved them and

let DotCom bubble blow

Evolution of web

Static web pages

Interactive web sites let the users communicate with

the sites by entering content

Evolution of web

Interactive web sites

Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size

Reactive web sites

$amp$()

Evolution of web

Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc

bullPresentation OrientedbullService Oriented

bullClient SidebullServer Side

There exists similar but two types of defining web application types

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 3: Fundamentals of Web Development For Non-Developers

agenda

bullWeb Development ConceptsWeb Applications Web Services Url Rewriting DevelopmentDeployment

Web Applicationsand the evolution of web sites to web applications

Static web pages ruled the world We loved them and

let DotCom bubble blow

Evolution of web

Static web pages

Interactive web sites let the users communicate with

the sites by entering content

Evolution of web

Interactive web sites

Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size

Reactive web sites

$amp$()

Evolution of web

Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc

bullPresentation OrientedbullService Oriented

bullClient SidebullServer Side

There exists similar but two types of defining web application types

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 4: Fundamentals of Web Development For Non-Developers

Web Applicationsand the evolution of web sites to web applications

Static web pages ruled the world We loved them and

let DotCom bubble blow

Evolution of web

Static web pages

Interactive web sites let the users communicate with

the sites by entering content

Evolution of web

Interactive web sites

Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size

Reactive web sites

$amp$()

Evolution of web

Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc

bullPresentation OrientedbullService Oriented

bullClient SidebullServer Side

There exists similar but two types of defining web application types

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 5: Fundamentals of Web Development For Non-Developers

Static web pages ruled the world We loved them and

let DotCom bubble blow

Evolution of web

Static web pages

Interactive web sites let the users communicate with

the sites by entering content

Evolution of web

Interactive web sites

Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size

Reactive web sites

$amp$()

Evolution of web

Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc

bullPresentation OrientedbullService Oriented

bullClient SidebullServer Side

There exists similar but two types of defining web application types

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 6: Fundamentals of Web Development For Non-Developers

Interactive web sites let the users communicate with

the sites by entering content

Evolution of web

Interactive web sites

Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size

Reactive web sites

$amp$()

Evolution of web

Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc

bullPresentation OrientedbullService Oriented

bullClient SidebullServer Side

There exists similar but two types of defining web application types

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 7: Fundamentals of Web Development For Non-Developers

Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size

Reactive web sites

$amp$()

Evolution of web

Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc

bullPresentation OrientedbullService Oriented

bullClient SidebullServer Side

There exists similar but two types of defining web application types

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 8: Fundamentals of Web Development For Non-Developers

Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc

bullPresentation OrientedbullService Oriented

bullClient SidebullServer Side

There exists similar but two types of defining web application types

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 9: Fundamentals of Web Development For Non-Developers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

For web pages content is visualized by images styles and scripts

Data Sources

Accepts all the requests and user inputs

Content is prepared by running some business logic All logic are coded by programming languages

Knows how to access data from data sources

Databases files remote data services other components could be your datasource

Web APplications

Requests contain a uri headers and a message body

Responses are the content to be rendered by browsers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 10: Fundamentals of Web Development For Non-Developers

Controller Business Data Access

Presentation

request

Response

httpwwwsonycouk

Data Sources

Web APplications

Designers UX teams Front-end developers prepare the

presentation of web applications

Developers code and develop software

Business Analysts gather requirements

and define open points

Testers check if the requirements are developed as business requests

Customers check if what they requested is implemented properly

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 11: Fundamentals of Web Development For Non-Developers

Web Servicesor simply saying the web components serving data to the requesters

Web ServicesRESTful Web Services

Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 12: Fundamentals of Web Development For Non-Developers

web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs

1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations

2 Arbitrary Web services in which the service may expose an arbitrary set of operations

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 13: Fundamentals of Web Development For Non-Developers

To design a website you need to know about HTTP XHTML and URIs

A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product

data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product

web services

XHTML could be defined as HTML in valid XML structure

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 14: Fundamentals of Web Development For Non-Developers

To design a web application you need to know about HTTP XHTML and URIs

web services

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 15: Fundamentals of Web Development For Non-Developers

To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-

Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer

What

web services

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 16: Fundamentals of Web Development For Non-Developers

WEBIt is most successful distributed

platform in the world

its simple enough for average humans to understand

Why not using HTTP and URIsfor web services

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 17: Fundamentals of Web Development For Non-Developers

RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web

Client-ServerStateless

CacheableLayered System

Uniform Interface

Services and applications conforming these constraints are ldquoRESTfulrdquo

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 18: Fundamentals of Web Development For Non-Developers

Restful web services

GET product1212

94

3

7 6

POST product4 with ldquodatardquo

data

Create

datad

PUT product3 with ldquodatardquo Update

data

DELETE product7 Delete

Retrieve

RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 19: Fundamentals of Web Development For Non-Developers

soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 20: Fundamentals of Web Development For Non-Developers

Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 21: Fundamentals of Web Development For Non-Developers

Jeff Bezos

1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the

ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day

Founder and CEO of Amazon

Jeff Bezos sent an email to his colleagues having these words

httpsplusgooglecom112678702228711889851postseVeouesvaVX

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 22: Fundamentals of Web Development For Non-Developers

URL RewritingWhat you call is not what you really call

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 23: Fundamentals of Web Development For Non-Developers

URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation

URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 24: Fundamentals of Web Development For Non-Developers

URL rewritingUser Web Server Application Server

is called by the user Web Server gets the request runs ReWrite Rules and convert

the url into a different one

productsminiflow-gutter-brown11577676

diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server

Request is processed and a response is generated and sent

is the url that the user sees the response Even though URL has changed internally

the user is not aware of it

productsminiflow-gutter-brown11577676

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 25: Fundamentals of Web Development For Non-Developers

How do developers develop software

The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may

encounter different styles in other companies as well

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 26: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

At the very beginning developers develop software by their own No

collaboration That might be fine for some circumstances but it is

unacceptable in an enterprise

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 27: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

We build cross functional teams that the members collaborate

and develop as teams

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 28: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

Developer Developer Developer

LOCAL

Developer

ContinousIntegration

Repository Manager

Developers

Developers push code to a central version system That

helps developers work on same code at the same time

ContinuousDelivery

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 29: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Automated tests are written by developers Continuous integration

server builds all tests to get immediate feedback Whenever a test

fails developers get notified by notification mails or messages

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 30: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including

3rd party packages are managed by the repository manager

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 31: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Now itrsquos time to deploy our code to servers and make it run You could have several

enterprise environments to deploy and run software for special purposes

Your code is in repository manager as a package if packages are deployed as in Java based applications

Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 32: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers develop software run and test in their local machines

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 33: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Developers test their software in a separate environment before

sending to Quality Assurance team

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 34: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing

different features

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 35: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to

production environment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 36: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Only super users can deploy to production Production environment

is monitored continuously

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 37: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Too much manual effort for deployment That slows down the

whole testing and release process

Letrsquos automate deployments

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 38: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration

servers do the deployment

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 39: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

Super User

DEV TEST amp QA STAGING PROD

VersionControlSystem

ContinuousDelivery

Developer Developer Developer

LOCAL

Developer

ContinuousIntegration

Repository Manager

Developers

It is also possible to deploy code directly from version control system to servers

For instance whenever developers push a code to version control system the code

could be deployed to development servers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 40: Fundamentals of Web Development For Non-Developers

Notification Services (email messaging)

DevOps

VersionControlSystem

ContinuousDelivery

DevOps DevOps DevOps

LOCAL

DevOps

ContinuousIntegration

Repository Manager

Developers

You dont need servers to maintainyou need just a cloud DevOps are the

ones who manages both infrastructural and development requirements

VersionControlSystem

This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution

has its own way of deploying software

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 41: Fundamentals of Web Development For Non-Developers

References

RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services

httpwwwibmcomdeveloperworkswebserviceslibraryws-restful

Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services

Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom

Page 42: Fundamentals of Web Development For Non-Developers

Lemİ orhan ergİnlemiorhanagilistanbulcom

lemiorhan

lemiorhan

agilistanbulcom

lemiorhan

LINKE

DIN

TWITT

ERSL

IDES

HARE

BLOG

GER

Principal Software Engineer SonyFounder amp Author agilistanbulcom

flyingtomooncom